From d15c06a4de8e3982558525baaaf5027bf305b064 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Sat, 22 May 2021 18:53:59 -0400 Subject: [PATCH 01/42] new resources for jupyter --- .../06-jupyter-notebook.markdown | 7 +++++++ content/pages/05-deployment/38-serverless.markdown | 6 ++++++ content/pages/10-working/00-gpt-3.markdown | 7 ++++++- content/pages/meta/00-change-log.markdown | 4 ++++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/content/pages/02-development-environments/06-jupyter-notebook.markdown b/content/pages/02-development-environments/06-jupyter-notebook.markdown index 5b2b44a06..58c9c32b6 100644 --- a/content/pages/02-development-environments/06-jupyter-notebook.markdown +++ b/content/pages/02-development-environments/06-jupyter-notebook.markdown @@ -146,6 +146,13 @@ like advanced interactive visualizations. code that is suitable for [deployment](/deployment.html) to a production environment. +* [How to use ipywidgets to make your Jupyter notebook interactive](https://www.wrighters.io/use-ipywidgets-with-jupyter-notebooks/) + is a tutorial on how to use the + [ipywidgets](https://ipywidgets.readthedocs.io/en/latest/) library + to make Jupyter Notebooks respond to users' input and go beyond + simply presenting data into having users be able to do some additional + analysis themselves. + * [28 Jupyter Notebook tips, tricks and shortcuts](https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/) explains many of the lesser-known keyboard shortcuts and mechanisms to output settings. diff --git a/content/pages/05-deployment/38-serverless.markdown b/content/pages/05-deployment/38-serverless.markdown index 306caa320..ad05af5f1 100644 --- a/content/pages/05-deployment/38-serverless.markdown +++ b/content/pages/05-deployment/38-serverless.markdown @@ -101,6 +101,12 @@ iterations so there are many ideas and good practices yet to be discovered. These resources are the first attempts at figuring out how to structure and operate serverless applications. +* [What's Serverless?](https://technically.substack.com/p/whats-serverless) + is an accessible "first read" for both developers and non-technical + audiences alike. It breaks down the differences between what most + developers consider serverless and infrastructure-as-a-service (IaaS) + offerings. + * [Serverless software](https://talkpython.fm/episodes/show/118/serverless-software) covers a range of topics under serverless and how deployments have changed as new options such as [PaaS](/platform-as-a-service.html) diff --git a/content/pages/10-working/00-gpt-3.markdown b/content/pages/10-working/00-gpt-3.markdown index bb50342a2..04e1726a5 100644 --- a/content/pages/10-working/00-gpt-3.markdown +++ b/content/pages/10-working/00-gpt-3.markdown @@ -120,6 +120,10 @@ is trained. researchers on its usage, and some initial resources to get a better understanding of what this model is capable of performing. +* [What Is GPT-3: How It Works and Why You Should Care](https://www.twilio.com/blog/what-is-gpt-3) + presents a high-level accessible overview of GPT-3, how it compares + to other language models, and resources to learn more. + * [How GPT3 Works - Visualizations and Animations](https://jalammar.github.io/how-gpt3-works-visualizations-animations/) contains some wonderful animated visuals to show how the model is trained and what happens in various scenarios such as text output @@ -139,7 +143,6 @@ is trained. with its strengths and weaknesses. - ## GPT-3 tutorials * [Building a Chatbot with OpenAI's GPT-3 engine, Twilio SMS and Python](https://www.twilio.com/blog/openai-gpt-3-chatbot-python-twilio-sms) is a step-by-step tutorial for using GPT-3 as a smart backend @@ -164,3 +167,5 @@ is trained. * [Control a Spooky Ghost Writer for Halloween with OpenAI's GPT-3 Engine, Python, and Twilio WhatsApp API](https://www.twilio.com/blog/ghost-writer-spooky-openai-gpt3-python-whatsapp) * [Generating Lyrics in the Style of your Favorite Artist with Python, OpenAI's GPT-3 and Twilio SMS](https://www.twilio.com/blog/generating-lyrics-in-the-style-of-your-favorite-artist-with-python-openai-s-gpt-3-and-twilio-sms) * [Automated Yugioh Deckbuilding in Python with OpenAI's GPT-3 and Twilio SMS](https://www.twilio.com/blog/building-computer-generated-yugioh-decks-in-python-with-openai-s-gpt-3-and-twilio-sms) + * [Build a Telephone Chatbot with GPT-3 and Twilio Autopilot](https://www.twilio.com/blog/build-telephone-chatbot-gpt3-twilio-autopilot) + diff --git a/content/pages/meta/00-change-log.markdown b/content/pages/meta/00-change-log.markdown index 8ad49d56e..9f52bf150 100644 --- a/content/pages/meta/00-change-log.markdown +++ b/content/pages/meta/00-change-log.markdown @@ -14,6 +14,10 @@ view commit-level changes via the on GitHub. ## 2021 +### May +* New resources on [GPT-3](/gpt-3.html), [Jupyter Notebook](/jupyter-notebook.html) + and [serverless](/serverless.html) pages. + ### April * Published new post on [How to Monitor Python Functions on AWS Lambda with Sentry](/blog/monitor-python-functions-aws-lambda-sentry.html). * New [SQLite](/sqlite.html) resource. From 5187a35a2faa19b03639fef4a79b5c786271ad85 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Tue, 1 Jun 2021 20:21:01 -0400 Subject: [PATCH 02/42] fixing broken links --- content/pages/meta/00-change-log.markdown | 4 ++++ content/posts/190626-dev-led-sales-startups.markdown | 4 ++-- .../posts/200630-report-errors-flask-web-apps-sentry.markdown | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/content/pages/meta/00-change-log.markdown b/content/pages/meta/00-change-log.markdown index 9f52bf150..f73ac97fc 100644 --- a/content/pages/meta/00-change-log.markdown +++ b/content/pages/meta/00-change-log.markdown @@ -14,6 +14,10 @@ view commit-level changes via the on GitHub. ## 2021 +### June +* Fix broken links across the site. It's a real shame people and companies don't use + 301 redirects more often rather than just breaking their URL structures. + ### May * New resources on [GPT-3](/gpt-3.html), [Jupyter Notebook](/jupyter-notebook.html) and [serverless](/serverless.html) pages. diff --git a/content/posts/190626-dev-led-sales-startups.markdown b/content/posts/190626-dev-led-sales-startups.markdown index 55e4ec431..ba8066e9e 100644 --- a/content/posts/190626-dev-led-sales-startups.markdown +++ b/content/posts/190626-dev-led-sales-startups.markdown @@ -456,9 +456,9 @@ tactics.

Conferences split into a couple of categories: community-run and vendor-run. For example, -WWDC is Apple's vendor-run +WWDC is Apple's vendor-run developer conference. They run the show and control the messaging. -PyCon US is the community-run +PyCon US is the community-run Python developer conference. There are a ton of vendors there as sponsors but no one company controls what happens at the conference.

diff --git a/content/posts/200630-report-errors-flask-web-apps-sentry.markdown b/content/posts/200630-report-errors-flask-web-apps-sentry.markdown index e55c14c5c..2e9ec9684 100644 --- a/content/posts/200630-report-errors-flask-web-apps-sentry.markdown +++ b/content/posts/200630-report-errors-flask-web-apps-sentry.markdown @@ -260,5 +260,5 @@ or [@mattmakai](https://twitter.com/mattmakai). I am also on GitHub with the username [mattmakai](https://github.com/mattmakai). If you see an issue or error in this tutorial, please -[fork the source repository on GitHub](https://github.com/mattmakai/fullstackpython/blob/master/content/posts/200630-report-errors-flask-web-apps-sentry.markdown) +[fork the source repository on GitHub](https://github.com/mattmakai/fullstackpython.com/blob/master/content/posts/200630-report-errors-flask-web-apps-sentry.markdown) and submit a pull request with the fix. From 048ed83e5c355650223ad9ce11da5ade10b30190 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Wed, 2 Jun 2021 09:54:05 -0400 Subject: [PATCH 03/42] fixing broken link rot --- .../01-introduction/01-learning-programming.markdown | 9 --------- content/pages/01-introduction/04-python-2-or-3.markdown | 2 +- .../pages/01-introduction/09-best-python-videos.markdown | 2 +- 3 files changed, 2 insertions(+), 11 deletions(-) diff --git a/content/pages/01-introduction/01-learning-programming.markdown b/content/pages/01-introduction/01-learning-programming.markdown index 217546782..83a5ac56c 100644 --- a/content/pages/01-introduction/01-learning-programming.markdown +++ b/content/pages/01-introduction/01-learning-programming.markdown @@ -125,11 +125,6 @@ repositories and sites with practice problems and solutions: * [TeachCraft](https://teachcraft.net/) combines Minecraft with Python to learn coding. -* [500 Data Structures and Algorithms practice problems and their solutions](https://techiedelight.quora.com/500-Data-Structures-and-Algorithms-practice-problems-and-their-solutions) - covers a large swath of the computer science space. It is not important - to know all of these algorithms and data structures but experience with - many of them will be greatly beneficial in becoming a better developer. - ### First-hand advice These articles are written by programmers who explain how they learned to @@ -170,10 +165,6 @@ your teaching experience: is an awesome resource that explains how you can use simple but fun drawings to teach otherwise difficult technical concepts to students. -* [Teaching programming to working professionals](http://pgbovine.net/PG-Podcast-21-Trey-Hunner.htm) - is a video podcast with [Trey Hunter](https://twitter.com/treyhunner) - about his experience teaching Python to experienced professionals. - * [Teach Yourself Computer Science](https://teachyourselfcs.com/) is intended as a self-teaching tool with many resources that are classic computer science textbooks. There are also nice explanations for why diff --git a/content/pages/01-introduction/04-python-2-or-3.markdown b/content/pages/01-introduction/04-python-2-or-3.markdown index eaf166982..a362e7b49 100644 --- a/content/pages/01-introduction/04-python-2-or-3.markdown +++ b/content/pages/01-introduction/04-python-2-or-3.markdown @@ -78,7 +78,7 @@ gone through the process and have advice for making it less painful. implementations. There is also a [quick reference for writting code with Python 2 and 3 compatibility](https://wiki.python.org/moin/PortingToPy3k/BilingualQuickRef). -* [Upgrading to Python 3 with Zero Downtime](https://tech.yplanapp.com/2016/08/24/upgrading-to-python-3-with-zero-downtime/) +* [Upgrading to Python 3 with Zero Downtime](https://adamj.eu/tech/2016/08/24/upgrading-yplan-to-python-3-with-zero-downtime/) supplies advice on transitioning a large existing Python 2 web application to Python 3. Their process involved upgrading dependencies, testing and deploying the new version before going back to clean up unnecessary code diff --git a/content/pages/01-introduction/09-best-python-videos.markdown b/content/pages/01-introduction/09-best-python-videos.markdown index 85000438e..14be9bccd 100644 --- a/content/pages/01-introduction/09-best-python-videos.markdown +++ b/content/pages/01-introduction/09-best-python-videos.markdown @@ -163,7 +163,7 @@ like [PyCon US](https://us.pycon.org/) and Python language. * PyCon US videos from - [2020](https://www.youtube.com/c/PyCon2020/videos), + [2020](https://www.youtube.com/playlist?list=PL2Uw4_HvXqvbpFquYIE57BEAqkQWk-iFg), [2019](https://www.youtube.com/channel/UCxs2IIVXaEHHA4BtTiWZ2mQ/videos), [2018](https://www.youtube.com/channel/UCsX05-2sVSH7Nx3zuk3NYuQ/videos), [2017](https://www.youtube.com/channel/UCrJhliKNQ8g0qoE_zvL8eVg/videos), From a0fec6273e09ba322e8b36ca67c572f581851275 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Wed, 2 Jun 2021 12:03:33 -0400 Subject: [PATCH 04/42] removing 404 resources --- .../02-python-programming-language.markdown | 4 ---- content/pages/01-introduction/03-why-use-python.markdown | 7 ------- 2 files changed, 11 deletions(-) diff --git a/content/pages/01-introduction/02-python-programming-language.markdown b/content/pages/01-introduction/02-python-programming-language.markdown index 6cc9be260..dc605bc74 100644 --- a/content/pages/01-introduction/02-python-programming-language.markdown +++ b/content/pages/01-introduction/02-python-programming-language.markdown @@ -164,10 +164,6 @@ the very beginner topics. covers what the code for list comprehensions looks like and gives some example code to show how they work. -* [An Introduction to Python Lists](http://effbot.org/zone/python-list.htm) - is a solid overview of Python lists in general and tangentially covers - list comprehensions. - ### Python generator resources * This blog post entitled diff --git a/content/pages/01-introduction/03-why-use-python.markdown b/content/pages/01-introduction/03-why-use-python.markdown index 505585cf3..8c036951b 100644 --- a/content/pages/01-introduction/03-why-use-python.markdown +++ b/content/pages/01-introduction/03-why-use-python.markdown @@ -133,13 +133,6 @@ language. system versus statically typed languages, be sure to [read this thorough explanation of the topic](http://blogs.perl.org/users/ovid/2010/08/what-to-know-before-debating-type-systems.html). -* [Why I swapped C#.NET for Python as my default language and platform (and won’t be going back)](https://medium.com/@anthonypjshaw/why-i-swapped-c-net-for-python-as-my-default-language-and-platform-and-wont-be-going-back-e0063a25e491) - provides a viewpoint from someone who is not a professional developer but - uses coding to hack out some projects. He found Microsoft's .NET ecosystem - lacking when it came to satisfying his needs and Python filled the gap for - him with its wide array of open source code libraries, package management - and ability to work well on platforms other than Windows. - * [Python, Machine Learning, and Language Wars](http://sebastianraschka.com/blog/2015/why-python.html) compares Python with R, MATLAB and Julia for data science work. While Python is great for [deployment automation](/deployment.html) and From 7d07a8c0976b869b98c91d96ef2faae20bb34238 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Thu, 3 Jun 2021 11:28:30 -0400 Subject: [PATCH 05/42] removing many more 404 links --- .../02-python-programming-language.markdown | 3 --- .../01-introduction/10-best-python-podcasts.markdown | 8 ++++---- .../00-development-environments.markdown | 6 ------ content/pages/02-development-environments/02-vim.markdown | 5 ----- .../pages/02-development-environments/05-pycharm.markdown | 4 ---- .../02-development-environments/08-bash-shell.markdown | 2 +- .../pages/02-development-environments/12-tmux.markdown | 2 -- .../15-application-dependencies.markdown | 6 ------ 8 files changed, 5 insertions(+), 31 deletions(-) diff --git a/content/pages/01-introduction/02-python-programming-language.markdown b/content/pages/01-introduction/02-python-programming-language.markdown index dc605bc74..a3b046bb1 100644 --- a/content/pages/01-introduction/02-python-programming-language.markdown +++ b/content/pages/01-introduction/02-python-programming-language.markdown @@ -79,9 +79,6 @@ Dictionary comprehension: ### General Python language resources -* The [online Python tutor](http://www.pythontutor.com/) visually walks - through code and shows how it executes on the Python interpreter. - * [Python Module of the Week](http://pymotw.com/2/index.html) is a tour through the Python standard library. diff --git a/content/pages/01-introduction/10-best-python-podcasts.markdown b/content/pages/01-introduction/10-best-python-podcasts.markdown index f0181a269..a2c528fee 100644 --- a/content/pages/01-introduction/10-best-python-podcasts.markdown +++ b/content/pages/01-introduction/10-best-python-podcasts.markdown @@ -42,16 +42,16 @@ listen and learn. [web application development](/web-development.html) in Python using the [Django web framework](/django.html). +* [The Real Python Podcast](https://realpython.com/podcasts/rpp/) is a weekly + podcast with interviews, coding tips, and conversation with guests from the + Python community. + * [Teaching Python](https://www.teachingpython.fm/) is a podcast by two teachers about their adventures teaching middle school computer science, problem solving, handling failure, frustration, and success with teaching Python programming. -* Professor Philip Guo has a video podcast called - [PG Podcast](https://podcasts.apple.com/us/podcast/philip-guo-podcasts-pgbovine-net/id1276072242), - which typically covers Python subjects. -* [The Real Python Podcast](https://realpython.com/podcasts/rpp/) is a weekly podcast with interviews, coding tips, and conversation with guests from the Python community. ## Favorite podcast episodes Here are a list of my favorite episodes from various Python podcasts before diff --git a/content/pages/02-development-environments/00-development-environments.markdown b/content/pages/02-development-environments/00-development-environments.markdown index cb27c7ee4..4b7dc8b94 100644 --- a/content/pages/02-development-environments/00-development-environments.markdown +++ b/content/pages/02-development-environments/00-development-environments.markdown @@ -121,12 +121,6 @@ configuration as a starting point and customize it from there. [which version of Python to use](/python-2-or-3.html) and adding [code metrics](/code-metrics.html) libraries for checking syntax. -* [Three Ways to Install Python on your Windows Computer](http://blog.yhat.com/posts/installing-python-on-windows.html) - provides multiple avenues for Windows users to get Python on their machine - before setting up the rest of their development environment. Unlike - macOS and Linux, the Windows [operating system](/operating-systems.html) - does not include Python with its default installation. - * [PyCharm: The Good Parts](http://nafiulis.me/pycharm-the-good-parts-i.html) shows you how to be more efficient and productive with that IDE if it's your choice for writing Python code. diff --git a/content/pages/02-development-environments/02-vim.markdown b/content/pages/02-development-environments/02-vim.markdown index bb3895f79..10acf60ef 100644 --- a/content/pages/02-development-environments/02-vim.markdown +++ b/content/pages/02-development-environments/02-vim.markdown @@ -171,11 +171,6 @@ to get started with these tutorials. * [Vim Adventures](http://vim-adventures.com/) is a cute, fun browser-based game that helps you learn Vim commands by playing through the adventure. -* In [Vim: revisited](http://mislav.uniqpath.com/2011/12/vim-revisited/) the - author explains his on-again off-again relationship with using Vim. He then - shows how he configures and uses the editor so it sticks as his primary - code editing tool. - * [Things About Vim I Wish I Knew Earlier](https://blog.petrzemek.net/2016/04/06/things-about-vim-i-wish-i-knew-earlier/) explores the lessons one developer learned while exclusively using Vim for several years. The author includes using relative instead of absolute diff --git a/content/pages/02-development-environments/05-pycharm.markdown b/content/pages/02-development-environments/05-pycharm.markdown index c6810f26c..c464d6e87 100644 --- a/content/pages/02-development-environments/05-pycharm.markdown +++ b/content/pages/02-development-environments/05-pycharm.markdown @@ -29,10 +29,6 @@ Python code. is a solid discussion thread with different developers' perspectives on using PyCharm for coding their applications. -* [How to Get Started with PyCharm and Have a Productive Python IDE](https://pedrokroger.net/getting-started-pycharm-python-ide/) - covers the basics of configuring PyCharm for running code within - virtualenvs, macros, using the console and code completion. - * [Using PyCharm with Pyramid](https://docs.pylonsproject.org/projects/pyramid-cookbook/en/latest/development_tools/pycharm.html) is specific to developing and debugging [with the Pyramid web framework](/pyramid.html). diff --git a/content/pages/02-development-environments/08-bash-shell.markdown b/content/pages/02-development-environments/08-bash-shell.markdown index 7fd89c38e..22c7877bc 100644 --- a/content/pages/02-development-environments/08-bash-shell.markdown +++ b/content/pages/02-development-environments/08-bash-shell.markdown @@ -219,7 +219,7 @@ to try to avoid as you work with the shell or write scripts. their destructive abilities by reading through the descriptions provided by the author. -* [Faster bash startup](https://danpker.com/posts/2020/faster-bash-startup/) +* [Faster bash startup](https://danpker.com/posts/faster-bash-startup/) and [Even faster bash startup](https://work.lisk.in/2020/11/20/even-faster-bash-startup.html) are two great tutorials that will save you a bunch of time if you frequently diff --git a/content/pages/02-development-environments/12-tmux.markdown b/content/pages/02-development-environments/12-tmux.markdown index 1813d8f4f..4b95fba6c 100644 --- a/content/pages/02-development-environments/12-tmux.markdown +++ b/content/pages/02-development-environments/12-tmux.markdown @@ -38,8 +38,6 @@ easier to use many shells at once and attaching to both local and remote * [Using tmux Properly](http://danielallendeutsch.com/blog/16-using-tmux-properly.html) -* [Differences between tmux vs screen](https://wtanaka.com/node/8136) - * [The Power Of tmux Hooks](https://devel.tech/tips/n/tMuXz2lj/the-power-of-tmux-hooks/) * There are a slew of "cheat sheets" for tmux out there, here are a few diff --git a/content/pages/02-development-environments/15-application-dependencies.markdown b/content/pages/02-development-environments/15-application-dependencies.markdown index a01f2eba9..513b62081 100644 --- a/content/pages/02-development-environments/15-application-dependencies.markdown +++ b/content/pages/02-development-environments/15-application-dependencies.markdown @@ -165,12 +165,6 @@ so far to get up to speed on building and releasing your own packages. is an amazing post that takes the reader from simple Python script into a complete Python package. -* [Perils of packaging](https://malramsay.com/post/perils_of_packaging/) - covers several edge cases that come up when trying to put together - pieces like Travis CI, PyPI and conda. The post walks through the errors - and how to get around them until they are smoothed out by updates to the - tools. - * [How to Publish Your Package on PyPI](https://blog.jetbrains.com/pycharm/2017/05/how-to-publish-your-package-on-pypi/) is for developers who have created a code library they would like to share and make installable for other developers. From 37f0867537a98e300e6357378e009eb1ff07be49 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Thu, 3 Jun 2021 12:14:33 -0400 Subject: [PATCH 06/42] fixing more broken links --- .../04-sublime-text.markdown | 4 ---- content/pages/04-web-development/02-django.markdown | 5 ----- .../pages/04-web-development/27-task-queues.markdown | 7 ------- content/pages/04-web-development/28-celery.markdown | 2 +- .../04-web-development/29-rq-redis-queue.markdown | 2 +- .../pages/04-web-development/42-websockets.markdown | 11 +---------- content/pages/04-web-development/46-webhooks.markdown | 2 -- content/pages/04-web-development/53-stripe.markdown | 3 --- .../04-web-development/56-web-app-security.markdown | 7 ------- content/pages/06-devops/00-devops.markdown | 4 ---- 10 files changed, 3 insertions(+), 44 deletions(-) diff --git a/content/pages/02-development-environments/04-sublime-text.markdown b/content/pages/02-development-environments/04-sublime-text.markdown index 841687737..196df3b51 100644 --- a/content/pages/02-development-environments/04-sublime-text.markdown +++ b/content/pages/02-development-environments/04-sublime-text.markdown @@ -68,10 +68,6 @@ links should get your editor customized with linters, is a spectacular tutorial that covers installing Sublime Text and configuring a multitude of helpful Python programming plugins. -* [Sublime Text 3 Heaven](https://www.kennethreitz.org/essays/sublime-text-3-heaven) - is a quick overview of the extensions, packages and bonus toys that - one developer uses for his own Sublime Text development setup. - * [Sublime Tutor](https://sublimetutor.com/) is an interactive in-editor keyboard shortcuts tutorial that plugs into Sublime so you can learn and become more productive as you use the editor. diff --git a/content/pages/04-web-development/02-django.markdown b/content/pages/04-web-development/02-django.markdown index b5a5cea0c..47b59b9e1 100644 --- a/content/pages/04-web-development/02-django.markdown +++ b/content/pages/04-web-development/02-django.markdown @@ -338,11 +338,6 @@ out how to build your own projects. This is a short list of some real-world example applications, and many more can be found on the [Django example projects and code](/django-code-examples.html) page. -* [Browser calls with Django and Twilio](https://www.twilio.com/docs/howto/walkthrough/browser-calls/python/django) - shows how to build a web app with Django and - [Twilio Client](https://www.twilio.com/client) to turn a user's web - browser into a full-fledged phone. Pretty awesome! - * [Openduty](https://github.com/ustream/openduty) is a website status checking and alert system similar to PagerDuty. diff --git a/content/pages/04-web-development/27-task-queues.markdown b/content/pages/04-web-development/27-task-queues.markdown index 073759f6e..10ba31986 100644 --- a/content/pages/04-web-development/27-task-queues.markdown +++ b/content/pages/04-web-development/27-task-queues.markdown @@ -100,13 +100,6 @@ when scaling out a large deployment of distributed task queues. ## Open source examples that use task queues -* Take a look at the code in this open source - [Flask application](https://www.twilio.com/docs/howto/walkthrough/appointment-reminders/python/flask) - and - [this Django application](https://www.twilio.com/docs/howto/walkthrough/appointment-reminders/python/django) - for examples of how to use and deploy Celery with a Redis broker to - send text messages with these frameworks. - * [flask-celery-example](https://github.com/thrisp/flask-celery-example) is a simple Flask application with Celery as a task queue and Redis as the broker. diff --git a/content/pages/04-web-development/28-celery.markdown b/content/pages/04-web-development/28-celery.markdown index 5a614855c..5d8a3c746 100644 --- a/content/pages/04-web-development/28-celery.markdown +++ b/content/pages/04-web-development/28-celery.markdown @@ -7,7 +7,7 @@ sidebartitle: Celery meta: Celery is a task queue for executing work outside a Python web application HTTP request-response cycle. -[Celery](http://www.celeryproject.org/) is a [task queue](/task-queues.html) +[Celery](https://docs.celeryproject.org/) is a [task queue](/task-queues.html) implementation for [Python web applications](/web-development.html) used to asynchronously execute work outside the HTTP request-response cycle. diff --git a/content/pages/04-web-development/29-rq-redis-queue.markdown b/content/pages/04-web-development/29-rq-redis-queue.markdown index d984e121a..b9fe01a39 100644 --- a/content/pages/04-web-development/29-rq-redis-queue.markdown +++ b/content/pages/04-web-development/29-rq-redis-queue.markdown @@ -19,7 +19,7 @@ track of tasks in the queue that need to be executed. ### RQ resources * [Asynchronous Tasks in Python with Redis Queue](https://www.twilio.com/blog/asynchronous-tasks-in-python-with-redis-queue) is a quickstart-style tutorial that shows how to use RQ to fetch data - from the + from the [Mars Rover web API](https://data.nasa.gov/Space-Science/Mars-Rover-Photos-API/929k-jizu) and process URLs for each of the photos taken by NASA's Mars rover. There is also a follow-up post on diff --git a/content/pages/04-web-development/42-websockets.markdown b/content/pages/04-web-development/42-websockets.markdown index fb8293c46..5e1f78d64 100644 --- a/content/pages/04-web-development/42-websockets.markdown +++ b/content/pages/04-web-development/42-websockets.markdown @@ -175,9 +175,7 @@ own project. * The [realtime codenames game](https://github.com/joshporter1/codenames) source code is a full-featured example for using WebSockets via - Flask-SocketIO. There is also a - [multi-part tutorial](https://secdevops.ai/weekend-project-part-1-creating-a-real-time-web-based-application-using-flask-vue-and-socket-b71c73f37df7) - that walks through the code. + Flask-SocketIO. * The [python-websockets-example](https://github.com/mattmakai/python-websockets-example) @@ -192,13 +190,6 @@ own project. Flask web app implementation that allows the audience to interact with WebSockets as I built out the application. -* [Creating a Real-time Web-based Application using Flask, Vue, and Socket.io: part 1](https://secdevops.ai/weekend-project-part-1-creating-a-real-time-web-based-application-using-flask-vue-and-socket-b71c73f37df7), - [part 2](https://secdevops.ai/weekend-project-part-2-turning-flask-into-a-real-time-websocket-server-using-flask-socketio-ab6b45f1d896) - and - [part 3](https://secdevops.ai/weekend-project-part-3-centralizing-state-management-with-vuex-5f4387ebc144) - are a complete front-to-backend WebSockets, Python and JavaScript front - end framework example with open source code. - * [Real-time in Python](http://mrjoes.github.io/2013/06/21/python-realtime.html) provides Python-specific context for how the server push updates were implemented in the past and how Python's tools have evolved to perform diff --git a/content/pages/04-web-development/46-webhooks.markdown b/content/pages/04-web-development/46-webhooks.markdown index 01d76fe43..6307fe02e 100644 --- a/content/pages/04-web-development/46-webhooks.markdown +++ b/content/pages/04-web-development/46-webhooks.markdown @@ -44,8 +44,6 @@ otherwise independent web applications. * [Should you build a webhooks API?](https://brandur.org/webhooks) -* [Webhooks do’s and dont’s: what we learned after integrating +100 APIs](https://restful.io/webhooks-dos-and-dont-s-what-we-learned-after-integrating-100-apis-d567405a3671) - * [Why Are Webhooks Better Than Serverless Extensibility?](https://developer.okta.com/blog/2017/10/11/why-are-webhooks-better-than-serverless-extensibility) * [Webhooks Provide an Efficient Alternative to API Polling](https://thenewstack.io/wonderful-world-webhooks/) diff --git a/content/pages/04-web-development/53-stripe.markdown b/content/pages/04-web-development/53-stripe.markdown index aee4f6f98..82aba71f0 100644 --- a/content/pages/04-web-development/53-stripe.markdown +++ b/content/pages/04-web-development/53-stripe.markdown @@ -23,9 +23,6 @@ for processing payments. the subscription data in the [Django ORM](/django-orm.html) and create a pricing page. -* [Switching from Braintree to Stripe](https://www.deekit.com/braintree-to-stripe/) - covers one development team's experience with moving payment providers. - * [Dirt Cheap Recurring Payments with Stripe and AWS Lambda](http://normal-extensions.com/2017/05/05/simple-recurring/) explains how to use the Stripe API with [AWS Lambda](/aws-lambda.html) to handle recurring payments instead of using a more expensive service diff --git a/content/pages/04-web-development/56-web-app-security.markdown b/content/pages/04-web-development/56-web-app-security.markdown index 2b1ee70f9..6d15da25d 100644 --- a/content/pages/04-web-development/56-web-app-security.markdown +++ b/content/pages/04-web-development/56-web-app-security.markdown @@ -14,8 +14,6 @@ request forgery and usage of public-private keypairs. ### Security tools -* [Bro](http://www.bro.org/) is a network security and traffic monitor. - * [lynis](https://cisofy.com/lynis/) ([source code](https://github.com/CISOfy/lynis)) is a security audit tool that can run as a shell script on a Linux system to find out @@ -132,11 +130,6 @@ resources can also give you a good overview of how HTTPS works. * The [/r/netsec](http://www.reddit.com/r/netsec/) subreddit is one place to go to learn more about network and application security. -* [Hacking Tools Repository](http://gexos.github.io/Hacking-Tools-Repository/) - is a great list of password cracking, scanning, sniffing and other security - penetration testing tools. - - * The EFF has a well written overview on [what makes a good security audit](https://www.eff.org/deeplinks/2014/11/what-makes-good-security-audit). It's broad but contains some of their behind the scenes thinking on important considerations with security audits. diff --git a/content/pages/06-devops/00-devops.markdown b/content/pages/06-devops/00-devops.markdown index c1a95152a..722ca59f1 100644 --- a/content/pages/06-devops/00-devops.markdown +++ b/content/pages/06-devops/00-devops.markdown @@ -88,10 +88,6 @@ teams, culture, processes and tools into software development organizations. your pager goes off, ownership and how startups can be different from large companies with their incident responses. -* [Bing: Continuous Delivery](http://stories.visualstudio.com/bing-continuous-delivery/) - is an impressive visual story that explains the practices for how their - team delivers updates to the search engine. - * [Why are we racing to DevOps?](http://www.cio.com/article/3015237/application-development/why-are-we-racing-to-devops.html) is a very high level summary of the benefits of DevOps to IT organizations. It's not specific to Python and doesn't dive into the details, but it's From 71576f7429439af3fdd4534723d056b8fcf843a8 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Sat, 5 Jun 2021 13:44:13 -0400 Subject: [PATCH 07/42] removing malicious link on a domain that was re-registered --- content/pages/03-data/19-bokeh.markdown | 6 ------ content/pages/04-web-development/04-bottle.markdown | 2 +- content/pages/04-web-development/12-jinja2.markdown | 11 +++++------ content/pages/04-web-development/17-css.markdown | 4 ---- .../50-django-rest-framework-drf.markdown | 4 ---- 5 files changed, 6 insertions(+), 21 deletions(-) diff --git a/content/pages/03-data/19-bokeh.markdown b/content/pages/03-data/19-bokeh.markdown index 668538d90..b215de42d 100644 --- a/content/pages/03-data/19-bokeh.markdown +++ b/content/pages/03-data/19-bokeh.markdown @@ -61,12 +61,6 @@ basic syntax will change as the library's API is not yet stable. an appropriate format then explains the code that uses Bokeh to visualize it. -* [Data is beautiful: Visualizing Roman imperial dynasties](http://machineloveus.com/data-is-beautiful-visualizing-roman-imperial-dynasties/) - provides a walkthrough for creating a gorgeous visualization based on - historical Roman data. The post is about more than just the visual, it also - goes into the ideation, data wrangling and analysis phases that came - before using Bokeh to show the results. - * [Visualizing with Bokeh](https://programminghistorian.org/en/lessons/visualizing-with-bokeh) gives a detailed explanation with the code for number Bokeh visuals you can output while working with a [pandas](/pandas.html) data set. diff --git a/content/pages/04-web-development/04-bottle.markdown b/content/pages/04-web-development/04-bottle.markdown index 1f40db51c..01e543da4 100644 --- a/content/pages/04-web-development/04-bottle.markdown +++ b/content/pages/04-web-development/04-bottle.markdown @@ -29,7 +29,7 @@ Bottle is awesome for a few web development situations: Prototyping simple ideas is often easier with Bottle than a more opinionated web framework like [Django](/django.html) because Django projects start with a significant amount of boilerplate code. The -[Model-View-Template](https://docs.djangoproject.com/en/1.9/faq/general/#django-appears-to-be-a-mvc-framework-but-you-call-the-controller-the-view-and-the-view-the-template-how-come-you-don-t-use-the-standard-names) +[Model-View-Template](https://docs.djangoproject.com/en/stable/intro/tutorial03/) structure for Django apps within projects makes maintaining projects easier, but it can be cumbersome on starter projects where you're just playing with random ideas so you aren't worried about your diff --git a/content/pages/04-web-development/12-jinja2.markdown b/content/pages/04-web-development/12-jinja2.markdown index 23137b27d..5197fc9d8 100644 --- a/content/pages/04-web-development/12-jinja2.markdown +++ b/content/pages/04-web-development/12-jinja2.markdown @@ -8,17 +8,17 @@ meta: Jinja2 is a template engine written in Python for outputting formats such Jinja, also commonly referred to as -"[Jinja2](http://jinja.pocoo.org/docs/dev/)" to specify the newest +"[Jinja2](https://jinja.palletsprojects.com/en/3.0.x/templates/)" to specify the newest release version, is a Python [template engine](/template-engines.html) used to create HTML, XML or other markup formats that are returned to the user via an HTTP response. -Logo for the Jinja template engine project. +Logo for the Jinja template engine project. ## Why is Jinja2 useful? Jinja2 is useful because it has consistent template tag syntax and the project is cleanly extracted as -[an independent open source project](https://github.com/mitsuhiko/jinja2) so +[an independent open source project](https://github.com/pallets/jinja) so it can be used as a dependency by other code libraries.

Jinja2 is an implementation of the template engines concept. Learn more in the web development chapter or view the table of contents for all topics.
@@ -31,9 +31,8 @@ end a developer can code whatever she wants. ## Jinja2 origin and development The first recorded public released of Jinja2 was in -[2008 with 2.0rc1](http://jinja.pocoo.org/docs/dev/changelog/#version-2-0rc1). -Since then the engine has seen numerous updates and remains in active -development. +2008 with 2.0rc1. Since then the engine has seen numerous updates and +remains under active development. Jinja2 engine certainly wasn't the first template engine. In fact, Jinja2's syntax is inspired by Django's built-in template engine, which was released diff --git a/content/pages/04-web-development/17-css.markdown b/content/pages/04-web-development/17-css.markdown index f7d3658b2..332ed565d 100644 --- a/content/pages/04-web-development/17-css.markdown +++ b/content/pages/04-web-development/17-css.markdown @@ -186,10 +186,6 @@ web application's design. talk about tables, because that was the only way to position anything back in the day. -* [30 seconds of CSS](https://30-seconds.github.io/30-seconds-of-css/) - provides short useful code snippets for you to learn from and use for - building your own web applications. - * [CSS: The bad bits](https://www.joeforshaw.com/blog/css-the-bad-bits-and-how-to-avoid-them) examines global scope, implicit percentage styling rules and the z-index which can be difficult to use and require some restraint to ensure they diff --git a/content/pages/04-web-development/50-django-rest-framework-drf.markdown b/content/pages/04-web-development/50-django-rest-framework-drf.markdown index 5824966bc..8e37986e0 100644 --- a/content/pages/04-web-development/50-django-rest-framework-drf.markdown +++ b/content/pages/04-web-development/50-django-rest-framework-drf.markdown @@ -60,10 +60,6 @@ typically abbreviated "DRF", is a Python library for building web * [Optimizing slow Django REST Framework performance](https://ses4j.github.io/2015/11/23/optimizing-slow-django-rest-framework-performance/) -* [TLT: Serializing Authenticated User Data With Django REST Framework](http://gregblogs.com/tlt-serializing-authenticated-user-data-with-django-rest-framework/) - -* [Building an API with Django REST Framework and Class-Based Views](https://codeburst.io/building-an-api-with-django-rest-framework-and-class-based-views-75b369b30396) - * [Simple Nested API Using Django REST Framework](https://blog.apptension.com/2017/09/13/rest-api-using-django-rest-framework/) * [Building APIs with Django and Django Rest Framework](https://books.agiliq.com/projects/django-api-polls-tutorial/en/latest/) From 233fb4d9839ce7eeab56f5b47f5e3684ebe2baf4 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Wed, 9 Jun 2021 07:54:52 -0400 Subject: [PATCH 08/42] fixing a ton of broken links --- content/pages/03-data/00-data.markdown | 5 +++++ .../04-web-development/11-template-engines.markdown | 4 ++++ .../31-static-site-generator.markdown | 8 +------- content/pages/04-web-development/35-testing.markdown | 10 ++-------- .../04-web-development/37-integration-testing.markdown | 3 --- content/pages/04-web-development/41-https.markdown | 4 ---- content/pages/04-web-development/44-web-apis.markdown | 5 ----- content/pages/05-deployment/22-wsgi-servers.markdown | 6 +++--- content/pages/05-deployment/23-gunicorn.markdown | 4 ++++ 9 files changed, 19 insertions(+), 30 deletions(-) diff --git a/content/pages/03-data/00-data.markdown b/content/pages/03-data/00-data.markdown index a2c996e10..493ebd45f 100644 --- a/content/pages/03-data/00-data.markdown +++ b/content/pages/03-data/00-data.markdown @@ -154,6 +154,11 @@ sets. have evolved over the past 20ish years based on his first-hand experience as a leader and member in that community. +* [Automated Data Wrangling](https://catalyst.coop/2021/05/23/automated-data-wrangling/) + covers cleaning, labeling, and automating the bunch of activities + that are typically necessary before analysis and data usage can + begin for a project. + * The [Open Source Data Science Masters](http://datasciencemasters.org/) is a well-crafted free curriculum and set of resources for students who want to learn both the theory and technologies for working with data. diff --git a/content/pages/04-web-development/11-template-engines.markdown b/content/pages/04-web-development/11-template-engines.markdown index f8b7bac06..551a70bfb 100644 --- a/content/pages/04-web-development/11-template-engines.markdown +++ b/content/pages/04-web-development/11-template-engines.markdown @@ -161,6 +161,10 @@ know how they work to aid your debugging. The following resources examine existing template engine design as well as how to build your own engine when that's necessary for your projects. +* [Writing a Jinja-inspired template library in Python](https://notes.eatonphil.com/writing-a-template-library-in-python.html) + walks through how to create your own a simplified version of the + [Jinja](/jinja2.html) template engine as a learning exercise. + * [How a template engine works](https://fengsp.github.io/blog/2016/8/how-a-template-engine-works/) uses the template module in Tornado as an example to step through how a template engine produces output, from parsing the incoming string to diff --git a/content/pages/04-web-development/31-static-site-generator.markdown b/content/pages/04-web-development/31-static-site-generator.markdown index 7b07bc047..d7f3c0983 100644 --- a/content/pages/04-web-development/31-static-site-generator.markdown +++ b/content/pages/04-web-development/31-static-site-generator.markdown @@ -206,12 +206,6 @@ point a domain name to your site as well as provide HTTPS support. These guides walk through various ways of handling the static site deployment. -* [Static site hosting with S3 and Cloudflare](https://wsvincent.com/static-site-hosting-with-s3-and-cloudflare/) - shows how to set up an S3 bucket with Cloudflare in front as a CDN that - serves the content with HTTPS. You should be able to accomplish roughly - the same situation with Amazon Cloudfront, but as a Cloudflare user I - like their service for these static site configurations. - * Google Cloud provides a tutorial on how to use them to [host your static site](https://cloud.google.com/storage/docs/hosting-static-website). Note that you cannot currently use HTTPS on Google Storage servers, which is a @@ -221,7 +215,7 @@ deployment. making static site deployments and redeployments to Amazon Web Services easier. -* [Deploying a Static Blog with Continuous Integration](https://www.loxodrome.io/post/hugo-on-ci/) +* [Deploying a Static Blog with Continuous Integration](https://www.jameslmilner.com/post/hugo-on-ci/) uses a Hugo (a Golang-based static site generator) generated site as an example but the instructions can easily be used to deploy a Python-based static site generator output as well. diff --git a/content/pages/04-web-development/35-testing.markdown b/content/pages/04-web-development/35-testing.markdown index 1a5e2912e..7594935d2 100644 --- a/content/pages/04-web-development/35-testing.markdown +++ b/content/pages/04-web-development/35-testing.markdown @@ -176,10 +176,10 @@ use mocks in your test cases. provides a whole code example based on a blog project that shows how to use `mock` when testing. -* [Python Mocking 101: Fake It Before You Make It](https://blog.fugue.co/2016-02-11-python-mocking-101.html) +* [Python Mocking 101: Fake It Before You Make It](https://www.fugue.co/blog/2016-02-11-python-mocking-101) explains what mocking is and is not, and shows how to use the `patch` function to accomplish it in your project. - [Revisiting Unit Testing and Mocking in Python](https://blog.fugue.co/2017-07-18-revisiting-unit-testing-and-mocking-in-python.html) + [Revisiting Unit Testing and Mocking in Python](https://www.fugue.co/blog/2017-07-18-revisiting-unit-testing-and-mocking-in-python.html) is a follow-up post that expands upon using the `patch` function along with dependency injection. @@ -191,12 +191,6 @@ use mocks in your test cases. examines when mocks are necessary and when they are not as useful so you can avoid them in your test cases. -* [Mocking Redis & Expiration in Python](http://malexandre.fr/2017/10/08/mocking-redis--expiration-in-python/) - is a specific scenario where you would want to test your - [Redis](/redis.html)-dependent code but prefer to mock it rather than - ensure an installation and connection are present whenever you run - your tests. - * [Better tests for Redis integrations with redislite](https://www.obeythetestinggoat.com/better-tests-for-redis-integrations-with-redislite.html) is a great example of how using the right mocking library can clean up existing hacky testing code and make it more straightforward for diff --git a/content/pages/04-web-development/37-integration-testing.markdown b/content/pages/04-web-development/37-integration-testing.markdown index 72d844b82..8594b4492 100644 --- a/content/pages/04-web-development/37-integration-testing.markdown +++ b/content/pages/04-web-development/37-integration-testing.markdown @@ -36,9 +36,6 @@ during development so they can be addressed immediately. gives an example of a system that needs integration tests and shows how context managers can be used to address the problem. -* Pytest has a page on [integration good practices](http://doc.pytest.org/en/latest/goodpractices.html) - that you'll likely want to follow when testing your application. - * [Integration testing, or how to sleep well at night](http://enterprisecraftsmanship.com/2015/07/13/integration-testing-or-how-to-sleep-well-at-nights/) explains what integration tests are and gives an example. The example is coded in Java but still relevant when you're learning about integration diff --git a/content/pages/04-web-development/41-https.markdown b/content/pages/04-web-development/41-https.markdown index ffe55e7c9..3bbb8239a 100644 --- a/content/pages/04-web-development/41-https.markdown +++ b/content/pages/04-web-development/41-https.markdown @@ -64,7 +64,3 @@ client web browser. cover the high-level information on the latest approved version of Transport Security Layer (TLS) 1.3. -* [How https works](https://www.sudhakar.online/programming/2015/08/09/https.html) - is a fun cartoon illustration that demonstrates the basic concepts of - a secure HTTP connection. - diff --git a/content/pages/04-web-development/44-web-apis.markdown b/content/pages/04-web-development/44-web-apis.markdown index a0e1eea19..0981c2743 100644 --- a/content/pages/04-web-development/44-web-apis.markdown +++ b/content/pages/04-web-development/44-web-apis.markdown @@ -91,11 +91,6 @@ on the number's page on Twilio as shown below. provides context for why JSON-based web services are more common today than SOAP which was popular in the early 2000s. -* [API tools for every occasion](https://medium.com/@orliesaurus/api-tools-for-every-occasion-10-api-tools-released-in-2015-i-can-t-live-without-d5947d9ca9c3) - provides a list of 10 tools that are really helpful when working with APIs - that are new in 2015. - - ## APIs learning checklist 1. Learn the API concepts of machine-to-machine communication with JSON and diff --git a/content/pages/05-deployment/22-wsgi-servers.markdown b/content/pages/05-deployment/22-wsgi-servers.markdown index 35174df41..036bdbe54 100644 --- a/content/pages/05-deployment/22-wsgi-servers.markdown +++ b/content/pages/05-deployment/22-wsgi-servers.markdown @@ -177,9 +177,9 @@ The following are WSGI servers based on community recommendations. is a good read to understand basic information about various WSGI server implementations. -* A thorough and informative post for LAMP-stack hosting choices is - presented in the - "[complete single server Django stack tutorial](http://www.apreche.net/complete-single-server-django-stack-tutorial/)." +* [What is WSGI and Why Do You Need Gunicorn and Nginx in Django](https://apirobot.me/posts/what-is-wsgi-and-why-do-you-need-gunicorn-and-nginx-in-django) + explains the breakdown between a [web server](/web-servers.html) + and a WSGI server in an application deployment environment. * The Python community made a long effort to [transition from mod\_python](http://blog.dscpl.com.au/2010/05/modpython-project-soon-to-be-officially.html) diff --git a/content/pages/05-deployment/23-gunicorn.markdown b/content/pages/05-deployment/23-gunicorn.markdown index f7098a1b4..e0c8a7f14 100644 --- a/content/pages/05-deployment/23-gunicorn.markdown +++ b/content/pages/05-deployment/23-gunicorn.markdown @@ -120,6 +120,10 @@ perform the request handling. Each worker is independent of the controller. documentation each contain instructions for deploying the respective frameworks with Gunicorn. +* [Dockerizing Django with Postgres, Gunicorn, and Traefik](https://testdriven.io/blog/django-docker-traefik/) + is a more advanced tutorial with a complete project deployment + that uses Gunicorn within [Docker](/docker.html). + * [Set up Django, Nginx and Gunicorn in a Virtualenv controled by Supervisor](https://gist.github.com/Atem18/4696071) is a GitHub Gist with some great explanations for why we're setting up virtualenv and what to watch out for while you're doing the deployment. From a8ad4f4bcf7f8c101be4b7e6075d01415cdc8d74 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Thu, 10 Jun 2021 06:57:08 -0400 Subject: [PATCH 09/42] fixing more broken links --- .../pages/04-web-development/00-web-development.markdown | 5 ----- content/pages/04-web-development/17-css.markdown | 4 ---- content/pages/04-web-development/32-pelican.markdown | 4 ---- content/pages/04-web-development/43-webrtc.markdown | 5 ----- content/pages/04-web-development/48-api-creation.markdown | 7 ------- 5 files changed, 25 deletions(-) diff --git a/content/pages/04-web-development/00-web-development.markdown b/content/pages/04-web-development/00-web-development.markdown index 29b3fb98b..c23e05a2b 100644 --- a/content/pages/04-web-development/00-web-development.markdown +++ b/content/pages/04-web-development/00-web-development.markdown @@ -100,11 +100,6 @@ world. something obvious you can handle in a few minutes that will improve your site's security, performance or usability. -* [Web application development is different and better](http://radar.oreilly.com/2014/01/web-application-development-is-different-and-better.html) - provides some context for how web development has evolved from writing - static HTML files into the complex JavaScript client-side applications - produced today. - * [The Browser Hacker's Guide to Instantly Loading Everything](https://www.youtube.com/watch?v=7vUs5yOuv-o) is a spectacular technical talk given by Addy Osmani at JSConf EU 2017 that has great bits of developer knowledge for both beginner and diff --git a/content/pages/04-web-development/17-css.markdown b/content/pages/04-web-development/17-css.markdown index 332ed565d..96c1b3ec8 100644 --- a/content/pages/04-web-development/17-css.markdown +++ b/content/pages/04-web-development/17-css.markdown @@ -149,10 +149,6 @@ web application's design. * [Google's Web Fundamentals class](https://developers.google.com/web/fundamentals/) shows how to create responsive designs and performant websites. -* [Tailoring CSS for performance](http://programming.oreilly.com/2014/04/tailoring-css-for-performance.html) - is an interesting read since many developers do not consider the - implications of CSS complexity in browser rendering time. - * [Can I Use...](http://caniuse.com/) is a compatibility table that shows which versions of browsers implement specific CSS features. diff --git a/content/pages/04-web-development/32-pelican.markdown b/content/pages/04-web-development/32-pelican.markdown index 064a3adf9..c1b0c0810 100644 --- a/content/pages/04-web-development/32-pelican.markdown +++ b/content/pages/04-web-development/32-pelican.markdown @@ -76,10 +76,6 @@ to hosting services such as Amazon S3 and GitHub Pages. take in new input markup formats, modify the generator process and add handy features such as a custom table of contents. -* [Pelican Sitemap and Pagination](http://www.vcheng.org/2014/02/22/pelican-sitemap-pagination/) - explains how to generate a `sitemap.xml` file for your static site that - includes all pages instead of just auto-included top-level pages. - * [Getting started with Pelican and GitHub pages](http://www.mattmakai.com/introduction-to-pelican.html) is a tutorial I wrote to use the Full Stack Python source code to create and deploy your first static site. diff --git a/content/pages/04-web-development/43-webrtc.markdown b/content/pages/04-web-development/43-webrtc.markdown index 36cf18799..297c12b9b 100644 --- a/content/pages/04-web-development/43-webrtc.markdown +++ b/content/pages/04-web-development/43-webrtc.markdown @@ -26,11 +26,6 @@ browser) and server (usually a [web server](/web-servers.html)). dependencies. It allows 2 web browsers to exchange audio and video streams by using the `aiohttp` and `python-socketio` modules. -* [A real world guide to WebRTC](https://deepstreamhub.com/tutorials/protocols/webrtc-intro/) - goes through WebRTC fundamentals such as data channels, audio and video, - screen sharing and file transfers with the JavaScript code provided - for each concept. - * The [Introduction to WebRTC video series](https://www.youtube.com/watch?v=ujpIAWmK2Vo) ([part 2](https://www.youtube.com/watch?v=cw2iTgIW-uk) and diff --git a/content/pages/04-web-development/48-api-creation.markdown b/content/pages/04-web-development/48-api-creation.markdown index da38541c2..fb21280d5 100644 --- a/content/pages/04-web-development/48-api-creation.markdown +++ b/content/pages/04-web-development/48-api-creation.markdown @@ -26,9 +26,6 @@ applications through machine-to-machine communication. [own GitHub organization](https://github.com/flask-restful/flask-restful) so engineers from outside the company could be core contributors. -* [Flask API](http://www.flaskapi.org/) is another common library for - exposing APIs from Flask web applications. - * [Sandman](http://www.github.com/jeffknupp/sandman) is a widely used tool to automatically generate a RESTful API service from a legacy database without writing a line of code (though it's easily extensible through code). @@ -154,10 +151,6 @@ equivalent of browser testing in the web application world. will use your API, as well as what the documentation for endpoints and other important pieces should look like. -* [1-to-1 Relationships and Subresources in REST APIs](http://developers.lyst.com/2015/02/20/1-to-1-relationships-and-subresources-in-rest-apis/) - tells the story of design decisions that were made during an API's creation - and why those choices were made. - * [How many status codes does your API need?](https://blogs.dropbox.com/developers/2015/04/how-many-http-status-codes-should-your-api-use/) gives an answer from a Dropbox API developer as to their decision making process. From 25366e593e8dc58f5761294c4e6e9098c6c49a60 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Thu, 10 Jun 2021 07:09:07 -0400 Subject: [PATCH 10/42] updating flask examples to remove broken flask-wtf link --- .../pages/examples/flask/flask-app-badrequest.markdown | 2 +- content/pages/examples/flask/flask-app-flask.markdown | 8 ++++---- content/pages/examples/flask/flask-app-headers.markdown | 2 +- .../examples/flask/flask-blueprints-blueprint.markdown | 4 ++-- .../examples/flask/flask-extensions-plug-ins.markdown | 2 +- .../examples/flask/flask-globals-current-app.markdown | 4 ++-- content/pages/examples/flask/flask-globals-g.markdown | 2 +- .../pages/examples/flask/flask-globals-request.markdown | 4 ++-- .../pages/examples/flask/flask-globals-session.markdown | 4 ++-- .../pages/examples/flask/flask-helpers-url-for.markdown | 4 ++-- content/pages/examples/flask/flask-json-jsonify.markdown | 2 +- .../examples/flask/flask-sessions-badsignature.markdown | 2 +- .../flask-templating-render-template-string.markdown | 2 +- .../flask/flask-templating-render-template.markdown | 8 ++++---- content/pages/examples/flask/flask-views-view.markdown | 2 +- .../sqlalchemy/sqlalchemy-extensions-plug-ins.markdown | 2 +- 16 files changed, 27 insertions(+), 27 deletions(-) diff --git a/content/pages/examples/flask/flask-app-badrequest.markdown b/content/pages/examples/flask/flask-app-badrequest.markdown index 76ff30b02..3063a6da3 100644 --- a/content/pages/examples/flask/flask-app-badrequest.markdown +++ b/content/pages/examples/flask/flask-app-badrequest.markdown @@ -149,7 +149,7 @@ def rison(schema=None): ## Example 2 from Flask-WTF [Flask-WTF](https://github.com/lepture/flask-wtf) -([project documentation](https://flask-wtf.readthedocs.io/en/stable/) +([project documentation](https://flask-wtf.readthedocs.io/) and [PyPI page](https://pypi.org/project/Flask-WTF/)) provides a bridge between [Flask](/flask.html) and the the diff --git a/content/pages/examples/flask/flask-app-flask.markdown b/content/pages/examples/flask/flask-app-flask.markdown index 33f54b1ef..b8ab9467b 100644 --- a/content/pages/examples/flask/flask-app-flask.markdown +++ b/content/pages/examples/flask/flask-app-flask.markdown @@ -19,7 +19,7 @@ application's functionality, including URL rounting, and ImmutableDict are several other callables with code examples from the same `flask.app` package. -These subjects go along with the `Flask` code examples: +These topics are also useful while reading the `Flask` examples: * [web development](/web-development.html) and [web design](/web-design.html) * [Flask](/flask.html) and [web framework](/web-frameworks.html) concepts @@ -380,7 +380,7 @@ libraries that are commonly used in Flask projects, such as [SendGrid](https://www.twilio.com/sendgrid) for transactional email, [SQLAlchemy](/sqlalchemy.html) for persistent data storage through a [relational database](/databases.html) backend, -[Flask-WTF](https://flask-wtf.readthedocs.io/en/stable/) for form +[Flask-WTF](https://flask-wtf.readthedocs.io/) for form handling and many others. flask-base is provided as open source under the @@ -677,7 +677,7 @@ class HTTPAuthTestCase(unittest.TestCase): is an example application that ties together the [intTellInput.js](https://github.com/jackocnr/intl-tel-input) JavaScript plugin with the -[Flask-WTF](https://flask-wtf.readthedocs.io/en/stable/) form-handling +[Flask-WTF](https://flask-wtf.readthedocs.io/) form-handling library. flask-phone-input is provided as open source under the [MIT license](https://github.com/miguelgrinberg/flask-phone-input/blob/1a1c227c044474ce0fe133493d7f8b0fb8312409/LICENSE). @@ -729,7 +729,7 @@ def index(): starter project to build a software-as-a-service (SaaS) web application in [Flask](/flask.html), with [Stripe](/stripe.html) for billing. The boilerplate relies on many common Flask extensions such as -[Flask-WTF](https://flask-wtf.readthedocs.io/en/latest/), +[Flask-WTF](https://flask-wtf.readthedocs.io/), [Flask-Login](https://flask-login.readthedocs.io/en/latest/), [Flask-Admin](https://flask-admin.readthedocs.io/en/latest/), and many others. The project is provided as open source under the diff --git a/content/pages/examples/flask/flask-app-headers.markdown b/content/pages/examples/flask/flask-app-headers.markdown index cbbeeabc3..f16fe863b 100644 --- a/content/pages/examples/flask/flask-app-headers.markdown +++ b/content/pages/examples/flask/flask-app-headers.markdown @@ -22,7 +22,7 @@ Flask web applications. and ImmutableDict are several other callables with code examples from the same `flask.app` package. -These topics are also useful while reading the `Headers` examples: +These subjects go along with the `Headers` code examples: * [web development](/web-development.html) and [web design](/web-design.html) * [Flask](/flask.html) and [web framework](/web-frameworks.html) concepts diff --git a/content/pages/examples/flask/flask-blueprints-blueprint.markdown b/content/pages/examples/flask/flask-blueprints-blueprint.markdown index d74117ac5..07e39cf51 100644 --- a/content/pages/examples/flask/flask-blueprints-blueprint.markdown +++ b/content/pages/examples/flask/flask-blueprints-blueprint.markdown @@ -309,7 +309,7 @@ libraries that are commonly used in Flask projects, such as [SendGrid](https://www.twilio.com/sendgrid) for transactional email, [SQLAlchemy](/sqlalchemy.html) for persistent data storage through a [relational database](/databases.html) backend, -[Flask-WTF](https://flask-wtf.readthedocs.io/en/stable/) for form +[Flask-WTF](https://flask-wtf.readthedocs.io/) for form handling and many others. flask-base is provided as open source under the @@ -649,7 +649,7 @@ def swagger_static(filename): ## Example 10 from Flask-WTF [Flask-WTF](https://github.com/lepture/flask-wtf) -([project documentation](https://flask-wtf.readthedocs.io/en/stable/) +([project documentation](https://flask-wtf.readthedocs.io/) and [PyPI page](https://pypi.org/project/Flask-WTF/)) provides a bridge between [Flask](/flask.html) and the the diff --git a/content/pages/examples/flask/flask-extensions-plug-ins.markdown b/content/pages/examples/flask/flask-extensions-plug-ins.markdown index 9467b3f26..de0d41668 100644 --- a/content/pages/examples/flask/flask-extensions-plug-ins.markdown +++ b/content/pages/examples/flask/flask-extensions-plug-ins.markdown @@ -219,7 +219,7 @@ building on, and the source code is open source under the ### Flask-WTF [Flask-WTF](https://github.com/lepture/flask-wtf) -([project documentation](https://flask-wtf.readthedocs.io/en/stable/) +([project documentation](https://flask-wtf.readthedocs.io/) and [PyPI page](https://pypi.org/project/Flask-WTF/)) provides a bridge between [Flask](/flask.html) and the the diff --git a/content/pages/examples/flask/flask-globals-current-app.markdown b/content/pages/examples/flask/flask-globals-current-app.markdown index 8dcdeaf60..fefae63cc 100644 --- a/content/pages/examples/flask/flask-globals-current-app.markdown +++ b/content/pages/examples/flask/flask-globals-current-app.markdown @@ -630,7 +630,7 @@ libraries that are commonly used in Flask projects, such as [SendGrid](https://www.twilio.com/sendgrid) for transactional email, [SQLAlchemy](/sqlalchemy.html) for persistent data storage through a [relational database](/databases.html) backend, -[Flask-WTF](https://flask-wtf.readthedocs.io/en/stable/) for form +[Flask-WTF](https://flask-wtf.readthedocs.io/) for form handling and many others. flask-base is provided as open source under the @@ -1894,7 +1894,7 @@ except ImportError: ## Example 14 from Flask-WTF [Flask-WTF](https://github.com/lepture/flask-wtf) -([project documentation](https://flask-wtf.readthedocs.io/en/stable/) +([project documentation](https://flask-wtf.readthedocs.io/) and [PyPI page](https://pypi.org/project/Flask-WTF/)) provides a bridge between [Flask](/flask.html) and the the diff --git a/content/pages/examples/flask/flask-globals-g.markdown b/content/pages/examples/flask/flask-globals-g.markdown index e84628965..8fced1573 100644 --- a/content/pages/examples/flask/flask-globals-g.markdown +++ b/content/pages/examples/flask/flask-globals-g.markdown @@ -679,7 +679,7 @@ class HTTPBasicAuth(HTTPAuth): ## Example 6 from Flask-WTF [Flask-WTF](https://github.com/lepture/flask-wtf) -([project documentation](https://flask-wtf.readthedocs.io/en/stable/) +([project documentation](https://flask-wtf.readthedocs.io/) and [PyPI page](https://pypi.org/project/Flask-WTF/)) provides a bridge between [Flask](/flask.html) and the the diff --git a/content/pages/examples/flask/flask-globals-request.markdown b/content/pages/examples/flask/flask-globals-request.markdown index 4368a1a2f..b67c2a446 100644 --- a/content/pages/examples/flask/flask-globals-request.markdown +++ b/content/pages/examples/flask/flask-globals-request.markdown @@ -1997,7 +1997,7 @@ class marshal_with_field(object): ## Example 12 from Flask-WTF [Flask-WTF](https://github.com/lepture/flask-wtf) -([project documentation](https://flask-wtf.readthedocs.io/en/stable/) +([project documentation](https://flask-wtf.readthedocs.io/) and [PyPI page](https://pypi.org/project/Flask-WTF/)) provides a bridge between [Flask](/flask.html) and the the @@ -2159,7 +2159,7 @@ def generate_csrf(secret_key=None, token_key=None): starter project to build a software-as-a-service (SaaS) web application in [Flask](/flask.html), with [Stripe](/stripe.html) for billing. The boilerplate relies on many common Flask extensions such as -[Flask-WTF](https://flask-wtf.readthedocs.io/en/latest/), +[Flask-WTF](https://flask-wtf.readthedocs.io/), [Flask-Login](https://flask-login.readthedocs.io/en/latest/), [Flask-Admin](https://flask-admin.readthedocs.io/en/latest/), and many others. The project is provided as open source under the diff --git a/content/pages/examples/flask/flask-globals-session.markdown b/content/pages/examples/flask/flask-globals-session.markdown index 6659b6dbf..9ff29a99a 100644 --- a/content/pages/examples/flask/flask-globals-session.markdown +++ b/content/pages/examples/flask/flask-globals-session.markdown @@ -730,7 +730,7 @@ def login_required(func): ## Example 7 from Flask-WTF [Flask-WTF](https://github.com/lepture/flask-wtf) -([project documentation](https://flask-wtf.readthedocs.io/en/stable/) +([project documentation](https://flask-wtf.readthedocs.io/) and [PyPI page](https://pypi.org/project/Flask-WTF/)) provides a bridge between [Flask](/flask.html) and the the @@ -845,7 +845,7 @@ def _get_config( starter project to build a software-as-a-service (SaaS) web application in [Flask](/flask.html), with [Stripe](/stripe.html) for billing. The boilerplate relies on many common Flask extensions such as -[Flask-WTF](https://flask-wtf.readthedocs.io/en/latest/), +[Flask-WTF](https://flask-wtf.readthedocs.io/), [Flask-Login](https://flask-login.readthedocs.io/en/latest/), [Flask-Admin](https://flask-admin.readthedocs.io/en/latest/), and many others. The project is provided as open source under the diff --git a/content/pages/examples/flask/flask-helpers-url-for.markdown b/content/pages/examples/flask/flask-helpers-url-for.markdown index a82f0f96d..ad0cc1b93 100644 --- a/content/pages/examples/flask/flask-helpers-url-for.markdown +++ b/content/pages/examples/flask/flask-helpers-url-for.markdown @@ -350,7 +350,7 @@ libraries that are commonly used in Flask projects, such as [SendGrid](https://www.twilio.com/sendgrid) for transactional email, [SQLAlchemy](/sqlalchemy.html) for persistent data storage through a [relational database](/databases.html) backend, -[Flask-WTF](https://flask-wtf.readthedocs.io/en/stable/) for form +[Flask-WTF](https://flask-wtf.readthedocs.io/) for form handling and many others. flask-base is provided as open source under the @@ -759,7 +759,7 @@ def ui_for(api): starter project to build a software-as-a-service (SaaS) web application in [Flask](/flask.html), with [Stripe](/stripe.html) for billing. The boilerplate relies on many common Flask extensions such as -[Flask-WTF](https://flask-wtf.readthedocs.io/en/latest/), +[Flask-WTF](https://flask-wtf.readthedocs.io/), [Flask-Login](https://flask-login.readthedocs.io/en/latest/), [Flask-Admin](https://flask-admin.readthedocs.io/en/latest/), and many others. The project is provided as open source under the diff --git a/content/pages/examples/flask/flask-json-jsonify.markdown b/content/pages/examples/flask/flask-json-jsonify.markdown index ae6a13eca..ea045cad1 100644 --- a/content/pages/examples/flask/flask-json-jsonify.markdown +++ b/content/pages/examples/flask/flask-json-jsonify.markdown @@ -770,7 +770,7 @@ def get_component_module(module_name): starter project to build a software-as-a-service (SaaS) web application in [Flask](/flask.html), with [Stripe](/stripe.html) for billing. The boilerplate relies on many common Flask extensions such as -[Flask-WTF](https://flask-wtf.readthedocs.io/en/latest/), +[Flask-WTF](https://flask-wtf.readthedocs.io/), [Flask-Login](https://flask-login.readthedocs.io/en/latest/), [Flask-Admin](https://flask-admin.readthedocs.io/en/latest/), and many others. The project is provided as open source under the diff --git a/content/pages/examples/flask/flask-sessions-badsignature.markdown b/content/pages/examples/flask/flask-sessions-badsignature.markdown index c7b207921..5208b7aed 100644 --- a/content/pages/examples/flask/flask-sessions-badsignature.markdown +++ b/content/pages/examples/flask/flask-sessions-badsignature.markdown @@ -88,7 +88,7 @@ libraries that are commonly used in Flask projects, such as [SendGrid](https://www.twilio.com/sendgrid) for transactional email, [SQLAlchemy](/sqlalchemy.html) for persistent data storage through a [relational database](/databases.html) backend, -[Flask-WTF](https://flask-wtf.readthedocs.io/en/stable/) for form +[Flask-WTF](https://flask-wtf.readthedocs.io/) for form handling and many others. flask-base is provided as open source under the diff --git a/content/pages/examples/flask/flask-templating-render-template-string.markdown b/content/pages/examples/flask/flask-templating-render-template-string.markdown index 563672ef3..ddddb67b9 100644 --- a/content/pages/examples/flask/flask-templating-render-template-string.markdown +++ b/content/pages/examples/flask/flask-templating-render-template-string.markdown @@ -20,7 +20,7 @@ the `.templating` part. render_template is another callable from the `flask.templating` package with code examples. -These topics are also useful while reading the `render_template_string` examples: +You should read up on these subjects along with these `render_template_string` examples: * [template engines](/template-engines.html), specifically [Jinja2](/jinja2.html) * [Flask](/flask.html) and the concepts for [web frameworks](/web-frameworks.html) diff --git a/content/pages/examples/flask/flask-templating-render-template.markdown b/content/pages/examples/flask/flask-templating-render-template.markdown index f47d4a348..ed4c35fdf 100644 --- a/content/pages/examples/flask/flask-templating-render-template.markdown +++ b/content/pages/examples/flask/flask-templating-render-template.markdown @@ -21,7 +21,7 @@ the `.templating` part. render_template_string is another callable from the `flask.templating` package with code examples. -You should read up on these subjects along with these `render_template` examples: +These subjects go along with the `render_template` code examples: * [template engines](/template-engines.html), specifically [Jinja2](/jinja2.html) * [Flask](/flask.html) and the concepts for [web frameworks](/web-frameworks.html) @@ -310,7 +310,7 @@ libraries that are commonly used in Flask projects, such as [SendGrid](https://www.twilio.com/sendgrid) for transactional email, [SQLAlchemy](/sqlalchemy.html) for persistent data storage through a [relational database](/databases.html) backend, -[Flask-WTF](https://flask-wtf.readthedocs.io/en/stable/) for form +[Flask-WTF](https://flask-wtf.readthedocs.io/) for form handling and many others. flask-base is provided as open source under the @@ -801,7 +801,7 @@ def update(c_id): is an example application that ties together the [intTellInput.js](https://github.com/jackocnr/intl-tel-input) JavaScript plugin with the -[Flask-WTF](https://flask-wtf.readthedocs.io/en/stable/) form-handling +[Flask-WTF](https://flask-wtf.readthedocs.io/) form-handling library. flask-phone-input is provided as open source under the [MIT license](https://github.com/miguelgrinberg/flask-phone-input/blob/1a1c227c044474ce0fe133493d7f8b0fb8312409/LICENSE). @@ -1020,7 +1020,7 @@ def ui_for(api): starter project to build a software-as-a-service (SaaS) web application in [Flask](/flask.html), with [Stripe](/stripe.html) for billing. The boilerplate relies on many common Flask extensions such as -[Flask-WTF](https://flask-wtf.readthedocs.io/en/latest/), +[Flask-WTF](https://flask-wtf.readthedocs.io/), [Flask-Login](https://flask-login.readthedocs.io/en/latest/), [Flask-Admin](https://flask-admin.readthedocs.io/en/latest/), and many others. The project is provided as open source under the diff --git a/content/pages/examples/flask/flask-views-view.markdown b/content/pages/examples/flask/flask-views-view.markdown index 25ca74e2d..1f8e51936 100644 --- a/content/pages/examples/flask/flask-views-view.markdown +++ b/content/pages/examples/flask/flask-views-view.markdown @@ -20,7 +20,7 @@ and http_method_funcs are a couple of other callables within the `flask.views` package that also have code examples. -These topics are also useful while reading the `View` examples: +You should read up on these subjects along with these `View` examples: * [web development](/web-development.html) and [web design](/web-design.html) * [web framework concepts](/web-frameworks.html) and the [Flask framework](/flask.html) diff --git a/content/pages/examples/sqlalchemy/sqlalchemy-extensions-plug-ins.markdown b/content/pages/examples/sqlalchemy/sqlalchemy-extensions-plug-ins.markdown index 0ff095a54..c24866e5f 100644 --- a/content/pages/examples/sqlalchemy/sqlalchemy-extensions-plug-ins.markdown +++ b/content/pages/examples/sqlalchemy/sqlalchemy-extensions-plug-ins.markdown @@ -49,7 +49,7 @@ libraries that are commonly used in Flask projects, such as [SendGrid](https://www.twilio.com/sendgrid) for transactional email, [SQLAlchemy](/sqlalchemy.html) for persistent data storage through a [relational database](/databases.html) back end, -[Flask-WTF](https://flask-wtf.readthedocs.io/en/stable/) for form +[Flask-WTF](https://flask-wtf.readthedocs.io/) for form handling, and many others. flask-base is provided as open source under the From 09010fdb424185c5870a072a7f5c86ba24423336 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Thu, 10 Jun 2021 07:40:07 -0400 Subject: [PATCH 11/42] fixing more broken links --- content/pages/03-data/18-data-visualization.markdown | 5 ----- .../examples/flask/flask-example-projects-code.markdown | 2 +- .../sqlalchemy/sqlalchemy-exc-integrityerror.markdown | 2 +- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/content/pages/03-data/18-data-visualization.markdown b/content/pages/03-data/18-data-visualization.markdown index af18aada8..3fa0856fc 100644 --- a/content/pages/03-data/18-data-visualization.markdown +++ b/content/pages/03-data/18-data-visualization.markdown @@ -91,11 +91,6 @@ Sometimes you need inspiration from other sources to figure out what you want to build. The following links have made me excited about data visualization and gave me ideas for what to build. -* [Roads to Rome](http://roadstorome.moovellab.com/) is a beautiful - visualization showing the data behind the expression "all roads lead - to Rome" and whether or not there is a "Rome" central city in every - country. - * [Monarchs](https://thebackend.dev/monarchs/) is a wonderful 1,000 year history visual of European rulers. The developer also wrote an in-depth article on diff --git a/content/pages/examples/flask/flask-example-projects-code.markdown b/content/pages/examples/flask/flask-example-projects-code.markdown index a4b3d973e..e8a469a5d 100644 --- a/content/pages/examples/flask/flask-example-projects-code.markdown +++ b/content/pages/examples/flask/flask-example-projects-code.markdown @@ -99,7 +99,7 @@ is configured in JSON. The code is provided as open source under the is an example application that ties together the [intTellInput.js](https://github.com/jackocnr/intl-tel-input) JavaScript plugin with the -[Flask-WTF](https://flask-wtf.readthedocs.io/en/stable/) form-handling +[Flask-WTF](https://flask-wtf.readthedocs.io/) form-handling library. flask-phone-input is provided as open source under the [MIT license](https://github.com/miguelgrinberg/flask-phone-input/blob/1a1c227c044474ce0fe133493d7f8b0fb8312409/LICENSE). diff --git a/content/pages/examples/sqlalchemy/sqlalchemy-exc-integrityerror.markdown b/content/pages/examples/sqlalchemy/sqlalchemy-exc-integrityerror.markdown index 615febd9c..88658c4f4 100644 --- a/content/pages/examples/sqlalchemy/sqlalchemy-exc-integrityerror.markdown +++ b/content/pages/examples/sqlalchemy/sqlalchemy-exc-integrityerror.markdown @@ -142,7 +142,7 @@ libraries that are commonly used in Flask projects, such as [SendGrid](https://www.twilio.com/sendgrid) for transactional email, [SQLAlchemy](/sqlalchemy.html) for persistent data storage through a [relational database](/databases.html) backend, -[Flask-WTF](https://flask-wtf.readthedocs.io/en/stable/) for form +[Flask-WTF](https://flask-wtf.readthedocs.io/) for form handling and many others. flask-base is provided as open source under the From 2d0ae8c5bc7c8cf413bf90eae371625f9d4985b5 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Fri, 11 Jun 2021 09:48:03 -0400 Subject: [PATCH 12/42] fixing more broken links --- content/pages/03-data/04-sqlite.markdown | 5 ----- content/pages/03-data/18-data-visualization.markdown | 4 ---- content/pages/05-deployment/00-deployment.markdown | 2 +- content/pages/05-deployment/20-caddy.markdown | 3 ++- content/pages/05-deployment/36-docker.markdown | 10 ---------- content/pages/05-deployment/37-kubernetes.markdown | 8 ++++---- content/pages/05-deployment/38-serverless.markdown | 3 +-- content/pages/05-deployment/39-aws-lambda.markdown | 3 +-- 8 files changed, 9 insertions(+), 29 deletions(-) diff --git a/content/pages/03-data/04-sqlite.markdown b/content/pages/03-data/04-sqlite.markdown index d5aee3aaa..5c7f3fd00 100644 --- a/content/pages/03-data/04-sqlite.markdown +++ b/content/pages/03-data/04-sqlite.markdown @@ -155,11 +155,6 @@ you are having with SQLite rather than going through a general tutorial. [object-relational mapper (ORM)](/object-relational-mappers-orms.html) to implement virtual tables and aggregates on top of SQLite. -* [Use SQLite with Django On AWS Lambda with Zappa](https://blog.zappa.io/posts/use-sqlite-with-django-on-aws-lambda-with-zappa) - provides an example `dev_settings.py` file for - locally testing a [Django](/django.html) application intended for - [AWS Lambda](/aws-lambda.html). - * [SQLite Database Authorization and Access Control with Python](http://charlesleifer.com/blog/sqlite-database-authorization-and-access-control-with-python/) covers how to control access to the SQLite database connection and file even though SQLite normally allows unauthorized access by design. diff --git a/content/pages/03-data/18-data-visualization.markdown b/content/pages/03-data/18-data-visualization.markdown index 3fa0856fc..e56c2b2dc 100644 --- a/content/pages/03-data/18-data-visualization.markdown +++ b/content/pages/03-data/18-data-visualization.markdown @@ -102,10 +102,6 @@ visualization and gave me ideas for what to build. and dark sides, the main characters, various bits about the Force and other data extracted from the movies. -* [Big League Graphs](https://bigleaguegraphs.com/) presents a bunch of - creative ways to view data for sports such as basketball, baseball and - hockey. - * [What do numbers look like?](https://johnhw.github.io/umap_primes/index.md.html) is a Python 3 dimensional visualization of millions of integers, colored by special factors such as prime and Fibonacci numbers. diff --git a/content/pages/05-deployment/00-deployment.markdown b/content/pages/05-deployment/00-deployment.markdown index a7080da8a..7475b8e54 100644 --- a/content/pages/05-deployment/00-deployment.markdown +++ b/content/pages/05-deployment/00-deployment.markdown @@ -51,7 +51,7 @@ guide as they are considered advanced deployment techniques. * [teletraan](https://github.com/pinterest/teletraan) is the deploy system used by the development teams at Pinterest, a huge Python shop! -* [pants](https://www.pantsbuild.org/index.html) is a build system originally +* [pants](https://www.pantsbuild.org/) is a build system originally created at Twitter and now split out as its own sustainable open source project. diff --git a/content/pages/05-deployment/20-caddy.markdown b/content/pages/05-deployment/20-caddy.markdown index 1b27e6d11..56ca43167 100644 --- a/content/pages/05-deployment/20-caddy.markdown +++ b/content/pages/05-deployment/20-caddy.markdown @@ -15,7 +15,8 @@ and design emphasize HTTPS-everywhere along with the HTTP/2 protocol. ## How can Caddy be used with Python deployments? Caddy can be used both for testing during local development or as part of a production deployment as an HTTP server and a reverse proxy with -the [proxy directive](https://caddyserver.com/docs/proxy). +the +[reverse_proxy directive](https://caddyserver.com/docs/caddyfile/directives/reverse_proxy).
Caddy is an implementation of the web server concept. Learn how these pieces fit together in the deployment chapter or view the table of contents for all topics.
diff --git a/content/pages/05-deployment/36-docker.markdown b/content/pages/05-deployment/36-docker.markdown index 8017a95da..6fe74a04c 100644 --- a/content/pages/05-deployment/36-docker.markdown +++ b/content/pages/05-deployment/36-docker.markdown @@ -48,20 +48,10 @@ on Amazon Web Services, Google Compute Engine, Linode, Rackspace or elsewhere. repository and tutorial that shows you how to recreate a simplified version of Docker to better understand what it's doing under the hood. -* [Andrew Baker](https://github.com/atbaker) presented a fantastic tutorial - at [PyOhio](http://andrewtorkbaker.com/pyohio-docker-101-tutorial) on - [beginner and advanced Docker usage](https://github.com/atbaker/docker-tutorial). - Andrew also wrote the article - [what containers can do for you](http://radar.oreilly.com/2015/01/what-containers-can-do-for-you.html). - * [Docker curriculum](http://prakhar.me/docker-curriculum/) is a detailed tutorial created by a developer to show the exact steps for deploying an application that relies on [Elasticsearch](https://www.elastic.co/). -* [How To Install and Use Docker on Ubuntu 16.04](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04) - provides a walkthrough for Ubuntu 16.04 for installing and beginning to - use Docker for development. - * [It Really is the Future](http://blog.circleci.com/it-really-is-the-future/) discusses Docker and containers in the context of whether it's all just a bunch of hype or if this is a real trend for infrastructure automation. diff --git a/content/pages/05-deployment/37-kubernetes.markdown b/content/pages/05-deployment/37-kubernetes.markdown index 3e029b97d..039c1b270 100644 --- a/content/pages/05-deployment/37-kubernetes.markdown +++ b/content/pages/05-deployment/37-kubernetes.markdown @@ -30,11 +30,11 @@ applications. * [Kompose](http://kompose.io/index) ([source code](https://github.com/kubernetes/kompose)) - translate Docker Compose files into Kubernetes configuration resources. + translates Docker Compose files into Kubernetes configuration resources. -* [skaffold](https://skaffold.dev/). [Using Kubernetes for local development](https://nemethgergely.com/using-kubernetes-for-local-development/index.html) - is a good starting place for more information on getting started with - Skaffold. +* [skaffold](https://skaffold.dev/) + ([source code](https://github.com/GoogleContainerTools/skaffold)) makes + it easier to develop locally with Kubernetes. * [kubethanos](https://github.com/berkay-dincer/kubethanos) is a tool to kill half of your Kubernetes pods at random, to test the resilience of your diff --git a/content/pages/05-deployment/38-serverless.markdown b/content/pages/05-deployment/38-serverless.markdown index ad05af5f1..aea641dff 100644 --- a/content/pages/05-deployment/38-serverless.markdown +++ b/content/pages/05-deployment/38-serverless.markdown @@ -83,8 +83,7 @@ include: which is a useful but generically-named library that focuses on deployment and operations for serverless applications. -* [Zappa](https://www.zappa.io/) - ([source code](https://github.com/Miserlou/Zappa)) +* [Zappa](https://github.com/Miserlou/Zappa) provides code and tools to make it much easier to build on AWS Lambda and AWS API Gateway than rolling your own on the bare services. diff --git a/content/pages/05-deployment/39-aws-lambda.markdown b/content/pages/05-deployment/39-aws-lambda.markdown index fec7e2944..c4242c570 100644 --- a/content/pages/05-deployment/39-aws-lambda.markdown +++ b/content/pages/05-deployment/39-aws-lambda.markdown @@ -38,8 +38,7 @@ has support for both Python 2.7, 3.6 and 3.7. * [Zappa](https://github.com/Miserlou/Zappa) is a serverless framework for deploying Python web applications. It's a really slick project and used even by internal AWS developers for their own application - deployments. Be sure to [read the Zappa blog](https://blog.zappa.io/) - as well for walkthroughs and new feature announcements. + deployments. * [How to Setup a Serverless URL Shortener With API Gateway Lambda and DynamoDB on AWS](https://blog.ruanbekker.com/blog/2018/11/30/how-to-setup-a-serverless-url-shortener-with-api-gateway-lambda-and-dynamodb-on-aws/) builds a non-trivial URL shortener application as an example Python From ec696ce5aa7b0817d2985f5cc003b9fa88050c84 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Mon, 14 Jun 2021 07:41:17 -0400 Subject: [PATCH 13/42] fixing more broken links --- content/pages/04-web-development/27-task-queues.markdown | 4 ---- content/pages/05-deployment/00-deployment.markdown | 8 -------- content/pages/05-deployment/19-nginx.markdown | 4 +--- content/pages/05-deployment/24-uwsgi.markdown | 4 ---- content/pages/05-deployment/39-aws-lambda.markdown | 8 -------- content/pages/05-deployment/40-azure-functions.markdown | 3 --- 6 files changed, 1 insertion(+), 30 deletions(-) diff --git a/content/pages/04-web-development/27-task-queues.markdown b/content/pages/04-web-development/27-task-queues.markdown index 10ba31986..9533a586d 100644 --- a/content/pages/04-web-development/27-task-queues.markdown +++ b/content/pages/04-web-development/27-task-queues.markdown @@ -121,10 +121,6 @@ when scaling out a large deployment of distributed task queues. is a detailed comparison of Amazon SQS, MongoDB, RabbitMQ, HornetQ and Kafka's designs and performance. -* [Queues.io](http://queues.io/) is a collection of task queue systems with - short summaries for each one. The task queues are not all compatible with - Python but ones that work with it are tagged with the "Python" keyword. - * [Why Task Queues](http://www.slideshare.net/bryanhelmig/task-queues-comorichweb-12962619) is a presentation for what task queues are and why they are needed. diff --git a/content/pages/05-deployment/00-deployment.markdown b/content/pages/05-deployment/00-deployment.markdown index 7475b8e54..48ad4e8c1 100644 --- a/content/pages/05-deployment/00-deployment.markdown +++ b/content/pages/05-deployment/00-deployment.markdown @@ -132,14 +132,6 @@ guide as they are considered advanced deployment techniques. is an awesome in-depth read covering topics ranging from git branching to database migrations. -* In [this free video by Neal Ford](http://player.oreilly.com/videos/9781491908181?toc_id=210188), - he talks about engineering practices for continuous delivery. He explains - the difference between - [continuous integration](/continuous-integration.html), - continuous deployment and continuous delivery. Highly recommended for an - overview of deployment concepts and as an introduction to the other videos - on those subjects in that series. - * [TestDriven.io](https://testdriven.io/) shows how to deploy a [microservices](/microservices.html) architecture that uses [Docker](/docker.html), [Flask](/flask.html), and React with diff --git a/content/pages/05-deployment/19-nginx.markdown b/content/pages/05-deployment/19-nginx.markdown index afe620d84..98626e467 100644 --- a/content/pages/05-deployment/19-nginx.markdown +++ b/content/pages/05-deployment/19-nginx.markdown @@ -74,9 +74,7 @@ HTTP(S) configurations. * [Strong SSL Security on Nginx](https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html) shows how to mitigate high profile SSL attacks like - [Logjam](https://weakdh.org/), - [Heartbleed](http://heartbleed.com/) - and [FREAK](https://freakattack.com/). + [Logjam](https://weakdh.org/) and [Heartbleed](http://heartbleed.com/). ## Specific Nginx resources diff --git a/content/pages/05-deployment/24-uwsgi.markdown b/content/pages/05-deployment/24-uwsgi.markdown index 985d326fe..7561de3da 100644 --- a/content/pages/05-deployment/24-uwsgi.markdown +++ b/content/pages/05-deployment/24-uwsgi.markdown @@ -42,7 +42,3 @@ implementation that is typically used to run Python web applications. is awesome because it shows you how to code a quick WSGI application without using a framework then builds up an example with deploying a traditional Django web app. - -* [Deployment Notes for Pylons, Nginx, and uWSGI](http://tonylandis.com/python/deployment-howt-pylons-nginx-and-uwsgi/) - gives the code and instructions for setting up a Pylons application - with uWSGI. diff --git a/content/pages/05-deployment/39-aws-lambda.markdown b/content/pages/05-deployment/39-aws-lambda.markdown index c4242c570..e775cc20b 100644 --- a/content/pages/05-deployment/39-aws-lambda.markdown +++ b/content/pages/05-deployment/39-aws-lambda.markdown @@ -69,14 +69,6 @@ has support for both Python 2.7, 3.6 and 3.7. * [Code Evaluation With AWS Lambda and API Gateway](https://realpython.com/blog/python/code-evaluation-with-aws-lambda-and-api-gateway/) shows how to develop a code evaluation API, to execute arbitrary code, with AWS Lambda and API Gateway. -* [Crawling thousands of products using AWS Lambda](https://engineering.21buttons.com/crawling-thousands-of-products-using-aws-lambda-80332e259de1) - gives a real-world example of where using Python, Selenium and - [headless Chrome](https://developers.google.com/web/updates/2017/04/headless-chrome) - on AWS Lambda could crawl thousands of pages to collect data - with each crawler running within its own Lambda Function. - -* [Going Serverless with AWS Lambda and API Gateway](http://blog.ryankelly.us/2016/08/07/going-serverless-with-aws-lambda-and-api-gateway.html) - ### General AWS Lambda resources * [Getting started with serverless on AWS](https://emshea.com/post/serverless-getting-started) diff --git a/content/pages/05-deployment/40-azure-functions.markdown b/content/pages/05-deployment/40-azure-functions.markdown index 4cb8243e1..7f718f64a 100644 --- a/content/pages/05-deployment/40-azure-functions.markdown +++ b/content/pages/05-deployment/40-azure-functions.markdown @@ -44,6 +44,3 @@ in other Azure services. what is confusing to newcomers that hopefully will be addressed as Microsoft continues to work on their Azure platform. -* [Azure in Plain English](https://www.expeditedssl.com/azure-in-plain-english) - covers all of the Azure services and explains them because their - default names are often too vague to understand their purpose. From 8cf4fd927fe656811c6b01857bc3b7a77feb5ec8 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Wed, 16 Jun 2021 10:52:35 -0400 Subject: [PATCH 14/42] fixing two broken links --- content/pages/04-web-development/28-celery.markdown | 12 ------------ .../pages/04-web-development/38-debugging.markdown | 4 ---- 2 files changed, 16 deletions(-) diff --git a/content/pages/04-web-development/28-celery.markdown b/content/pages/04-web-development/28-celery.markdown index 5d8a3c746..de2c60027 100644 --- a/content/pages/04-web-development/28-celery.markdown +++ b/content/pages/04-web-development/28-celery.markdown @@ -163,10 +163,6 @@ web framework of your choice. is a detailed walkthrough for setting up Celery with Django (although Celery can also be used without a problem with other frameworks). -* [Introducing Celery for Python+Django](http://www.linuxforu.com/2013/12/introducing-celery-pythondjango/) - provides an introduction to the Celery task queue with Django as the - intended framework for building a web application. - * [Asynchronous Tasks with Falcon and Celery](https://testdriven.io/asynchronous-tasks-with-falcon-and-celery) configures Celery with the [Falcon](/falcon.html) framework, which is less commonly-used in web tutorials. @@ -186,18 +182,10 @@ adds some additional complexity to your [deployments](/deployment.html). The following resources walk you through how to handle deployments and get the right configuration settings in place. -* The "Django in Production" series by - [Rob Golding](https://twitter.com/robgolding63) contains a post - specifically on [Background Tasks](http://www.robgolding.com/blog/2011/11/27/django-in-production-part-2---background-tasks/). - * [How to run celery as a daemon?](https://pythad.github.io/articles/2016-12/how-to-run-celery-as-a-daemon-in-production) is a short post with the minimal code for running the Celery daemon and Celerybeat as system services on Linux. -* [Celery in Production](http://www.caktusgroup.com/blog/2014/09/29/celery-production/) - on the Caktus Group blog contains good practices from their experience - using Celery with RabbitMQ, monitoring tools and other aspects not often - discussed in existing documentation. * [Three quick tips from two years with Celery](https://library.launchkit.io/three-quick-tips-from-two-years-with-celery-c05ff9d7f9eb) provides some solid advice on retry delays, the `-Ofair` flag and global diff --git a/content/pages/04-web-development/38-debugging.markdown b/content/pages/04-web-development/38-debugging.markdown index e2936c6ae..8cf576d27 100644 --- a/content/pages/04-web-development/38-debugging.markdown +++ b/content/pages/04-web-development/38-debugging.markdown @@ -137,10 +137,6 @@ give solid programming language-agnostic debugging advice. * [The art of debugging](https://remysharp.com/2015/10/14/the-art-of-debugging) provides a whirlwind overview for how to fix issues in your code. -* [How to debug JavaScript errors](https://rollbar.com/guides/how-to-debug-javascript/) - introduces some key debugging tools such as source maps that make - identifying errors on the client side much easier during development. - * [Linux debugging tools you'll love](https://jvns.ca/debugging-zine.pdf) is an awesome comic that covers the Linux ecosystem for debugging. From 5a0518b766d57cf7ecc437bddc0832dc8432c379 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Thu, 17 Jun 2021 07:00:08 -0400 Subject: [PATCH 15/42] fix a slew of broken links --- .../pages/01-introduction/05-enterprise-python.markdown | 2 +- content/pages/01-introduction/06-community.markdown | 9 ++------- .../15-application-dependencies.markdown | 7 ------- .../18-source-control.markdown | 6 +++--- .../pages/02-development-environments/19-git.markdown | 4 ---- content/pages/04-web-development/28-celery.markdown | 2 +- .../posts/160626-django-gunicorn-mint-linux-17.markdown | 4 ++-- 7 files changed, 9 insertions(+), 25 deletions(-) diff --git a/content/pages/01-introduction/05-enterprise-python.markdown b/content/pages/01-introduction/05-enterprise-python.markdown index f6f1ea7f8..d96558641 100644 --- a/content/pages/01-introduction/05-enterprise-python.markdown +++ b/content/pages/01-introduction/05-enterprise-python.markdown @@ -70,7 +70,7 @@ best maintained and fully featured pieces of code for any language. Meanwhile, some of the traditional enterprise software development languages such as Java have languished due to underinvestment by their major corporate -backers. When [Oracle purchased Sun Microsystems in 2009](http://www.oracle.com/us/corporate/press/018363) +backers. When [Oracle purchased Sun Microsystems in 2009](https://www.oracle.com/corporate/pressrelease/oracle-buys-sun-042009.html) there was a long lag time before Java was enhanced with new language features in Java 7. Oracle also [bundles unwanted adware with the Java installation](http://www.engadget.com/2015/03/06/java-adware-mac/), diff --git a/content/pages/01-introduction/06-community.markdown b/content/pages/01-introduction/06-community.markdown index 1baec5f4f..a5f463319 100644 --- a/content/pages/01-introduction/06-community.markdown +++ b/content/pages/01-introduction/06-community.markdown @@ -77,7 +77,7 @@ resources provide perspective on offline events like and [PyCon US 2016](http://www.dreisbach.us/blog/pycon-2016/). There are many other retrospectives for other - [community-led conferences such as EuroPython](http://www.artima.com/weblogs/viewpost.jsp?thread=261930). + [community-led conferences such as EuroPython](https://www.artima.com/weblogs/viewpost.jsp?thread=261930). These summaries can be a great way to get a slice of the experience before purchasing a ticket and booking a trip. @@ -112,16 +112,11 @@ the community. provides a starter page with links to community-run newsletters, resources and conferences. -* There are many large active online communities on - [Reddit](https://www.reddit.com/r/python) and - [IRC channels](https://freenode.net/) such as #python, #python-dev - and #distutils. - * The Python community has a concept known as "Benevolent Dictator For Life" that may appear odd to newcomers. Essentially, Guido Van Rossum created the language and still has the ability to decide community arguments one way or the other. This post on the - [origin of BDFL](http://www.artima.com/weblogs/viewpost.jsp?thread=235725) + [origin of BDFL](https://www.artima.com/weblogs/viewpost.jsp?thread=235725) has more context about Guido's role. * [Python Community and Python at Dropbox](https://talkpython.fm/episodes/show/30/python-community-and-python-at-dropbox) diff --git a/content/pages/02-development-environments/15-application-dependencies.markdown b/content/pages/02-development-environments/15-application-dependencies.markdown index 513b62081..4fe802b6a 100644 --- a/content/pages/02-development-environments/15-application-dependencies.markdown +++ b/content/pages/02-development-environments/15-application-dependencies.markdown @@ -39,9 +39,6 @@ all yourself. A few of the best collections of Python libraries are shows the open source Python projects trending today, this week, and this month. -* This list of [20 Python libraries you can’t live without](http://freepythontips.wordpress.com/2013/07/30/20-python-libraries-you-cant-live-without/) - is a wide-ranging collection from data analysis to testing tools. - * Wikipedia actually has an extensive [page dedicated to Python libraries](http://en.wikipedia.org/wiki/List_of_Python_software) grouped by categories. @@ -224,10 +221,6 @@ developers. dependency management tools including newer ones such as pipenv and Poetry. -* Occasionally arguments about using Python's dependency manager versus - one of Linux's dependency managers comes up. This provides - [one perspective on that debate](http://notes.pault.ag/debian-python/). - * [Open source trust scaling](http://lucumr.pocoo.org/2016/3/24/open-source-trust-scaling/) is a good piece for the [Python community](/python-community.html) (and other programming communities) that is based on the diff --git a/content/pages/02-development-environments/18-source-control.markdown b/content/pages/02-development-environments/18-source-control.markdown index 83913183d..c96745a51 100644 --- a/content/pages/02-development-environments/18-source-control.markdown +++ b/content/pages/02-development-environments/18-source-control.markdown @@ -194,9 +194,9 @@ implementation. free online version of the O'Reilly [Version Control with Subversion](https://www.amazon.com/dp/B002SR2QIW/) book. -* [How to use Subversion (SVN)](https://deveo.com/svn-tutorial/) lays out - the basic concepts and provides the first few steps for getting started - tracking files. +* [How to Host SVN Repositories](https://www.perforce.com/blog/vcs/how-host-subversion-svn) + lays out the basic concepts and provides the first few steps for getting + started tracking files. * [10 Most Used SVN Commands with Examples](http://www.thegeekstuff.com/2011/04/svn-command-examples/) is a good refresher list if you've used SVN in the past but it has been diff --git a/content/pages/02-development-environments/19-git.markdown b/content/pages/02-development-environments/19-git.markdown index ae0fab9b8..9fdab73f2 100644 --- a/content/pages/02-development-environments/19-git.markdown +++ b/content/pages/02-development-environments/19-git.markdown @@ -174,10 +174,6 @@ workflow. These resources will come in handy for specific Git subjects. interactive mode or on its own with `git bisect run` to find the problematic code commit that needs to be fixed. -* [How Microsoft uses Git](https://docs.microsoft.com/en-us/azure/devops/learn/devops-at-microsoft/use-git-microsoft) - gives a high-level overview of their repository structure and hosting - at the extremely large scale organization. - * [GitTips](https://git.wiki.kernel.org/index.php/GitTips) is a list of pro tips to clean up common issues and how to dive through Git history to find specific text. diff --git a/content/pages/04-web-development/28-celery.markdown b/content/pages/04-web-development/28-celery.markdown index de2c60027..aa05b783a 100644 --- a/content/pages/04-web-development/28-celery.markdown +++ b/content/pages/04-web-development/28-celery.markdown @@ -11,7 +11,7 @@ meta: Celery is a task queue for executing work outside a Python web application implementation for [Python web applications](/web-development.html) used to asynchronously execute work outside the HTTP request-response cycle. -Celery task queue project logo. +Celery task queue project logo.
Celery is an implementation of the task queue concept. Learn more in the web development chapter or view the table of contents for all topics.
diff --git a/content/posts/160626-django-gunicorn-mint-linux-17.markdown b/content/posts/160626-django-gunicorn-mint-linux-17.markdown index 688adaaf8..8ab8836ff 100644 --- a/content/posts/160626-django-gunicorn-mint-linux-17.markdown +++ b/content/posts/160626-django-gunicorn-mint-linux-17.markdown @@ -3,7 +3,7 @@ slug: python-3-django-gunicorn-linux-mint-17 meta: A step-by-step walkthrough on configuring Linux Mint 17.3 with Python 3, Django and Green Unicorn (Gunicorn). category: post date: 2016-06-26 -modified: 2016-07-22 +modified: 2021-06-17 newsletter: False headerimage: /img/160626-mint-django-gunicorn/header.jpg headeralt: Django, Green Unicorn and Linux Mint logos. Copyright their respective owners. @@ -32,7 +32,7 @@ their current versions as of June 2016 are: * [Python](/why-use-python.html) version [3.5.1](https://www.python.org/downloads/release/python-351/) * [Django](/django.html) web framework version - [1.9.7](https://docs.djangoproject.com/en/1.9/releases/1.9/) + [1.9.x](https://pypi.org/project/Django/1.9.13/) * [Green Unicorn (Gunicorn)](/green-unicorn-gunicorn.html) version [19.6](http://docs.gunicorn.org/en/stable/news.html) From 4d1aaa9775a319ec79dd27c14118282b21ce364d Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Thu, 17 Jun 2021 07:42:52 -0400 Subject: [PATCH 16/42] clean up more broken links --- .../pages/04-web-development/03-flask.markdown | 2 +- .../pages/04-web-development/12-jinja2.markdown | 2 +- .../04-web-development/44-web-apis.markdown | 2 +- .../04-web-development/45-microservices.markdown | 16 ---------------- .../django/django-template-context.markdown | 1 - .../django/django-template-loader.markdown | 1 - 6 files changed, 3 insertions(+), 21 deletions(-) diff --git a/content/pages/04-web-development/03-flask.markdown b/content/pages/04-web-development/03-flask.markdown index 2de57acbb..fd7625f0e 100644 --- a/content/pages/04-web-development/03-flask.markdown +++ b/content/pages/04-web-development/03-flask.markdown @@ -295,7 +295,7 @@ about how to working on your codebase. * [Bean Counter](https://github.com/BouncyNudibranch/bean-counter) is an open source Flask app for tracking coffee. -* [FlaskBB](http://flaskbb.org/) is a Flask app for a discussion forum. +* [FlaskBB](https://flaskbb.org/) is a Flask app for a discussion forum. * [psdash](https://github.com/Jahaja/psdash) is an app built with Flask and psutils to display information about the computer it is running on. diff --git a/content/pages/04-web-development/12-jinja2.markdown b/content/pages/04-web-development/12-jinja2.markdown index 5197fc9d8..75feb4fdc 100644 --- a/content/pages/04-web-development/12-jinja2.markdown +++ b/content/pages/04-web-development/12-jinja2.markdown @@ -71,7 +71,7 @@ open source project author from having to reinvent a new templating style. the template engine. * The official - [Jinja2 template designer documentation](http://jinja.pocoo.org/docs/dev/templates/) + [Jinja2 templates documentation](https://flask.palletsprojects.com/en/2.0.x/tutorial/templates/) is exceptionally useful both as a reference as well as a full read-through to understand how to properly work with template tags. diff --git a/content/pages/04-web-development/44-web-apis.markdown b/content/pages/04-web-development/44-web-apis.markdown index 0981c2743..77ce68888 100644 --- a/content/pages/04-web-development/44-web-apis.markdown +++ b/content/pages/04-web-development/44-web-apis.markdown @@ -43,7 +43,7 @@ Webhooks are important because they enable two-way communication initiation for APIs. Webhook flexibility comes in from their definition by the API user instead of the API itself. -For example, in the [Twilio API](https://www.twilio.com/api) when a text +For example, in the [Twilio API](https://www.twilio.com/docs/api) when a text message is sent to a Twilio phone number Twilio sends an HTTP POST request webhook to the URL specified by the user. The URL is defined in a text box on the number's page on Twilio as shown below. diff --git a/content/pages/04-web-development/45-microservices.markdown b/content/pages/04-web-development/45-microservices.markdown index bdf34a8b9..0b06889e6 100644 --- a/content/pages/04-web-development/45-microservices.markdown +++ b/content/pages/04-web-development/45-microservices.markdown @@ -40,22 +40,6 @@ ease further development and deployment. This approach is called the article is one of the best in-depth explanations for what microservices are and why to consider them as an architectural pattern. -* [Why microservices?](http://dev.otto.de/2016/03/20/why-microservices/) - presents some of the advantages, such as the dramatically increased number - of deployments per day, that a well-done microservices architecture can - provide in the right situation. Many organizational environments won't - allow this level of flexibility but if yours is one that will, it's worth - considering these points. - -* [On monoliths and microservices](http://dev.otto.de/2015/09/30/on-monoliths-and-microservices/) - provides some advice on using microservices in a fairly early stage of - a software project's lifecycle. - -* [Why Microservices?](https://dev.otto.de/2016/03/20/why-microservices/) - presents advantages microservices can bring to an existing monolithic - application where it is clear what needs to be broken down into smaller - components to make it easier to iterate and maintain. - * [Developing a RESTful microservice in Python](http://www.skybert.net/python/developing-a-restful-micro-service-in-python/) is a good story of how an aging Java project was replaced with a microservice built with Python and Flask. diff --git a/content/pages/examples/django/django-template-context.markdown b/content/pages/examples/django/django-template-context.markdown index 5600af98b..9bfe9e562 100644 --- a/content/pages/examples/django/django-template-context.markdown +++ b/content/pages/examples/django/django-template-context.markdown @@ -582,7 +582,6 @@ __author__ = "Bas van Oostveen ", __contributors__ = [ "Antonio Cavedoni " "Stefano J. Attardi ", - "limodou ", "Carlo C8E Miron", "Andre Campos ", "Justin Findlay ", diff --git a/content/pages/examples/django/django-template-loader.markdown b/content/pages/examples/django/django-template-loader.markdown index 6eb9853b6..9098f4881 100644 --- a/content/pages/examples/django/django-template-loader.markdown +++ b/content/pages/examples/django/django-template-loader.markdown @@ -178,7 +178,6 @@ __author__ = "Bas van Oostveen ", __contributors__ = [ "Antonio Cavedoni " "Stefano J. Attardi ", - "limodou ", "Carlo C8E Miron", "Andre Campos ", "Justin Findlay ", From 7193d6904e8dd745f0ffc32064f34a1dc13f5764 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Thu, 17 Jun 2021 10:33:55 -0400 Subject: [PATCH 17/42] fixing a ton more broken or redirected resource links --- .../05-deployment/03-static-content.markdown | 6 +++--- content/pages/05-deployment/04-cdns.markdown | 4 ---- content/pages/05-deployment/09-paas.markdown | 5 ----- .../pages/05-deployment/23-gunicorn.markdown | 4 ++-- .../27-continuous-integration.markdown | 5 ----- .../pages/05-deployment/28-jenkins.markdown | 4 ---- .../32-configuration-management.markdown | 11 ----------- .../05-deployment/38-serverless.markdown | 19 ++++--------------- 8 files changed, 9 insertions(+), 49 deletions(-) diff --git a/content/pages/05-deployment/03-static-content.markdown b/content/pages/05-deployment/03-static-content.markdown index 8c6e88262..7d458e27c 100644 --- a/content/pages/05-deployment/03-static-content.markdown +++ b/content/pages/05-deployment/03-static-content.markdown @@ -21,9 +21,9 @@ Django framework calls these two categories *assets* and *media*. ## Content delivery networks A content delivery network (CDN) is a third party that stores and serves static files. [Amazon CloudFront](http://aws.amazon.com/cloudfront/), -[Akamai](http://www.akamai.com/), and -[Rackspace Cloud Files](http://www.rackspace.com/cloud/public/files/) -are examples of CDNs. The purpose of a CDN is to remove the load of static +[CloudFlare](https://www.cloudflare.com/), [Fastly](https://www.fastly.com/), +and [Akamai](https://www.akamai.com/) are examples of CDNs. The purpose of +a CDN is to remove the load of static file requests from web servers that are handling dynamic web content. For example, if you have an nginx server that handles both static files and acts as a front for a Green Unicorn WSGI server on a 512 megabyte diff --git a/content/pages/05-deployment/04-cdns.markdown b/content/pages/05-deployment/04-cdns.markdown index 027f064d6..89d2f9656 100644 --- a/content/pages/05-deployment/04-cdns.markdown +++ b/content/pages/05-deployment/04-cdns.markdown @@ -29,10 +29,6 @@ servers to improve web app loading speed. [django-storages](https://django-storages.readthedocs.io/en/latest/) library to deploy static assets for a [Django](/django.html) application to a CDN. -* [Building your own CDN for Fun and Profit](https://pasztor.at/blog/building-your-own-cdn) - is a great high-level overview of how CDNs work and shows you how to - create your own, albeit simplified CDN. - * [Do not let your CDN betray you: Use Subresource Integrity](https://hacks.mozilla.org/2015/09/subresource-integrity-in-firefox-43/) describes the security implications for CDNs with unexpectedly modified content and how Subresource Integrity in modern web browsers can mitigate diff --git a/content/pages/05-deployment/09-paas.markdown b/content/pages/05-deployment/09-paas.markdown index 9416e971f..81831f637 100644 --- a/content/pages/05-deployment/09-paas.markdown +++ b/content/pages/05-deployment/09-paas.markdown @@ -156,11 +156,6 @@ running to someone else. on Google Cloud and posits what they may be paying to run their service. -* [PaaS (false) economics](https://blog.drie.co/paas-false-economics-13f72d87b485) - gives some quick back-of-the-envelope calculations on why running your - applications on a PaaS is obviously going to appear more expensive if you - do not take the cost of your own software engineers into the equation. - * Two blog posts on using AWS Autoscaling in [Automatic replacement of Autoscaling nodes with equivalent spot instances](https://mcristi.wordpress.com/2016/04/21/my-approach-at-making-aws-ec2-affordable-automatic-replacement-of-autoscaling-nodes-with-equivalent-spot-instances/) and [Autoscaling nodes: seeing it in action](https://mcristi.wordpress.com/2016/04/27/automatic-replacement-of-autoscaling-nodes-with-equivalent-spot-instances-seeing-it-in-action/) diff --git a/content/pages/05-deployment/23-gunicorn.markdown b/content/pages/05-deployment/23-gunicorn.markdown index e0c8a7f14..1973ab6ff 100644 --- a/content/pages/05-deployment/23-gunicorn.markdown +++ b/content/pages/05-deployment/23-gunicorn.markdown @@ -49,7 +49,7 @@ file with the following contents: It exposes the WSGI callable as a module-level variable named ``application``. For more information on this file, see - https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/ + https://docs.djangoproject.com/en/3.2/howto/deployment/wsgi/ """ import os @@ -115,7 +115,7 @@ perform the request handling. Each worker is independent of the controller. screenshots along the way with what to expect while you are configuring the deployment server. -* The [Django](https://docs.djangoproject.com/en/1.9/howto/deployment/wsgi/gunicorn/) +* The [Django](https://docs.djangoproject.com/en/3.2/howto/deployment/wsgi/gunicorn/) and [Flask](http://flask.pocoo.org/docs/latest/deploying/wsgi-standalone/) documentation each contain instructions for deploying the respective frameworks with Gunicorn. diff --git a/content/pages/05-deployment/27-continuous-integration.markdown b/content/pages/05-deployment/27-continuous-integration.markdown index 835f5589a..ea620e337 100644 --- a/content/pages/05-deployment/27-continuous-integration.markdown +++ b/content/pages/05-deployment/27-continuous-integration.markdown @@ -127,11 +127,6 @@ programming language agnostic. Learn more via the following resources or on uses well done drawings to show how continuous integration and delivery works for testing and managing data. -* [The real difference between CI and CD](https://fire.ci/blog/the-difference-between-ci-and-cd/) - explains what advantages CI provides, what constraints it operates under - (such as total build time) to work well, and how that is different from - the related but distinct concept of continuous delivery. - * [6 top continuous integration tools](https://opensource.com/business/15/7/six-continuous-integration-tools) gives a high level overview of six CI tools from a programming language agnostic perspective. diff --git a/content/pages/05-deployment/28-jenkins.markdown b/content/pages/05-deployment/28-jenkins.markdown index 46a711870..463e1f04c 100644 --- a/content/pages/05-deployment/28-jenkins.markdown +++ b/content/pages/05-deployment/28-jenkins.markdown @@ -77,7 +77,3 @@ used to automate building, [testing](/testing.html) and * [Automated API testing with Jenkins](https://assertible.com/blog/automated-api-testing-with-jenkins) walks through how to use Jenkins to tests your [API](/application-programming-interfaces.html) upon each deployment. - -* [Continuous Delivery with Jenkins and Rollbar](https://rollbar.com/blog/continuous-delivery-with-jenkins/) - is a tutorial on using Jenkins for continuous integration paired with - [Rollbar](/rollbar.html) for tracking deployments and errors. diff --git a/content/pages/05-deployment/32-configuration-management.markdown b/content/pages/05-deployment/32-configuration-management.markdown index 252df484e..a6885787f 100644 --- a/content/pages/05-deployment/32-configuration-management.markdown +++ b/content/pages/05-deployment/32-configuration-management.markdown @@ -59,17 +59,6 @@ management and application deployment tool built in Python. is a fantastically detailed introduction on using Ansible to set up servers. -* [Ansible Text Message Notifications with Twilio SMS](https://www.twilio.com/blog/2014/05/ansible-text-messages-notifications-with-twilio-sms.html) - is my blog post with a detailed example for using the Twilio module in - core Ansible 1.6+. - -* [Python for Configuration Management with Ansible slides](http://www.insom.me.uk/post/pycon-talk.html) -from PyCon UK 2013 - -* [First Steps with Ansible](http://labs.qandidate.com/blog/2013/11/15/first-steps-with-ansible/) - -* [Red Badger on Ansible](http://red-badger.com/blog/2013/06/29/ansible/) - * [Getting Started with Ansible](http://lowendbox.com/blog/getting-started-with-ansible/) * [An introduction to Ansible](https://davidwinter.me/introduction-to-ansible/) diff --git a/content/pages/05-deployment/38-serverless.markdown b/content/pages/05-deployment/38-serverless.markdown index aea641dff..f6a4bb0fd 100644 --- a/content/pages/05-deployment/38-serverless.markdown +++ b/content/pages/05-deployment/38-serverless.markdown @@ -188,21 +188,10 @@ have varying degrees of support for Python. AWS Lambda has production-ready support for Python 2 and 3.7, while Azure and Google Cloud have "beta" support with unclear production-worthiness. The following resources are some comparison articles to help you in your decision-making -process for which platform to learn. - -* [Serverless at scale](https://blog.binaris.com/serverless-at-scale/) - compares the "Big 3" AWS, Azure and Google Cloud in serverless performance. - The author provides some nice data around average response times and - outliers. - -* [Serverless hosting comparison](https://headmelted.com/serverless-showdown-4a771ca561d2) - is a broad overview of documentation, community, pricing and other - notes for the major platforms as well as IBM OpenWhisk and - the [Fission.io](https://fission.io/) project. - -* [Microsoft Azure Functions vs. Google Cloud Functions vs. AWS Lambda](https://cloudacademy.com/blog/microsoft-azure-functions-vs-google-cloud-functions-fight-for-serverless-cloud-domination-continues/) - presents an overview of Azure Functions and how they compare to - Google Cloud Functions and AWS Lambda. +process for which platform to learn. +[Microsoft Azure Functions vs. Google Cloud Functions vs. AWS Lambda](https://cloudacademy.com/blog/microsoft-azure-functions-vs-google-cloud-functions-fight-for-serverless-cloud-domination-continues/) +presents an overview of Azure Functions and how they compare to +Google Cloud Functions and AWS Lambda. ### Serverless vendor lock-in? From bc4c7dccd38494c428f8a13b2f83fada99623ac8 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Tue, 22 Jun 2021 06:42:27 -0400 Subject: [PATCH 18/42] remove broken links --- content/pages/04-web-development/56-web-app-security.markdown | 4 ---- 1 file changed, 4 deletions(-) diff --git a/content/pages/04-web-development/56-web-app-security.markdown b/content/pages/04-web-development/56-web-app-security.markdown index 6d15da25d..1462eb77a 100644 --- a/content/pages/04-web-development/56-web-app-security.markdown +++ b/content/pages/04-web-development/56-web-app-security.markdown @@ -153,10 +153,6 @@ resources can also give you a good overview of how HTTPS works. important technique to use to keep your database passwords and other secrets more secure if the hashed strings are leaked. -* [An in-depth analysis of SSH attacks on Amazon EC2](http://getprismatic.com/story/1409447605839) - shows how important it is to secure your web servers, especially when they are - hosted in IP address ranges that are commonly scanned by malicious actors. - * [Cloud Security Auditing: Challenges and Emerging Approaches](http://www.infoq.com/articles/cloud-security-auditing-challenges-and-emerging-approaches) is a high-level overview of some of security auditing problems that come with cloud deployments. From 2617df406dd19b6349b20cf202c1a56af2715a67 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Thu, 24 Jun 2021 06:34:46 -0400 Subject: [PATCH 19/42] fixing more typos --- .../pages/04-web-development/42-websockets.markdown | 4 ---- content/pages/04-web-development/43-webrtc.markdown | 4 ---- .../pages/04-web-development/48-api-creation.markdown | 10 +--------- .../04-web-development/51-api-integration.markdown | 3 --- content/pages/04-web-development/52-twilio.markdown | 4 ---- .../04-web-development/56-web-app-security.markdown | 2 +- content/pages/05-deployment/02-servers.markdown | 4 ++-- content/pages/05-deployment/19-nginx.markdown | 4 ++-- content/pages/06-devops/18-web-analytics.markdown | 11 ++++++----- 9 files changed, 12 insertions(+), 34 deletions(-) diff --git a/content/pages/04-web-development/42-websockets.markdown b/content/pages/04-web-development/42-websockets.markdown index 5e1f78d64..8c11ce936 100644 --- a/content/pages/04-web-development/42-websockets.markdown +++ b/content/pages/04-web-development/42-websockets.markdown @@ -173,10 +173,6 @@ own project. that demos sending server generated events as well as input from users via a text box input on a form. -* The [realtime codenames game](https://github.com/joshporter1/codenames) - source code is a full-featured example for using WebSockets via - Flask-SocketIO. - * The [python-websockets-example](https://github.com/mattmakai/python-websockets-example) contains code to create a simple web application that provides WebSockets diff --git a/content/pages/04-web-development/43-webrtc.markdown b/content/pages/04-web-development/43-webrtc.markdown index 297c12b9b..e34ac044a 100644 --- a/content/pages/04-web-development/43-webrtc.markdown +++ b/content/pages/04-web-development/43-webrtc.markdown @@ -33,10 +33,6 @@ browser) and server (usually a [web server](/web-servers.html)). at points but overall has a ton of good information that gives a solid overview of the technology. -* [Building a Snapchat-like app with WebRTC in the browser](https://tokbox.com/blog/building-a-snapchat-like-app-with-webrtc-in-the-browser/) - walks through the front end JavaScript for building a photo filter - application using the WebRTC browser APIs. - * [WebRTC issues and how to debug them](https://blog.codeship.com/webrtc-issues-and-how-to-debug-them/) explains the various ways that implementations can go wrong and where to start looking when you run into errors. diff --git a/content/pages/04-web-development/48-api-creation.markdown b/content/pages/04-web-development/48-api-creation.markdown index fb21280d5..aa49c5aa1 100644 --- a/content/pages/04-web-development/48-api-creation.markdown +++ b/content/pages/04-web-development/48-api-creation.markdown @@ -130,12 +130,8 @@ equivalent of browser testing in the web application world. compatibility and a whole slew of other great advice for developers and API designers. -* [Self-descriptive, isn't. Don't assume anything.](http://www.bizcoder.com/self-descriptive-isn-t-don-t-assume-anything) - is an appeal that metadata makes a difference in whether APIs are descriptive - or not. - * [Designing the Artsy API](http://artsy.github.io/blog/2014/09/12/designing-the-public-artsy-api/) - has their recommendations list for building an API based on their recent + has their recommendations list for building an API based on their experiences. * Hacker News had a discussion on @@ -212,10 +208,6 @@ equivalent of browser testing in the web application world. [Serpy](https://github.com/clarkduvall/serpy) and [wrote a blog post with the results of its performance](https://engineering.betterworks.com/2015/09/04/ditching-django-rest-framework-serializers-for-serpy/). -* [Designing a Web API](http://restlet.com/company/blog/2015/03/16/api-design-designing-a-web-api/) - gives a detailed walkthrough of concepts and design decisions you need - to make when building an API. - * Microsoft's [REST API Guidelines](https://github.com/Microsoft/api-guidelines/blob/master/Guidelines.md) are a detailed set of considerations for when you are building your own diff --git a/content/pages/04-web-development/51-api-integration.markdown b/content/pages/04-web-development/51-api-integration.markdown index 09c6e8099..ee646bfa9 100644 --- a/content/pages/04-web-development/51-api-integration.markdown +++ b/content/pages/04-web-development/51-api-integration.markdown @@ -63,9 +63,6 @@ across many implementation areas. is a nice tutorial for easily re-executing failed HTTP requests with the Requests library. -* My DjangoCon 2013 talk dove into - "[Making Django Play Nice With Third Party Services](http://www.youtube.com/watch?v=iGP8DQIqxXs)." - * If you're looking for a fun project that uses two web APIs within a Django application, try out this tutorial to [Build your own Pokédex with Django, MMS and PokéAPI](https://www.twilio.com/blog/2014/11/build-your-own-pokedex-with-django-mms-and-pokeapi.html). diff --git a/content/pages/04-web-development/52-twilio.markdown b/content/pages/04-web-development/52-twilio.markdown index 9ba51f456..e038e3907 100644 --- a/content/pages/04-web-development/52-twilio.markdown +++ b/content/pages/04-web-development/52-twilio.markdown @@ -77,10 +77,6 @@ for fellow developers. [Twilio SMS API via some Python code](https://www.twilio.com/docs/quickstart/python/sms) to send a text message with the results. -* IBM's Bluemix blog contains a nice tutorial on building an - [IoT Python app with a Raspberry Pi and Bluemix](https://developer.ibm.com/bluemix/2015/04/02/tutorial-using-a-raspberry-pi-python-iot-twilio-bluemix/) - that uses Twilio to interact with the Raspberry Pi. - * The [Python tag on the Twilio blog](https://www.twilio.com/blog/tag/python) provides walkthroughs for [Django](https://www.twilio.com/blog/2015/12/city-chat-with-python-django-and-twilio-ip-messaging.html), diff --git a/content/pages/04-web-development/56-web-app-security.markdown b/content/pages/04-web-development/56-web-app-security.markdown index 1462eb77a..992091dbf 100644 --- a/content/pages/04-web-development/56-web-app-security.markdown +++ b/content/pages/04-web-development/56-web-app-security.markdown @@ -110,7 +110,7 @@ resources can also give you a good overview of how HTTPS works. learn about web browser internals, session attacks, fingerprinting, HTTPS and many other fundamental topics. -* [The SaaS CTO Security Checklist](https://cto-security-checklist.sqreen.io/) +* [The SaaS CTO Security Checklist Redux](https://www.goldfiglabs.com/guide/saas-cto-security-checklist/) is an awesome list of steps for securing your infrastructure and employees as well as what stage and size company it is recommended that you put those procedures in place. diff --git a/content/pages/05-deployment/02-servers.markdown b/content/pages/05-deployment/02-servers.markdown index 90bb07951..f66f68977 100644 --- a/content/pages/05-deployment/02-servers.markdown +++ b/content/pages/05-deployment/02-servers.markdown @@ -128,8 +128,8 @@ provides a unified API for many cloud service providers. * [Amazon Web Services has official documentation](http://aws.amazon.com/python/) for running Python web applications. -* [boto](https://github.com/boto/boto) is an extensive and well-tested -Python library for working with Amazon Web Services. +* [boto3](https://github.com/boto/boto3) is an extensive and well-tested + Python library for working with Amazon Web Services. * [Poseidon](https://github.com/changhiskhan/poseidon) is a Python commandline interface for managing Digital Ocean droplets (servers). diff --git a/content/pages/05-deployment/19-nginx.markdown b/content/pages/05-deployment/19-nginx.markdown index 98626e467..fc37f678d 100644 --- a/content/pages/05-deployment/19-nginx.markdown +++ b/content/pages/05-deployment/19-nginx.markdown @@ -63,7 +63,7 @@ to make sure you are avoiding the most common security errors that plague HTTP(S) configurations. * [HTTPS with Let's Encrypt and nginx](https://botleg.com/stories/https-with-lets-encrypt-and-nginx/) - walks throough installing a free SSL certificate from Let's Encrypt + walks through installing a free SSL certificate from Let's Encrypt to secure HTTP connects to your nginx server via HTTPS. * The [Nginx Config](https://nginxconfig.io/) tool can generate strong @@ -101,7 +101,7 @@ several years. * [Test-driving web server configuration](https://gdstechnology.blog.gov.uk/2015/03/25/test-driving-web-server-configuration/) tells a good story for how to iteratively apply configuration changes, such - as routing traffic to [Piwik](http://piwik.org/) for + as routing traffic to [Matoma](https://matomo.org/) for [web analytics](/web-analytics.html), reverse proxying to backend application servers and terminately TLS connections appropriately. It is impressive to read a well-written softare development article like diff --git a/content/pages/06-devops/18-web-analytics.markdown b/content/pages/06-devops/18-web-analytics.markdown index 28c0a58a9..b24e32439 100644 --- a/content/pages/06-devops/18-web-analytics.markdown +++ b/content/pages/06-devops/18-web-analytics.markdown @@ -38,9 +38,10 @@ application before taking some action, such as purchasing your service. ## Open source web analytics projects -* [Piwik](http://piwik.org/) is a web analytics platform you can host yourself. - Piwik is a solid choice if you cannot use Google Analytics or want to - customize your own web analytics platform. +* [Matoma](https://matomo.org/) (formerly Piwik), is a web analytics + platform that you can host yourself. Matoma is a solid choice if you + cannot use Google Analytics or want to customize your own web analytics + software. * [Shynet](https://github.com/milesmcc/shynet) is a lightweight, privacy-friendly cookie-free web analytics application written in Python. @@ -142,8 +143,8 @@ application before taking some action, such as purchasing your service. ## Web analytics learning checklist -1. Add Google Analytics or Piwik to your application. Both are free and while - Piwik is not as powerful as Google Analytics you can self-host the +1. Add Google Analytics or Matoma to your application. Both are free and while + Matoma is not as powerful as Google Analytics you can self-host the application which is the only option in many environments. 1. Think critically about the factors that will make your application From 1eede9a44e0680b7ae712d08286b5a240247d89c Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Fri, 25 Jun 2021 10:47:46 -0400 Subject: [PATCH 20/42] fixing more links --- content/pages/04-web-development/17-css.markdown | 8 ++++++++ content/pages/05-deployment/09-paas.markdown | 6 ------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/content/pages/04-web-development/17-css.markdown b/content/pages/04-web-development/17-css.markdown index 96c1b3ec8..b248828f8 100644 --- a/content/pages/04-web-development/17-css.markdown +++ b/content/pages/04-web-development/17-css.markdown @@ -119,6 +119,14 @@ web application's design. provides advice on how to write simpler, easier-to-maintain CSS code to reduce your need to rely on CSS preprocessors and build pipelines. +* [How to Detect Unused CSS or JavaScript](https://javascript.plainenglish.io/detect-unused-css-or-javascript-in-your-code-8d200ef07e50) + explains how to use [Chrome DevTools](https://developer.chrome.com/docs/devtools/) + to analyze a page's CSS and identify parts that are not used. Note that + even though a specific page does not use that CSS (or JS), there might + be another page that uses the same CSS files and *does* use that "unused" + code, so test your pages before and after making the changes to ensure + you did not inadvertently break something else! + * [CSS refresher notes](https://github.com/vasanthk/css-refresher-notes) is incredibly helpful if you've learned CSS in bits and pieces along the way and you now want to fill in the gaps in your knowledge. diff --git a/content/pages/05-deployment/09-paas.markdown b/content/pages/05-deployment/09-paas.markdown index 81831f637..c89a37439 100644 --- a/content/pages/05-deployment/09-paas.markdown +++ b/content/pages/05-deployment/09-paas.markdown @@ -69,11 +69,6 @@ of controlling and modifying the project for your own applications, but prevents you from offloading the responsibility of keeping servers running to someone else. -* [Kel](http://www.kelproject.com/) uses Kubernetes as a foundation - for a custom self-hosted PaaS. Note that it was created by Eldarion, - which had one of the first Python-specific PaaS offerings on the - market around the time that Heroku was launched. - * [Dokku](http://dokku.viewdocs.io/dokku/) builds on Docker and has hooks for plugins to extend the small core of the project and customize deployments for your applications. @@ -82,7 +77,6 @@ running to someone else. designed to run on top of AWS services. - ## Platform-as-a-service resources * [The differences between IaaS, PaaS and SaaS](https://www.engineyard.com/blog/the-differences-between-iaas-paas-and-saas-and-when-to-use-each) explains the abstract layer differences among "X-as-a-service" offering From b03fccce4d7d2395520ffdb56ceeb6f7d1eb25c3 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Sun, 27 Jun 2021 14:52:24 -0400 Subject: [PATCH 21/42] removing additional broken links --- content/pages/05-deployment/19-nginx.markdown | 4 ---- .../pages/05-deployment/32-configuration-management.markdown | 2 -- content/pages/05-deployment/36-docker.markdown | 4 ---- 3 files changed, 10 deletions(-) diff --git a/content/pages/05-deployment/19-nginx.markdown b/content/pages/05-deployment/19-nginx.markdown index fc37f678d..3f17e6524 100644 --- a/content/pages/05-deployment/19-nginx.markdown +++ b/content/pages/05-deployment/19-nginx.markdown @@ -116,10 +116,6 @@ several years. as well as the Pagespeed module that Google released for both Nginx and the [Apache HTTP Server](/apache-http-server.html). -* [Nginx for Developers: An Introduction](http://carrot.is/coding/nginx_introduction) - provides the first steps to getting an initial Nginx configuration up and - running. - * [A faster Web server: ripping out Apache for Nginx](http://arstechnica.com/business/2011/11/a-faster-web-server-ripping-out-apache-for-nginx/) explains how Nginx can be used instead of Apache in some cases for better performance. diff --git a/content/pages/05-deployment/32-configuration-management.markdown b/content/pages/05-deployment/32-configuration-management.markdown index a6885787f..d4b43ec30 100644 --- a/content/pages/05-deployment/32-configuration-management.markdown +++ b/content/pages/05-deployment/32-configuration-management.markdown @@ -78,8 +78,6 @@ management and application deployment tool built in Python. * [Idempotence, convergence, and other silly fancy words we often use](https://groups.google.com/forum/#!msg/Ansible-project/WpRblldA2PQ/lYDpFjBXDlsJ) -* [Testing with Jenkins, Docker and Ansible](http://blog.mist.io/post/82383668190/move-fast-and-dont-break-things-testing-with) - ## Application dependencies learning checklist 1. Learn about configuration management in the context of deployment diff --git a/content/pages/05-deployment/36-docker.markdown b/content/pages/05-deployment/36-docker.markdown index 6fe74a04c..f133b70f0 100644 --- a/content/pages/05-deployment/36-docker.markdown +++ b/content/pages/05-deployment/36-docker.markdown @@ -77,10 +77,6 @@ on Amazon Web Services, Google Compute Engine, Linode, Rackspace or elsewhere. is a short tutorial for creating a Docker container with a specific configuration. -* [10 things to avoid in Docker containers](http://developerblog.redhat.com/2016/02/24/10-things-to-avoid-in-docker-containers/) - provides a lot of "don'ts" that you'll want to consider before bumping - up against the limitations of how containers should be used. - * [Docker Internals](http://docker-saigon.github.io/post/Docker-Internals/) presents Linux containers and how Docker uses them as its base for how the project works. This article is a great way to bridge what you know about Docker with a more From 2c35cfbe35ea4cb6f1362721d538822ef2c143ab Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Mon, 28 Jun 2021 11:44:47 -0400 Subject: [PATCH 22/42] remove broken performance link --- content/pages/06-devops/06-web-app-performance.markdown | 4 ---- 1 file changed, 4 deletions(-) diff --git a/content/pages/06-devops/06-web-app-performance.markdown b/content/pages/06-devops/06-web-app-performance.markdown index faa195727..8a954546f 100644 --- a/content/pages/06-devops/06-web-app-performance.markdown +++ b/content/pages/06-devops/06-web-app-performance.markdown @@ -49,10 +49,6 @@ database queries, page size and many other factors. is a 20 minute code-first demo that shows how to get a realistic estimate for how many requests per second your web application will be able to handle. -* [How to Interpret Site Performance Tests](https://fly.io/articles/how-to-understand-performance-tests/) - covers the difference between client, page and connection speed tests - as well as a bit on caching performance. - * [Practical scaling techniques for websites](https://hackernoon.com/practical-scaling-techniques-for-web-sites-554a38dbd492) examines how to improve your website performance with asynchronous [task queues](/task-queues.html), [database](/databases.html) optimization From 1136a5a80d011c6ba606fbafcd211606eb3a1a87 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Tue, 29 Jun 2021 13:49:55 -0400 Subject: [PATCH 23/42] removing dead links --- .../05-deployment/37-kubernetes.markdown | 2 +- .../05-deployment/38-serverless.markdown | 32 ++++++------------- .../pages/06-devops/01-monitoring.markdown | 7 +--- .../pages/06-devops/18-web-analytics.markdown | 4 --- 4 files changed, 11 insertions(+), 34 deletions(-) diff --git a/content/pages/05-deployment/37-kubernetes.markdown b/content/pages/05-deployment/37-kubernetes.markdown index 039c1b270..96e69ef62 100644 --- a/content/pages/05-deployment/37-kubernetes.markdown +++ b/content/pages/05-deployment/37-kubernetes.markdown @@ -88,7 +88,7 @@ applications. cost-benefit analysis to make sure the tool's scability, reliability and related functionality will outweigh the downsides. -* [How Zolando manages 140+ Kubernetes clusters](https://srcco.de/posts/how-zalando-manages-140-kubernetes-clusters.html) +* [How Zalando manages 140+ Kubernetes clusters](https://srcco.de/posts/how-zalando-manages-140-kubernetes-clusters.html) covers the architecture, monitoring and workflow of a team that has to run a decent number of clusters for their development teams. diff --git a/content/pages/05-deployment/38-serverless.markdown b/content/pages/05-deployment/38-serverless.markdown index f6a4bb0fd..9dbb4a663 100644 --- a/content/pages/05-deployment/38-serverless.markdown +++ b/content/pages/05-deployment/38-serverless.markdown @@ -45,9 +45,8 @@ These implementations are under significant active development and not all of them have Python support. * [AWS Lambda](/aws-lambda.html) is the current leader among serverless - compute implementations. It has support for both - [Python 2.7](/blog/aws-lambda-python-2-7.html) and - [Python 3.6/3.7](/blog/aws-lambda-python-3-6.html). + compute implementations. It has support for + [Python 3.x](/blog/aws-lambda-python-3-6.html). * Azure Functions has second-class citizen support for Python. It's supposed to be possible but @@ -62,11 +61,8 @@ and not all of them have Python support. * [Google Cloud Functions](/google-cloud-functions.html) currently only supports JavaScript code execution. -* Webtask.io also only supports JavaScript but there is a cool - *prototype* project named [webtask-pytask](https://github.com/tehsis/webtask-pytask) - to run Python code in the browser via webtask. This demo is definitely not - for production code use but awesome to see what the programming community - can put together using existing code and services. +* [Webtask.io](https://webtask.io/) started as a JavaScript service but + now also has a Python runtime as well. ### Serverless frameworks @@ -91,8 +87,6 @@ include: ([source code](https://github.com/aws/chalice)) is built by the AWS team specifically for Python applications. -* [Apex](http://apex.run/) ([source code](https://github.com/apex/apex)) - ### General serverless resources Serverless concepts and implementations are still in their early @@ -198,16 +192,8 @@ Google Cloud Functions and AWS Lambda. There is some concern by organizations and developers about vendor lock-in on serverless platforms. It is unclear if portability is worse for serverless than other infrastructure-as-a-service pieces, but still worth -thinking about ahead of time. These resources provide additional -perspectives on lock-in and using multiple cloud providers. - -* [On Serverless, Multi-Cloud, and Vendor Lock In](https://blog.symphonia.io/on-serverless-multi-cloud-and-vendor-lock-in-da930b3993f) - is an opinion piece that for *most* cases the additional work of - going multi-cloud is not worth the tradeoffs, therefore at this time - it's better to go for a single vendor such as AWS or Azure and optimize - on that platform. - -* [Why vendor lock-in with serverless isn’t what you think it is](https://medium.com/@PaulDJohnston/why-vendor-lock-in-with-serverless-isnt-what-you-think-it-is-d6be40fa9ca9) - recommends using a single vendor for now and stop worrying about - hedging your bets because it typically makes your infrastructure - significantly more complex. +thinking about ahead of time. +[Why vendor lock-in with serverless isn’t what you think it is](https://medium.com/@PaulDJohnston/why-vendor-lock-in-with-serverless-isnt-what-you-think-it-is-d6be40fa9ca9) +is a piece on this topic that recommends using a single vendor for +now and for organizations to stop worrying about hedging their bets +because it typically makes infrastructure significantly more complex. diff --git a/content/pages/06-devops/01-monitoring.markdown b/content/pages/06-devops/01-monitoring.markdown index 95efe2cf4..50021eecf 100644 --- a/content/pages/06-devops/01-monitoring.markdown +++ b/content/pages/06-devops/01-monitoring.markdown @@ -112,7 +112,7 @@ Application Performance Monitoring (APM) * [New Relic](http://newrelic.com/) provides application and database monitoring as well as plug ins for capturing and analyzing data about - other devleoper tools in your stack, such as [Twilio](/twilio.html). + other developer tools in your stack, such as [Twilio](/twilio.html). * [Opbeat](https://opbeat.com) Built for django. Opbeat combines performance metrics, release tracking, and error logging into a single simple service. * [Scout](https://scoutapp.com/python-monitoring) monitors the performance of Django and Flask apps, auto-instrumenting views, SQL queries, templates, and more. @@ -146,11 +146,6 @@ Incident Management * [The Virtues of Monitoring](http://www.paperplanes.de/2011/1/5/the_virtues_of_monitoring.html) -* [Effortless Monitoring with collectd, Graphite, and Docker](http://blog.docker.io/2013/07/effortless-monitoring-with-collectd-graphite-and-docker/) - -* [Practical Guide to StatsD/Graphite Monitoring](http://matt.aimonetti.net/posts/2013/06/26/practical-guide-to-graphite-monitoring/) - is a detailed guide with code examples for monitoring infrastructure. - * Bit.ly describes the "[10 Things They Forgot to Monitor](http://word.bitly.com/post/74839060954/ten-things-to-monitor)" beyond the standard metrics such as disk & memory usage. diff --git a/content/pages/06-devops/18-web-analytics.markdown b/content/pages/06-devops/18-web-analytics.markdown index b24e32439..6430b1057 100644 --- a/content/pages/06-devops/18-web-analytics.markdown +++ b/content/pages/06-devops/18-web-analytics.markdown @@ -110,10 +110,6 @@ application before taking some action, such as purchasing your service. is not for everyone but it is really useful if you want to avoid the Google data trap. -* This beginner's guide to - [math and stats behind web analytics](http://www.seotakeaways.com/beginners-guide-maths-stats-web-analytics/) - provides some context for understanding and reasoning about web traffic. - * [An Analytics Primer for Developers](https://hacks.mozilla.org/2015/03/an-analytics-primer-for-developers/) by Mozilla explains what to track, choosing an analytics platform and how to serve up the analytics JavaScript asynchronously. From 29fe5f2cbbf8e0543b056706ffc305a2b1dd8674 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Thu, 1 Jul 2021 09:46:17 -0400 Subject: [PATCH 24/42] cleaning up more broken links --- content/pages/05-deployment/38-serverless.markdown | 4 ++-- content/pages/05-deployment/39-aws-lambda.markdown | 9 --------- content/pages/06-devops/00-devops.markdown | 14 +++++++------- 3 files changed, 9 insertions(+), 18 deletions(-) diff --git a/content/pages/05-deployment/38-serverless.markdown b/content/pages/05-deployment/38-serverless.markdown index 9dbb4a663..a5236c280 100644 --- a/content/pages/05-deployment/38-serverless.markdown +++ b/content/pages/05-deployment/38-serverless.markdown @@ -58,8 +58,8 @@ and not all of them have Python support. [Apache OpenWhisk](https://github.com/openwhisk/openwhisk) open source project. -* [Google Cloud Functions](/google-cloud-functions.html) currently - only supports JavaScript code execution. +* [Google Cloud Functions](/google-cloud-functions.html) has + [native Python 3.x runtimes](https://cloud.google.com/functions/docs/concepts/python-runtime). * [Webtask.io](https://webtask.io/) started as a JavaScript service but now also has a Python runtime as well. diff --git a/content/pages/05-deployment/39-aws-lambda.markdown b/content/pages/05-deployment/39-aws-lambda.markdown index e775cc20b..80efa5ef7 100644 --- a/content/pages/05-deployment/39-aws-lambda.markdown +++ b/content/pages/05-deployment/39-aws-lambda.markdown @@ -52,10 +52,6 @@ has support for both Python 2.7, 3.6 and 3.7. provides a screen capture of one developer deploying their application to Lambda. -* [Automated SQL Injection Testing of Serverless Functions On a Shoestring Budget (and Some Good Music)](https://www.puresec.io/blog/automated-sql-injection-testing-of-serverless-functions-on-a-shoestring-budget-and-some-good-music) - is an awesome operational security post that uses Python to test - for SQL injection vulnerabilities in serverless functions on AWS Lambda. - * [Building Scikit-Learn For AWS Lambda](https://serverlesscode.com/post/scikitlearn-with-amazon-linux-container/) follows up on the [Using Scikit-Learn In AWS Lambda](https://serverlesscode.com/post/deploy-scikitlearn-on-lamba/) @@ -76,11 +72,6 @@ has support for both Python 2.7, 3.6 and 3.7. guide created by a developer who used all of these bits to learn AWS services herself. -* [AWS Lambda Serverless Reference Architectures](http://www.allthingsdistributed.com/2016/06/aws-lambda-serverless-reference-architectures.html) - provides blueprints with diagrams of common architecture patterns that - developers use for their mobile backend, file processing, stream - processing and web application projects. - * [Security Overview of AWS Lambda](https://d1.awsstatic.com/whitepapers/Overview-AWS-Lambda-Security.pdf) (PDF file) covers their "Shared Responsibility Model" for security and compliance. Although the paper bills itself as an in-depth look at diff --git a/content/pages/06-devops/00-devops.markdown b/content/pages/06-devops/00-devops.markdown index 722ca59f1..f6053c2e4 100644 --- a/content/pages/06-devops/00-devops.markdown +++ b/content/pages/06-devops/00-devops.markdown @@ -35,8 +35,8 @@ tools and services for DevOps environments. which when used properly can enable continuous software delivery. * For an Atlassian-centric perspective on tooling, take a look at - this post on how to - [choose the right DevOps tools](http://blogs.atlassian.com/2016/03/how-to-choose-devops-tools/) + this guide on how to + [choose the right DevOps tools](https://www.atlassian.com/devops/devops-tools) which is biased towards their tools but still has some good insight such as using automated testing to provide immediate awareness of defects that require fixing. @@ -47,10 +47,10 @@ The following resources give advice and approaches for building the right teams, culture, processes and tools into software development organizations. * [DevOps vs. Platform Engineering](https://alexgaynor.net/2015/mar/06/devops-vs-platform-engineering/) - considers DevOps an ad hoc approach to developing software while building - a platform is a strict contract. I see this as "DevOps is a process", - while a "platform is code". Running code is better than any organizational - process. + considers DevOps to be an ad hoc approach to developing software while + building a platform is a strict contract. I see this as "DevOps is a + process", while a "platform is code". Running code is better than any + organizational process. * The open source [PagerDuty Incident Response guide](https://response.pagerduty.com/) is the @@ -58,7 +58,7 @@ teams, culture, processes and tools into software development organizations. their services running and putting them out for other developers to consume. Highly recommended. -* [Introduction to DevOps and Software Delivery Performance](https://www.stridenyc.com/blog/introduction-to-devops-and-software-delivery-performance) +* [Introduction to DevOps and Software Delivery Performance](https://www.stridenyc.com/blog/devops-and-software-delivery-performance) explains the four key delivery metrics of Delivery Lead Time, Deployment Frequency, Time to Restore Service, and Change Fail Rate, and then gives a high-level overview of technical, process and From 7851a3f059fddba28f7fff539a2a22dd81251c70 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Thu, 1 Jul 2021 09:51:34 -0400 Subject: [PATCH 25/42] fixing typos --- content/pages/06-devops/14-logging.markdown | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/content/pages/06-devops/14-logging.markdown b/content/pages/06-devops/14-logging.markdown index 3fa5b0e30..9738d98fc 100644 --- a/content/pages/06-devops/14-logging.markdown +++ b/content/pages/06-devops/14-logging.markdown @@ -55,8 +55,9 @@ certain threshold. There are libraries for most major languages, including python. Saves data in Elasticache. -* [Logstash](http://logstash.net/) Similar to Graylog2, logstash offers - features to programmatically configure log data workflows. +* [Logstash](https://www.elastic.co/guide/en/logstash/current/index.html). + Similar to Graylog2, logstash offers features to programmatically + configure log data workflows. * [Scribe](https://github.com/facebook/scribe) A project written by Facebook to aggregate logs. It's designed to run on multiple servers and scale with @@ -112,7 +113,7 @@ certain threshold. * [Good logging practice in Python](http://victorlin.me/posts/2012/08/26/good-logging-practice-in-python) shows how to use the standard library to log data from your application. Definitely worth a read as most applications do not log nearly enough - output to help debuggin when things go wrong, or to determine if something + output to help debugging when things go wrong, or to determine if something is going wrong. * [Structured Logging: The Best Friend You’ll Want When Things Go Wrong](https://engineering.grab.com/structured-logging) From 85e98bcab3a492400154b974d0fa298ded8e9645 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Tue, 24 Aug 2021 16:32:29 -0400 Subject: [PATCH 26/42] new blog post and update changelog --- content/pages/05-deployment/04-cdns.markdown | 4 + content/pages/meta/00-change-log.markdown | 4 + ...ance-monitoring-aws-lambda-sentry.markdown | 262 ++++++++++++++++++ .../210823-sentry-apm-lambda/arn-region.png | Bin 0 -> 57149 bytes .../layer-with-arn.png | Bin 0 -> 115791 bytes .../performance-results.jpg | Bin 0 -> 146212 bytes .../210823-sentry-apm-lambda/performance.jpg | Bin 0 -> 120136 bytes .../sentry-dsn-string.png | Bin 0 -> 384533 bytes ...onitoring-aws-lambda-functions-sentry.html | 7 + 9 files changed, 277 insertions(+) create mode 100644 content/posts/210823-performance-monitoring-aws-lambda-sentry.markdown create mode 100644 static/img/210823-sentry-apm-lambda/arn-region.png create mode 100644 static/img/210823-sentry-apm-lambda/layer-with-arn.png create mode 100644 static/img/210823-sentry-apm-lambda/performance-results.jpg create mode 100644 static/img/210823-sentry-apm-lambda/performance.jpg create mode 100644 static/img/210823-sentry-apm-lambda/sentry-dsn-string.png create mode 100644 theme/templates/blog/application-performance-monitoring-aws-lambda-functions-sentry.html diff --git a/content/pages/05-deployment/04-cdns.markdown b/content/pages/05-deployment/04-cdns.markdown index 89d2f9656..6f59ac4e8 100644 --- a/content/pages/05-deployment/04-cdns.markdown +++ b/content/pages/05-deployment/04-cdns.markdown @@ -16,6 +16,10 @@ servers to improve web app loading speed. is a fantastic post that goes into great technical detail on how CDNs and caching work. +* [The 5 hour CDN](https://fly.io/blog/the-5-hour-content-delivery-network/) + explains the basics of what CDNs are and how they are a combination of + many standard web server components, but used globally and at scale. + * [MaxCDN vs CloudFlare vs Amazon CloudFront vs Akamai Edge vs Fastly](https://www.codeinwp.com/blog/maxcdn-vs-cloudflare-vs-cloudfront-vs-akamai-edge-vs-fastly/) compares and contrasts the most popular CDN services based on features, performance and pricing. Note diff --git a/content/pages/meta/00-change-log.markdown b/content/pages/meta/00-change-log.markdown index f73ac97fc..4e19b4cb0 100644 --- a/content/pages/meta/00-change-log.markdown +++ b/content/pages/meta/00-change-log.markdown @@ -14,6 +14,10 @@ view commit-level changes via the on GitHub. ## 2021 +### August +* New blog post on + [Application Performance Monitoring AWS Lambda Functions with Sentry](/blog/application-performance-monitoring-aws-lambda-functions-sentry.html). + ### June * Fix broken links across the site. It's a real shame people and companies don't use 301 redirects more often rather than just breaking their URL structures. diff --git a/content/posts/210823-performance-monitoring-aws-lambda-sentry.markdown b/content/posts/210823-performance-monitoring-aws-lambda-sentry.markdown new file mode 100644 index 000000000..40cf73c7a --- /dev/null +++ b/content/posts/210823-performance-monitoring-aws-lambda-sentry.markdown @@ -0,0 +1,262 @@ +title: Application Performance Monitoring AWS Lambda Functions with Sentry +slug: application-performance-monitoring-aws-lambda-functions-sentry +meta: Learn how to use Sentry Application Performance Monitoring on AWS Lambda. +category: post +date: 2021-08-23 +modified: 2021-08-25 +newsletter: False +headerimage: /img/headers/python-lambda-sentry.jpg +headeralt: The Python, AWS Lambda and Sentry logos are copyright their respective owners. + + +[Amazon Web Services (AWS) Lambda](/aws-lambda.html) is a usage-based +computing infrastructure service that can execute +[Python 3](/why-use-python.html) code. One of the challenges of this +environment is ensuring efficient performance of your Lambda Functions. +Application performance monitoring (APM) is particularly useful in these +situations because you are billed based on how long you use the +resources. + +In this post we will install and configure +[Sentry's APM](https://sentry.io/for/performance/) that works via a +[Lambda layer](https://docs.aws.amazon.com/lambda/latest/dg/invocation-layers.html). +Note that if you are looking for error monitoring rather than performance +monitoring, take a look at +[How to Monitor Python Functions on AWS Lambda with Sentry](/blog/monitor-python-functions-aws-lambda-sentry.html) +rather than following this post. + + +## First steps with AWS Lambda +A local [development environment](/development-environments.html) is not +required to follow this tutorial because all of the coding and configuration +can happen in a web browser through the +[AWS Console](https://console.aws.amazon.com/console/). + +[Sign into your existing AWS account](https://aws.amazon.com/console) +or sign up for a [new account](https://aws.amazon.com/). Lambda +gives you the first 1 million requests for free so that you can execute +basic applications without no or low cost. + +The AWS Lambda landing page. + +When you log into your account, use the search box to enter +"lambda" and select "Lambda" when it appears to get to the right +page. + +Use the search bar to find AWS Lambda. + +If you have already used Lambda before, you will see your existing Lambda +functions in a searchable table. We're going to create a new function so +click the "Create function" button. + +Click the create function button. + +The create function page will give you several options for building a +Lambda function. + +The create function details page. + +Click the "Browse Serverless App Repository" selection box, then choose +the "hello-world-python3" starter app from within the +"Public applications" section. + +The create function details page. + +The hello-world-python3 starter app details page should look something +like the following screen: + +Hello world Python3 example app and Lambda function. + +Fill in some example text such as "test" under `IdentityNameParameter` +and click the "Deploy" button: + +Click the deploy button to use the starter app. + +The function will now be deployed. As soon as it is ready we can +customize it and test it out before adding Sentry to capture any errors +that occur during execution. + +Go back to the Lambda functions main page and select your new deployed +starter app from the list. + +List of AWS Lambda functions you have created. + +Find the orange "Test" button with a down arrow next to it like you +see in the image below, and then click the down arrow. Select +"Configure Test Event". + +Configure the test event. + +Fill in the Event name as "FirstTest" or something similar, then +press the "Create" button at the bottom of the modal window. + +Click the "Test" button and it will run the Lambda function with +the parameters from that new test event. You should see something +like the following output: + +```python +Response +"value1" + +Function Logs +START RequestId: 62fa2f25-669c-47b7-b4e7-47353b0bd914 Version: $LATEST +value1 = value1 +value2 = value2 +value3 = value3 +END RequestId: 62fa2f25-669c-47b7-b4e7-47353b0bd914 +REPORT RequestId: 62fa2f25-669c-47b7-b4e7-47353b0bd914 Duration: 0.30 ms Billed Duration: 1 ms Memory Size: 128 MB Max Memory Used: 43 MB Init Duration: 1.34 ms + +Request ID +62fa2f25-669c-47b7-b4e7-47353b0bd914 +``` + +The code was successfully executed, so let's add Sentry's performance +monitoring and test some code that uses it. + + +## Performance monitoring with Sentry +Go to [Sentry.io's homepage](https://sentry.io). + +Sentry.io homepage where you can sign up for a free account. + +Sign into your account or sign up for a new free account. You will be at +the main account dashboard after logging in or completing the Sentry sign +up process. + +Select "Performance" on the left navigation bar, it will take you to the +performance monitoring page. + +Click the 'performance' button on the left side nav. + +Click "Start Setup" then go back over to AWS Lambda to complete the +steps for adding Sentry's Python layer to your Lambda function. + +The easiest way to add Sentry to Lambda for this application +is to configure an +[AWS Lambda Layer](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) +with the necessary dependency for Sentry. Sentry has concise +[documentation on adding via Lambda Layers](https://docs.sentry.io/platforms/python/guides/aws-lambda/layer/) +so we will walk through that way to configure it and test it +out. + +Scroll down to the "Layers" section while in your Lambda +function configuration. Click the "Add a layer" button": + +Add Lambda layer. + +In the "Add layer" screen, select the "Specify an ARN" option. + +Select Specify ARN in the Add Layer screen. + +Now to specify the Amazon Resource Name (ARN), we need to use +the Sentry documentation to get the right configuration string. + +US-East-1 is the oldest and most commonly-used region so I'll +use that here in this tutorial but you should check which one +you are in if you are not certain. + +Select the AWS for the ARN string. + +Copy that value into the Lambda Layer configuration, like this: + +Select the AWS for the ARN string. + +Then press the "Add" button. You now have the Sentry dependency +in your environment so code that relies upon that library can be +used in the Lambda function. + + +## Testing performance monitoring +Let's change our Python code in the Lambda function and test out +the APM agent. + +Make sure you are signed into your Sentry account and go to +[this specific AWS Lambda set up guide](https://docs.sentry.io/platforms/python/guides/aws-lambda/). + +You will see a "DSN string" that we need to set as an environment +variable on AWS Lambda to finish our setup. Copy the string that +matches your project as shown on that page in the highlighted green +section: + +Copy the Sentry DSN string so we can export it as an environment variable. + +We will +[use environment variables on AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html) +to store and access values like this Sentry DSN key. + +Go into the Lambda console to create a new environment variable. To do +that, click the "Configuration" tab within Lambda like you see here: + +Click the Lambda Configuration tab. + +Then click "Edit" and add a new environment variable with the key of `SENTRY_DSN` +and the value of the DSN string that you copied from the Sentry screen. + +Add the environment variable in AWS Lambda. + +Click the "Save" button and go back to your Lambda function code. + +Update your Lambda function with the following highlighted new lines of code +to send errors to Sentry. + +```python +import json +import os +import sentry_sdk +import time +from sentry_sdk.integrations.aws_lambda import AwsLambdaIntegration +from sentry_sdk import start_transaction + +SENTRY_DSN = os.environ.get('SENTRY_DSN') +sentry_sdk.init( + dsn=SENTRY_DSN, + traces_sample_rate=1.0, + integrations=[AwsLambdaIntegration()] +) + +print('Loading function') + + +def lambda_handler(event, context): + calc = 1000 + + # this is custom instrumentation, see docs: https://bit.ly/2WjT3AY + with start_transaction(op="task", name="big calculation"): + for i in range(1, 1000): + calc = calc * i + + print(calc) + return event['key1'] # Echo back the first key value +``` + +The above code imports the Sentry dependencies, and then runs both +[automatic instrumentation](https://docs.sentry.io/platforms/python/guides/aws-lambda/performance/instrumentation/automatic-instrumentation/) +and [custom instrumentation](https://bit.ly/2WjT3AY) on the +code. Click the "Deploy" button and then "Test". The code will +successfully execute and when we go back to our Sentry performance +monitoring dashboard we will see some initial results, like this +following screenshot. + +APM results shown in the Sentry dashboard. + +Looks good, you have both the default and the specified transaction +performance recordings in the dashboard, and you can toggle between +them (or other transactions you record) through the user interface. + + +## What's Next? +We just wrote and executed a Python 3 function on AWS Lambda that +used the basics of Sentry APM to get some initial performance +monitoring data. + +Check out the [AWS Lambda section](/aws-lambda.html) for +more tutorials by other developers. + +Further questions? Contact me on Twitter +[@fullstackpython](https://twitter.com/fullstackpython) +or [@mattmakai](https://twitter.com/mattmakai). I am also on GitHub with +the username [mattmakai](https://github.com/mattmakai). + +Something wrong with this post? Fork +[this page's source on GitHub](https://github.com/mattmakai/fullstackpython.com/blob/master/content/posts/210823-performance-monitoring-aws-lambda-sentry.markdown) +and submit a pull request. diff --git a/static/img/210823-sentry-apm-lambda/arn-region.png b/static/img/210823-sentry-apm-lambda/arn-region.png new file mode 100644 index 0000000000000000000000000000000000000000..4bca3e0215a9d85b924c8ba343b7ae42d8f086c2 GIT binary patch literal 57149 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

r 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 literal 0 HcmV?d00001 diff --git a/static/img/210823-sentry-apm-lambda/performance-results.jpg b/static/img/210823-sentry-apm-lambda/performance-results.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0e9d3f96d2d166bc51357137d04c3d616d1d9e9a GIT binary patch literal 146212 zcmeFZby!qi*DySkbax|-2q@i1m$Y;VNOuo1FiMAjqzVE`2-1zTw19MXOUn#7z%cWT z{_cA2C*J4!uJ8K(dEIc%tl4Mpb@p1b&)O^YI>_sfK>vFU z7W@Oo-(mE=Ul)<|E{r zSZwVbojqh&k6SueS)8BAuo{bKJ<#$}w0Ck=d+uXz@Lc9{}`(*%b)Ux1AjR1hXa2&@P`9`IPiZT z2mYz;*n6N!_$dR{pKqp;Op+dAa@S?C#;`qpzyKVq$8>g1wDW z@2CNIs56I+ov)X?uI}SsIRF0n8~;B}7c(do5LG7me&I?xCmZ5ZNIQL*^pnzryh!&S z&Hifu?-@!hLS2HR4hK6gA3v1(_zVTJ1^RjYf@4rHg%4^_DER#^*zqs8>KAPL7u@r^ z%@ch^RGT>zOk(F`gTjHfi-Pal{!6{%zrcUHFRBTEKuP)WV-`ap;fEr|zrO!}TKw#R zC^`TDMNh9FA7@7=KNfium+V>8J?!}Jvj{#AdP;c| zGWjD8n?iLbrT#dCUC7oa3>S}znueB+gOiJ!=bo^LsF=8fq@t3timIBrhQSjGv2&?mzkGeQ242+_;X23ZC!ms2L>r7*4>A9$mI2~ZM?}@1z+M&C?tQZ?!;vi(uYvm`i$dI zu?w$rK!1_;o3j5MVPXHTDEkLt|DX*Vq6)bG5Uj-Wn`**?l zTfzHX@P8G;e-tDN2^tCqs`DMxKOrtQ?mw>muL0yT%D#JwTmTSYpsYkv3{rp`0R9;< zGzs3BAilZiSXaHU%0dEUUxQcckpR3l<&dP>XuJKk_rVn4nzPlbvv9<1B~0)3%_k&a zw1D~Y2;5bvr&=5R^uqg4?|(qUG{P7@-(RhIBcO!@hSt5$E4X>7Zyd0sp4a zBClw^yPD|Xp*~_{5()SlCiUCwA`}D5kqh$2Q7X1`iTE%a4G8as_IFA*eT z6&@88Aeo|J>C<65`~mh9X{_w!SO*986m>2Ucsm`UMb4q)N=z;ie8B+>L;|$NjI-V; zbCvI3;!hhA20_{)3|ACW# z*z-S5v_I_m!=8VWN5S=fCdHpg@n=$?mgYZ?!v8@}`6DU*NQys_;*X^GKU*~arKGTG zxJB8qj`1|#jjZuosXZco@={0Fona->c746$g%zwUe2e>m7&!)S%!}haA}$l*tCMlL zxa;j`<1elBnu*(TD)}cGr5v11mK_QBV0ekZP)7oKW@oFqDO-6k@yNudSh;sg@&Uvj zKJ%Wzys(%IhYeT9nJ`A|Ls&r}NC3`gtlTao3V1OAhKgW~M3?shyz=(3$oX#wk9yuRUYK=R%9h?3*EVXZHbZa+7FoP!qw*V|K}))!6FAYw?|sM!>PZMBuS zbirEF#<}3_+Jw7(#Jm>!c!Lt&<92WB_clVkW<9+F{0U;=nJb`!g|5(lI<=_cZuX1DG-#M?7@cx=S0Iq7?0ZtmXxjO@pQ zo0ku(X?pD$3{o$RwGqZg*Y8SxnhWgD%JFkoPSblvZC+S1*Ig#E#~%(CeufxFY7(hI zdCS%}WiVfxvw6HYLcs;@3^`D~g0Ca*o4xi)(?f?oix1+~+&l=}Moc|k+w%-bO^Y4x4Y z!A^eqFw+(LtAYSDcVqAOyf5iN-G;QE-SE^8Dbn-}slrk+vh?RfDWWnmUDQct&lhh* zkbr?EI4=@V&D-5^?Ge_I%w|37c{qy%aPB}V5k0v?NWfk*-l>pW7}p&eNdCfZUK})u zn>Q8A1fvpj+JZ8rBo;&&wZ9-y)m6EcetyjS5~RxRX817bMQTUh&W?SF% zutFKs&rm|XFu&Qk^u4rq*PKO0J@-1VWOAmbp+jbXjWTewFNqSa2B}D}5$kTTL>G`< z?<=YR=A9lkt0XzoQJsELN|E^FOi!ApGKeM-V0duSo__NbII_7e*Rx8&R~ZFTtbp@O z`)yBEv`TpM{fI7cy40emwJ`mXp3MBc6r^`e;H;ss3rnY(9v$1~-6~C5 zuva}&Er1hM*M#kKH%BEfq`116KRgKZ8V0+%&Qhdi6%Pl7Y&WK1R;z@*pM3I6RwXoc zl08LScYyaEcb{n@U=$27}gZRz)(z~yIF5o z!y}gTE&T+}1qHpp>T5z}P%X57!?E`m>%hu7ieDOQU5-fpSuNNTc&hJox1&A4ZNXd- z6Vhs>&nZKY#`Y?Y@`Pi9FRc(3N^n_Bq(~aOg5sdN*3HS(izO4co zZdlWTc*ful*Tms=5NNr>^f`W3x#A6*Zn!~&g^8*i9^#fGol56n;p+l>RSW12lN_vn zBR8(O@$fU$b-f|lowH+uw~{p8T}(H7W@2IAQsjuA&e>Ka`9r;@pwYs|6>$i9t=BYm z2)LXd#q~l1CX)@o;Qq_E+)LgWb}#M(r;Zu-W;z~mY*t1$zvG98=5;Tq=0W_`lH>$ulT^)Deicn2ONN-Uz zTn|dz`DUhiH)RFvQh2~NZhKo2 zO0bs$fEXvj!5h5HxB`j7t|7Kvle$@#SsZZ^?2i=SD|%@>ZU7zDqIr#hk3Maq`Nfrq zvV4e1y86iIt{c=^ZFDV`a2J+dvEv*DA6C!7AdG*Jv0 zh0vReD2V%Ik}LzPr5iyr1@iv@RDx}GpX~NQoHIYYbN9O2(g<{Ty~Hu`G-6@f^quzD z9oiB>n{T6SJn`%vrh4gdjAdv81~0rqh;T$s5Y;yd1Ldo5mWfbG^92`UISRQAkE5Wr zl>Y9SnXZkWfuw@zS$@ggG@fsUZE-lfttAk{7@PfYKI??&p2~H$!Xz@33m=zj&Io3a zwR-rrHTUq8je-OTC|TXHZ%0V!7PpA@eO$V|pJ?(U!9H?&JjyU_i}X-gwu4C)6XbaN z5kV6AO_mV$nK`OeC=fE#ov}xGoGWYOd#YVSyWi8wn z8ozNI6Ux5?Vz|vcLjs7@1M{2$7JfFC!LlnB1|NogZ^)?Xbud!A9~Y%?xTxR=NDkYU zFM8_boNJ+HozvWZ6b>bli)3Pe62-3LK97W6xs}nOWXv-hslC1 z`EIID71th~Ge=ufw+rp9(o?S`^(P2)I|r3H=^tEEeO`BLxnYlWz1QpQDrjX7-&$di zT-Vrq)j%mJsIjr-I4hF-d4Itu)@k;7c)KmKgoG~mvk^_F2Y`PIpyT1}Z>c@0JaH_N zEgxq#XFlXB1u!Yo{T#?bq)oxZyGfC7UQ{*PDqnOE%GC;$ZTf8CWJcNdkwDbfR1u@q zSBD{iUAOhYx80am7+$8n;}eC$r8s>%i+TeL<7Hzt&5}_@2I=bGi8z~cNpy^hBNzLwhZ>o6SBznL zReH*l@9rv7=%W3%M^Iwh=0PqFuz6J*s#O-S!Z?lTHRp=c(@(iK^0Z}?^eXpc7;$X3 z6y9qk+f)ms%zX)GcFJsw@gVTE$gehcmmTt2l^LqMX9`Tf{@xQlNndV|Y*BW$&z<+- zbs00out-OgNN{|hQ(;`!_V`%3y?ty9OQJmXYh_PksSPCHisHQE2HO$|*!@%z-4oR) zd5=4mq{jIrjpTfvln)=)6MT6Oy`&ZkNfj%;zmwX7@AZa-d_%j~Gs8h6F$tR>!4{ z*TLjLMcvPPqe{2zhHnU`jHQGo12cwST?~WvK7k}*`Ja~M{jSBLJ(cJ?{QX0R8L~dc zF~8@}EUexR3eP=H-1+!*65{_R#!Xg2r5TZ$zk8y!u9;W8J0aD}t-1J=PHSB8lz#&o zJ1nTYP=hMK{!2yl#F?J8G{|Pcdc!zYI4Qzw1Y+J+IMeuffcBo9TKb1tT1NS%kgdRz z0~*D5^U0I}A$Z@5#U${seZ05{3gg1?`2~f(jcQye_98f&p*n{{{=uKO{WVo;CePXJ zP79CH;UvQ?W3~Lp`FLkZ*x&&dSOOAYmBWMtjEjkQB;+mbfhXaETN68VXM}4WNc%1v5?42aT%%2ZA_Z(h*??Xq0y^4vMo`f75N!xNGcz~!V7=#RX+G8f0 zd8d*x;yGuwvv9dL-|&^8j!bsIz3k453KN1b^&h#_Z{$yec1w7B&va;Er|Qs#cWWIn zGnsns&lfgAB#%{vVtN`}Duo5ht|V|4(>rPVmv^>L-K92}drL>7tKr5W#MsapF%#+o+v!O+kV|VK3>aZ!8|r|W5b-P zchXESAtvr&RM5V#~|5yRL%{q|pGi?0?Z}=$uzk8d5M^ygQqr zvU#Y*exLN?7gM>QbO!St%VQ5|tf_@~~9tB6=Juj!+L@gYx)|<@a16V5`1)}SJPLxO4`6+M`poxFG;4JiFlXY zfZ&`r%0Z1`(w^YWmYZ80ttwKW5zF1l;~z`4F66wV?A0o&RGWF#+evI+m{OJUHV!*W zox0+rjnw9SAy%n1wflhebP}cJbE~K)X^Y+o4plMdKBt%n|pW@c-8I@ z5ELxyKHn!X!n@OvnCGtA(@p~U-XQs@yvT*bm27EmLF;QnrZY?8vTcCf{YPb1u8f6M zzTep5PLp89&BSmvYe*6j(DenHn{~lleOq~>7wB;U?+_b6jGqYQW;u)sG%U9oD{&W5 zEUr$%hbe@cF1jSu;@RD3P0-7T;su_#g(-m0X z#|ESW@p(&e?a}N{(vApUr~-(1_ap}kBdFdMbnb}ag+P3zR33qxAnBt_o`Gguiv{plJBG`ZpQ-#oOUyl z$+9>%XCLfKhA-|K8_#NkXO=Bgec20DAs-yN`0r4lJ=vXCU-j$(W#wvS7~WL}G(OVd zVoKY;THWNEX>{BijhX~{%+L?3t-2&H_Ie#LNEO!dw5u38%+uH&y-cBaIqd4RN-nLM z?_$L{Cd;v4(i^mX%X{O`FPzFX|I-Z+GN+z+o=l5(&XT%FD|DE9F9lIw)x=m4oKAU~ zP}y@FYv!IC-D{R*GMuyAkk5!rO51<;_y01AMG_eUWq&#?XHYiCzC)s zRJL@Z1^YawOmn?7R%0febO ze@~QJvho%GPd>Wk6}1mBeH?h5HHVZMcR*1b@)#*NbF+xMumh!8Ve32AL+j-NMs1Tn z+HF;g>#CcKh_u`Wq59It-7}y$ApczqWSBymZ@fTdPI{=_W7fa zNEU~8x@gES*w*YV0NrdX3{3Ln%>$)UBouneEGYT(;(vdXT!LM0?yuUMASSmPQ-ACX zojwRSUL0B46yKphvyD5|!GtS^TSwhIhO+a1gheY_?9Y&kAo|G<%km$Z)BuQx*x>&wNYE+a@UwwhBJ=4 zn4LTCH4>2Hgn=CYyAxFIku=Xn@F>pyLD}4biPd0rt1X|#2=4(%ypxkBJ=N>bJK0(j z6aekXpp%QN3z6zZ(ACEGv=dH>NbR}TX^K~1P0zpi4lFbY@68UUSL=7VqH0s!04JPv z&=cbl^3%tFtE2^roZc`y8CqUaIcOa*&A9aiCKRl*y?z@XtNs1 zvm4ys>lxF41Q54+yROIU;K1~6l)^Q}KV{79DAfrLUBq*9WQpO^eP?|4Hk$CYwrh90 z1W-`}!rYrg1~gYN(vqCmvl^$3r&<4!z@;>>b!dvdl>*#K9exguhkM@00cU%Ravsd) zL){wnOr0BM>HI`5bQd+;_%>b?zh6>kQ9ZemwekXXRuaHsH_caL+Qnu-?!`(Cr!KR6 zaw!otJ#X=n!@Sg#beq18ND`&*Y`t|!+txY}U!cl9YptZ06D{WhT{678S~eCw=q}n9 zZCn@2a?a0k@NOA;IydUJS#D6V`ZZHDp?qckf$OVr^X?)o!S4l0oR6S+-yYozX4R;A zTgT@*b3F?Y@V~L$_X(XqaNK@ymlh&3fwkz+$(FCrds@zfNF1)!XOIGum3F_o&nSD- zEX>h7B?9VD!d+qRCHn{(#8;R-CLL9zH~Zy`WM6$q$x##jj9jS@Ky=k=+#;tHmK#liHUIntmC_Y<9=EG&MzTcV#-u4stQ)d-EF_J&T8A z%In5d10U4*MX>jL1~R@4>ZA|DQ2_Qcyh_L6OAd>mT8XX)Y26mobx?sg>R|$Fx%d{l zvP_LLvsOma{-5g?i@DUyD8pvdZC{u#-mC7yy05M7`L6cmjXWq|Tvm2pwEbZllqA~+}F*%OS14=bX+F+;0S672|EOkG-4qp~Spc0M3l zF)RIC3N|DP7})6MockOw09{+l_6(a{iQL1C3vW5VFPDN%8npk?xDjFK$76B zR2L-jR(XR@P(RmoqC)rwb*hj&h3Fg7Vcr4O>MQw25n=ckCyCm)crN%E>=h=Zs&?P` zMPxMg2WPdKTXI}AnS~Ck)Y*h}gZlk)%*gA-s)pP#xKf|+HjPX36}SeTnlA3wij&8< zx5m?QW*EwyOm7lNe|gz2^{(lr&4tmiyF7mv>t}w9<>G-@v)@SJ(2sdmj?jzYk8d~e z=%@Sx3e3d?`X}blv(kR+bS7nDnEB$Dnrd zp+Yj1e{JPshyAsc@7+5%skjhvB-5-ih4HH(Rhf-t$sJ=zMQy=6V3xW$WV-dydkpq! zL2h=41Y0KjI=XY^-lM0}(!`&a1R2}i+v>mb2SBIwHlzb_NAGRIZaKONVa=LU932U_3F*N>FcaB-K}rplZI*5@CBh}V*EU|nG9-DLT7sRYi! zMZNl#oZ$GNsl$fXQdF6tLN8yC@axcQ?HtE(S0ISiuBGJ^3h4|Pu9g>_c}>j**rMZs z4Hdy=*=A`|5{6}2fi2Sw=Z*ubbvm6oG;kGY(o1RobysU5SfU(`Y#tY6G~Ud9!eilD zd_t0=Z6kGYTYKNL0zG}3HRM?sXg??I01dx!^ey^G~|C&Y1i6Jqs{Yc0z9@|ro6 zagA>dQ{6nqhd+dE9a2= za-pM(84sAG0o8XJuZ#gH`d7$**o|jL33`S-I(%0}ub4w2rVCjMC)yY#U0io0U_ok~ zsu1eB_9iBj7ACxR?T)DA&tliN^oW`ZNklB{UB0zTuCa>@TPGfV;U&TRNYCJiS?qzY z)Dq0I9}EcP?dU@SC_(xV`=T(Ag0!LCrv+0>SQ|e_E2PDw%O>@Zl$~7lz5$uTGqOi! z2B&2CTte%_hvl2A(aoM;@focRCp=cym3QKcX4s?D2b#5l_-B?DJzoY2W}C?Nu0v*o(XcB0mx%w3wp0VgM#Z(4$RM~~PZsNKJY?mA) z!Z|~hF(tUgo%b=PdZtn4zBrxp!gkLGOhd~r1EWLz2h139F2{_!xrD9so9;TDqRpz^ z9b`bTaptj3&h5|hVn0(7^gWK6evcoFBf8Ya?};;oX)DLBd2XDEvvafC`ETFKJ{aD} zjXi}~$zklfLRo+OFaeovP@w$ck{pH0HH%riPBXZq`HdK&y^gPVwx_?CT~Dr!cE`42 zK!Q8vh(Y=pV%JGgeo~Br8zxVNJscV%*_6`ow`#*m&EECHB&#R0JA0S3$bI&UU9o7xXZjqB++U8CZ6a zv)dBbQAuW}SeQyudl_>LhQ^Tb1MrdPCiJc&;UDk039N6e)c3}6c zEORS_xksvQ>KwB*WuMQX>-;{}XR7^Vnbz?EcJJzyT|;#M*`3hB+M3$Qqm+>@obvJw zOm^K5i6WR=>rVg@5*uaX_sR#_*M1!PZm6L|W(Nb;p)}Yb99#(Q(z=aUa9n`TBLTIb zO&^ERcUwV=qR?C}i6gTWc9=Xgzq5mK8`cC-+3bFEdeF{TJyw6q*5hkw_Vv^`t9>ZQ zQ>M(|;k^pId_UU9>x~Zq=hg#wS*mQYQIkhP7TvSbB4 zroG*cKy)Yo`YeZQLfUSVkyml@>0}*yO?7p3qKc~>+x_A^iEtc_a6y%0`dlGt$Q{{) zyf}lb)E0_DFO-XHeGB>#(L( zY9!!WQ8^MYCwYtnD2w0~j)U23;h3FfCij4yVg7RY zHnm4~P_|CjCTh3;t`QWBz~M&%U~%6dGx;GX-*vp^MoS2_(WLMYG0|v|aC77POi7xR)WyCqclAaWMq4ru1ov4HL(+Te=(u7yCq3Qn zwtUG^=c`!D;A}Z%%rLS~x79CiO8kj~k$Ikt(e*qk9g5!@%J(IMs&4kfL|$V8KCSLt z!4TJ5yhy;iJ4@s_zKMu%W%F{*G9;k9x7p9`FR^tz{C27+)xr+k9F!(IomT z3<k@=bhHyqj-FZYFTap{Gl2PaHoTMRK$&|w zWgIM73Qqrg&zTD4PlAU!qC3o@aBgG@=!uA}EeYr?De&%V@2 zmSs?9Vone9#0@|bxI zG+R}CX5=Znr0iwSkEYvhYK6AkBGWR%E=MTx4UV?ifkz*&7`PFC>#;w6DVI*?qWnt1 zpw^2wH`k?#vDRu?S-_QL$8pqbwkyO+CRh`yoox58F1`l_847#g;}p1#|W8Pz*5EwGJC6P6z|4vN4&3ZE%dUYmabvC#Tgj=Fs?1=yi6!s zucRxFRYtmKu2QW?R-#JB{X|LcMF}6|`|6@6Dr%(1_s>YOXo1A{UdVQUx_VN)|dRYosr1dl4>4(7& zH)Z!MkD^=SflMLC32?&=VqC6h4>ypqud7#S@see~Fxc^>Z71oYg8|Ij&AxjAq(I`0 zJ8k7ovJa;Cq$NJ@ONOKm7hD@|y&?S6eZSTtaesb++EbXtFl0PYkm5|_jFK{Re&vEU zI|pr@I2ud>=luXoXX_X*oIY=Ju2(jSGO7aFCyJ!ZPoiyFr>AQi-&M#_XE8%*&NAkY zp`uM2eEO5>WA61K62cb~b({f>fdt=Y1%-NXPQ7|n<`8>Zsa6NdM0MHl-jPv$n8A7n zEljF=9H`SX;oKsneYvw z>}N;-wOHa}Omc3Pvu+XMB}Wq>)I-r*$|#N zFkk~=p7y#bd1in5qt1OSme)PxUn&^|fn_1V>uvopAn&pR<65O=?do+=$Uz>}jm7}` zNy`_k0QY$=?0~?4evtz|-4b;-eh1Jhc6UE^dR22z`Kt?IPQT7RSG}-~bI@!u*AryIQp3lCj%OH8~{FE6!} z^Xe_iP&q{<79vR6Ap&7;(n7_{98(v4j+`W2G!YYZVKj}~-@T(23Y%C0c4g4xcqP;a zmSbC5A}RFL{`Wzizk)v4xxmGBaCke*u)Xhwrb>z{Ro4JP6juhB&&)}BC(z>LTkshh zm&_K4yenqF%y^k@Pf2oL93?5m(|a$!0=xiw`r}Ww7HSz+I+ZD&#PCQIe#-qQjE0=} zyL(i&whCGl_q4*71UfO3)gk$0f&|01ODM}g9ThG15p98Nw2Ez>vI#7t+_}G6TexH|8 ztthDWbNL0HI*Q%lZJ=}%3L1<;^36ldc)daj#M2s}wJDan)57S5qzlj1)#?J3py^J) za*iFZ$F6TeoA|*@wKMNpl4bTYCjO2arhNC}pB*WPm6`cxnF^pUM;z*u-r-GZT3@~$ z-COOD*IXG{to!I&uOE)mR0jp~a+)ggRa&syvMAojN~oEoYros;LVO4whOhE&iU0 zYwh0E^AVTy0|%(G?dAJ3nw_jqV^pf2)u9|7KmCo`>sriRZjXw=3ZyCvAACOqHDG>j*Qz&@Tn;8LFRJ5Hiy>DjbY;fg6ei36h zKl1Yqh6kpXxTvnd{!d&z_<^oHEmiN8gItTutLs{Cq&IJ5NvWhqc}^L=EDbak zGr*ff9brWvfqL^>$w4WD5=L?9#|SrB!&ihDO1p#7-+mB&V|Qm9_|aOD5}!Pnq*(X9>fuHuBc6RwlhBoXie7So?HW@QMJw-sh*~3*@^8Ssa%Xo?e)zBR;48A$Tt~L=+m4>f-pq>#9@O4wkw(OwA(SSc z2KIy%AzsX^!srE%09L)jErznA-3qq<*gfe8C7Do92^~s)W7s1BTN*O&!_%|dD0}{` z`)$WY?lp!vc+IT?9;;gW+NZWL@5_JgE!PM)Kms1Qdcq0cAOXqT7d}Kr0cXaf|FQc8 z5)cR8B}6$}Ue=%zV>y^cpv2b;X0jk+=gSwul$!G~%d9_M?s=yZyjTEZ_hew_j7w;rLx zt0x{v06zFo6LN{jTC3cOnLTg15d#mj!1+)~Wdhx+*PdamhyClSzq7}j^5Ra2xw-S= z0Dq4EjtA}ju<;vhkSvU`)MS^5wSHQ}QvZ7OC~Q(aik3ZUu0&A%fkQd;F$kDw(uO8 z(KhbNFw{Q!bve9_T?1(JEesXdzH(Ikuc&-dn{sorLv=_}?mywVE_@FjlWt$zN%B3`;9cv00d=}6uPNZD_g{qycOXn>3*lV1m7%n7 zb0~-jXX5PERe9=|E&XuTC~DrW*+~}_QmwBa9$~aI0?CdUYU4^9i6_zyI~n+wjHSd) zx44DBV}3HOOu3#$alV|$lXebBl$X;0AgBKRG|CvPy(NT7DH8|^`30R*O(g5+yjl@# z_QsB74>z04-Od^Ou|lCv0r48|D=U+We7SZSt_9;j0yyN9Q7(4(#ar>Up>(kVZPo(x#9|5kBP&Lq$ir?2!SAA z-2M+-{)s_eDRobdcjNDI*87gr1=W8v4IZ~My97Kp{88;2d=X%fZ^f$YGneR0!#@YJ zXK#4;LSCkrAt#biwTqA``%d{sYvr%`Nlhj3u|^m%wj7ZXkYi0jY61>wPgGqtDDTJ#LZLj zW7J0;u=lOBpC1_;XI$cznwKvH&WbV-YMKufzgJ7qZhZY77n{sY<;fB*wx?NB`N4v# zVn~^D($g8S=YsQjTE*FGLHNwC@23fsC4U*r{wOHsK|758!!d$CzDzd9|5;U&E2X#? zEA@jganu&PgpP8zeFWi5T?o0>EPr_si3@3KL>+$~gW7mW3+bybxWA4nfO^q|!YFp%Rm&`Piu4;T|0-=zhzKZ`Vft z&sP%(3l?}Shy4j8Bm44yv}I=$2pn+{BwB5;I6A4haT9IFxIKM3oAM;`C(6slfpr(P z@bEma)z_b(3sVxF{JlVZN}JTez(X|3IUHY!c}8|zaKKPoaJ3-DCrYl@%ePq_Tg&ZK zsNnXS_2XNyPOAVrNdD+|S&CpS3Oy_NZ7d4oZRW2!FRhqirx zfh(uI9YhFf{_J8CVEmIN>Pw^XDW3CH9>sH{H=wfj zm_Wi%frxfySlo}5Us+@D3?GFs$V*R=qcQ{G3$LN{?k{XV7@I!rsY~7cBDEXx`EiQc zhDwGJP7JPt-3!3Jx(pU57ixS_J>E_OH;rE#?g(#H-l!y9aq@N*6}_gw^_sn7x)ss$ zq~^+2B(@;PBEpdA3-%WCBKd}AVkb<=thhU?K; zZbWXKR&I|D?LJC_02!}m>wImO9Cv4%;u;rGjRMQ|DNtCLEt$9U3cDOq#`NJb2K6+1 zhK6}Nj!zl)%3*`uhQNtp3r}P*VV)a939>&fH2DlnfHqn}n#qh&Ol#jTN7!)L%ATf~ zQur(x3+6T&>|cc5od!`ua(h?UCP8dm?C4bwV)KcQfrK}Bh#p`J1AjAmEX3s(0U8xrY*-PdSAUpV|TY&?1j zMnwB63huCB-mLb3lgz}z>U8j}VUEhv(w@bzrO%Ly?2kQVv&l3WzEZ=y?7EMt1#6|M zzOuc#b5~N|{G*T13U}rEP%^|=DHOY(ZnUeC2B>2I5lA@Gq&Zjj%T_VrPYID#CB=^q z&T<59E5DBPc+37YH_I~`7<{qc0-X(agwA&7Mp*GdnbHeIzRq~ub#=GKCsS(Cpt^n4Xh! zT5%RW+MG<~n(~g59W(LW5{cSpdr}& z?MZ+pEgKs$w>QQM9uFqv- z`Kt@NnO6CC4&BPV$XHDs*kT~LU*%|F{fd+4 zZL$ZNbs=ucgw#6iEhnD!I@Md67tiLN96fzP{R}Ibvh%hvT-#!@#?rd%4Pu@zpr*ao zr?$tb(q%#x4gP4h@~llxJ#J+~%Ub>m6cfwxqP(qE+NbC0aoNGWAo~X@7kVw&Y>6F^ zX9&7FNJYy=Mqk#3+QRwMI`50=>bSM8tjXIhleF_a3zYr&a?`Pf)4LXu>M7y_GbY5jY`8pv zXGK0EhMA-$S|7KQf0?So?nvZa%sP+PSG5!z>0y(ZzM%FaX>Lwi5_^Ck0aj?3{v^^k zeIw8db%rz)UW$0?oz(8c@vgdq9R-+Nm{=__w3;XQH*=M;tZS$8Tl;bY?JzK3_e zaNJ@~-@F%)`rTBNw=}=(Trr(epWK6H5LHe!B6?ux7Pa z)kE~?Dq<`~44VhM1U}!}1D}9>4~h5~_<}DFQCX#2Jdhhi`?=1o&_3mw z$nk1TF8qB__wn`3wA|Tfv9TN(_*)S<0vEh@-+P(4`H7w~_ znHsp;>aofcQ7=d)wfHyyPTgfLM%QlFO5|^k_}^JMO`-juWGQy&+xYN8 z0kvbU&s8v7T@iqK!I9vzu3r|m(m##p`#it&m%BL5gnXhX^ZS=BL)KA#Jl}%QT3q+M zjSWR*8&85L;jd@U+kTtUpno%^bKiovQ9DucTEhqN;Ayw-!S=^ta`Yg1Xk!nU0wl&+ zU2Fz2gz`lQA^}dT^Tmy(WRIex%wz04Gga7YQb%yVqIa0>mfzLu6^_$)mSUy?J->Y~ zOel7t0bT8qdx2mGS5LVZ=3lF>(syXhnE`sxn$FdwYTfs`am_r~(MN@1;&{)<5ADE*msx*y+kN3^NCJDi=mXrMrg`s3Z>we7~}E5MDB8 z2EN*Q<;Yo%n87)Mf-ijU6};SR7{S ew{u0J(+?lphnclQVl28GPmr05cYPOc1YWgin}R5;rN{l^^FWq9?N|4W70c)4_n^zlvtrbwNq~%g)TrqrZAiT zhrREPYO-7N1yKP3Dbjlvq$<5eI*15}(wkHR2Bd?O2ukl=K|s3n-bpgf=Pramp}A%WY{Pp`wEw$WtgzVuoK#&)YW!rDK&`ahv0?P4ksI^}Etu#aLW@w>5C_OX73 zbdRnMP8?iij{CMOpt{P%OIXYGrt?UoJQ;K)MLNn(zWoL&_eLL7M9$~a*7H`%>AKg)2xoH0$;3681Oh;Hm`q8b#zPqsY)135(ezN2^BDmz}Eh}gDsXg0; ztEc8h0wX3qy7YE0QF3o-R?D)v~(VH7`8hv^PPo6)^m}5xu%|#6vqn+U_ zeX)@j+PxLwSW&bAewd$vM0hPj89khJqAp!#w`I?+vPDR)VUS$sDJn%R zZgHu+E@kqT>0@HLyK3xaCWtUq|PzySw%B)2dk#@3x^oSe$Vf2@5#?)LRrrMdOwv>%*(OX z(+mHR3sW9ka2dBAn=R*&?0zne3DJS_KA#E0pVc(rmaICXHrHu(egX#a$B>KD#+?AV)|u`Ajn zFQvSDSJXD|L@Y=N-(Pm-)*Zd$#P~*81t&bJoLjbF%|V*eb=;w$g-T+9-7S(xi@Q zN;t*J=leS6&fT@?6u!(-#DASRjW?IpU>u~3 z8kLQ&bxgA7QB~k>*Uu^N;ii6_#98aN2u(8uaO2!Rq&}WrU#_JIz4Lss%M|_2penWF zO_lFWZN5CkC{gvcHd%ILY(+ag56f z!J#+Mnplb-5K$0?cA55<(7M{mTZ1^!=8N(9$_e5`hg4nnHs7Rn9`83*5z5CGfPFka0>ht3&TNc zdf~uCf*q%j|3d_0_5<-zTZdrn&M}~UIE`rl;(>}<`N~}^Gdf_TNB;gqt(?lNKsmi? zQqi2J62rhlxtbcfJ#&Pg7!pZAql7%d9c_qMzaIPankD^V*1N}d5b{Ywif>cjCrIE% z8nt*`7!)|9wO21O$9Bt;rVVzJi|rU`Fa|KI8;cuu2Zs$N2tRYj%dBNQ5gNAohMeiD zXB7{Huj3b4Pz|Uvf2PDqLmmJ(+gfB+)QQ}+j*n$~nIhCjDMb8^tk=(ackSExW{-z0 zj4Vhs5G=G>ws3UHv5^{MCbLGG>dT?Pw*zFtwC;UOj^E`a07W_NY1rP(FC2}W&mSy4 z9H!NQfds=Qk)*M6P3O^It-X!z)rNdm+cU9cZ@dHVNNmrQ(k~nZV-k~US2H@)ZA3pUiGp(Hl=vnOv$sg5!zb3ZUFwO*TbD{YyZXj&Bn4uRb5@G z_Jn0)Q%!5tOCjqy4hmB>ci4_{l-G^8z`Dw!I360Q)o023F5Y(Is|dnF(Mf-47;WRTI9C#&VAU(Wdzg$xNcU^9ctWssQDM)|CDV zx+1E5F3P7mqQJMO)<9K-?F*-pI#^5mE!j9dF9{w+8d!_%v!VeY4I{kS zw|u?@hhk`#0SH|6ziuaBa7+!OY`Sy43Mip{K6L@ngW#d^@<8fd8z``>04&2_ILS%S zuG@d;n`UOx0JoXwKc4aNotj605bT>4BP^I3_%-3^G2qygLY-mXcv}Eh8(=YFN^`Na zZmS2FVIC8Q;x#%6kFC47C!EPHRv|HsnEE9yjMQVQs^{;wlzI-Wz{RSh);Grzk zfPsqT@C6{N!*tX1OCX;nx!Z9}*<5UAX^l_CeuhG8iQ}owTajw{@_oM*pr$sM_ z>)8+0$9Sn*$a%5KJn=;h+vplCXfcohf1`dPOTA&T98s0XwwK^#XyRr18B!>R-l!@9 z^KkM4#pBAnoP_*p#dJ+|2W7T`G~-7&N?Q4%6AwE9P%IDGe|{$;PBDasZzKnCIv9OG zUJFdn9yO567su5nn02#f9T1wbUps2N$25L9}{UrPXUG~hvB$};LHqE?P^pphcU5;E_ zb6`1J1dRmlzi_Uu?*f|!I|zF(7Omb20uDeK5QZQYK+Be#iorJL zFF%5eaxsGk|JBxVe@p}RJI?zrPSQX_?MLa@$EEny3eu~{-`Q5wUWA{&H@qcaJ75hT0)mxJk z!2S@~P)<(Q+^RlvT<-kw;^YOEg$^rT37eTE*Q|e>ySbMEN7%P%p;u>MAc7KG(lv4` z@0~G=A^p>HQK<70bo35zxoqD9opZMg@NAj|?NoID_tJlS9{Z;iJmaInxKnBN@9h-_ zJh>U3MCE<>f7wI+y6?D^cX<3*0qXYuupOzLUTt3CijiLKPXIZ4$JU$}j~{|9j4Xe8 z{PHhr*DFc)d&`X(>vw;7{^xml7$G%d*}VH2`cFqoO?sE+_h6O(9<0Be3cqL8?`8O> zSn2nk1q6`)Q#Saou(0*u#|_ddnER}Q-vUOsN2N2WhW1^s1BqsgPy0kQL?1J8>I`(n zJ&OvG&#C|Te6oc2UB}JFtXt4;6}i7~W`ZlQ5yoCxrjM6Pt&11b4@p3eTiRkIUZxpF z5u}g8-yRi2ePRrH$iW&lJ^U1zg$V+f!IdHTK#e+4*OxB{ptil-UOvVFqSEy&0OY27 zm0JQG#RCp)SPB%AY!*!=i&X%`7sjSwKXHM0eh`FxlzXYB55%=Mfw&gR4_tEZwb1iy z9uj@>I*lm2`kOyUbtTC-%=R@4n2<`X=bI{HND>_UD!jtW_BQ+XqTJR4-{k1>*n0&2nO& zoDNf9V9OBkjyU11O9F21L&+^O4_7SvFPzv#d~Bx>fEV<7Hd(%BxiFd&!9%7u<0)C7 zH+fC!`V|izU>MUsy=PT5?YvvoL2k0BMRCnlF*ljzb7}Je3WSMDYq)}%0wN>5rS~p} zOrJS^=W~P&U8Ff7wSo<6s#_;3SSOBuay2(M#ao3C==Ad^NOk702MrB9!NKF4a=7Ac z8w1L$wiSUFEImR&;^gQ-Gn7hkv=Ty*-#}lUA;pra_L9%9Wo{AE!R(u?-#_XSIj&& zI(PIhC2Q+iqOA@$BJilEAO)8fs3?gW^c5Qf7Zm8FGL>&&9} zPVba1?9Q<7X^hoJwuS@Kxh=^kHsa5agK~L?B4zbv2jv6+7Gwo2Y z(W8V?0@jsxljMI`zu>=;zlOep2#wY2vhJC=2o3TRLGVKAz;~A#`p(8NyG!zheRZ%5a-onD5Yhi*eT!D5~gs_m-mDwY1=a!kFW4e0HIgyaE zf&_upniPL(KC9FR8V_pntTbZQa6e8Z@kSL1{Cp5F!h*wr;;vZX%YgQXH%|wz%xlw| zEuDKN&en2hHB9dBTD|9VrF%?K6=Kc$u$zMe!rxWF)HNqC5?I8y4N+P-cza@I0Pn3^ zd5_YX3Gwrwy67+LbG}(vq2QG_u;q50?^Xw8@y@!mx~{UrTBQtue3tX&J#UZ!DzuB? zS=MtTHhMKf+hAOb$gxaKd+MO}{P+vUr*C(wquIN|A8hclYv`2V#SL_OuaYv?KcC~@Y_;7 zDDAH0z>Am$uN6?pn_d`8#H*7_vs)9F5VnL7~~f&oKIKLn>OfGo!DJWzAmLpET$ zVWiNl_FGtWzKi9nbm+fEd%hD!>+Xr_s`%h1S$bDsRs5~7t%9&)Jp*S`HNatL&0rd| z)4B79@{#AUrj2~)cP!Po*m7jE1?KLXzHpCd_CB2yy}YeCv6&wUOXE^>H_eN!VIO3UDV zlc3JJ&}H&Ff{)DM!-XPReMXsx{|-T#>Axd zH`11t_~cZV;2UXk_xZmQA(EGToCJV;)2^VD_?-yvvq5gktFXLNSgIiQtN-7F6DM9*=32R(v*`?<)qU zhNy<{xNkjWb6kInm|B0JQD%7Yj0-luTGb~Ig^!S{cmneH__MbN_sFOUUQe@*wT?15HoJ6*ro#tZzZDLA_zUvpZ>z}JEWS)lAR%*UZ55lhEB*j;XbO8Tf z0(n+*?+Mchc4XEZ*GvHW&-VLusG_DCJne~B^4;Sm4{DboM+g(J03w?Gr4iTn6NWF9 z_jJGx{>j#>%XkiNcF-1DDC$J7(!NcaiO=mpnmw1Y(Uh~nrr%_nsNxS{e7t%=1m&f1 zxST7u3)(q>LGI9|*#ay$LNLl{#NrphSv@0E=#WzsSN)x6JbkU_R>>JQ3p>JTKWGCV z;6{HF&uG6we8IS^W{@I4Z+j!$d2Gk?Cu&I`2Uf{qbV9os=DNhtwtDIbVWkZl*pj(q zcD%HU_M$BxC>C~GjD=nU4v{dLaN4yTvzvAjYZN2$5k<>JHtx|Aav9vK4o%j$9%X~q zPxVu}FQ)Yl{O3Wz3`Qv*9KRKPZCPx6S6HCL^oZcYw{4CGfrmGH_h&0c_$mTf?)d4! z=LZF3;1}MCFXgHG;O|2m+hib1HP-$R*Qyd@Q_ahw_X6v~f)o9MG|@{XMcyU|?J$0< z7&_t-KApXRK6o@<>JDM|9cI_e6&1fT*IJ$EfBLeUqPg7<(Ic!wJrHW+@N?qlFB~C` z?WT5aKZ*JYXR-8Hs-N-T3*R25_4#e_!5b|@*||nG4$-Fy?MMk1$B3lQtse+V)E_XB5YxA=CMI!St)TnjX z?g?C*aEF;%IyB7h&Z?%r-ma@wp@tYX8B)%0SYLf!Wx|s%)=97~KG<|CNo79ShU-zr z{<7XShyr7Ubc%kFz4-H@Aii`MA=C0wbkMsloygjUcp~qC)~loM;jh^i6XK~oIjn-Z zZ|!4-99q9*5bVC(pm5roBC5f3odMH1$QZUOzQ)HZOKyzXY37_8T4D;-sq@#L zyWX7EW3S}FNI_A=*M0j$)l#vFmXnN>3e{eN)b5#ia~9UB;QU$f?976uRSaRmHzNMy ziMtH#apQi$Z5!g^5~}eJ;S|D)b+=JjdB>N$dWib606!`Sm@!Q*&$?$&psKOmHo3p* zWs-mXQ)WgHruUz4<9OJ0B8){ETBqGx2&3B;hg^m#`(3TSn<|kFO6exnzFDPPEpw>{ zQ5>f)-*&`uV@D<-aO80US5I3vFV#?s0HRrs(e8=tw*svaw&*~~*Ln19**}|OLj(nL zB19)4PLES>{)}tbV_oCy2{WoW(>>!J3+7-Edu?o+34^l42#8hSJMcj&%o)&ZnWqEf zvW~X)kTp7i^7RBMqZQXe-1||@iDq={(QouJ1!c>`3LhAoneo*P=Pyo2Iz<@`OMAZ= z3!(5sIr=*1P7fOHKg3qn zy-%zz*Wp67rWkxiud-KnsN^F`Ay-@UATQFH*T(Ao+b)iKK8yx|TTA%U>yze)5#`45 zTD58Za`^ax6I(Juc-}OBxOXz`<(RDxJ1*5AMgBn4j6Kq~b8aL!zp`#>PbK^1abss_ zbl*qE+(@6${n^j~RPu;YR8$oGiOUB@ex9ie>Bx_&r&=B+&UZa#^nIT3O((0X>W=SN zWaTW6UN}YYR0PU@{r{a(3g4H7IOn5_fa%Hr-ThInqmjSd&nkY_a>sovg-uycRf$C) zeCgertkx2V_pK%Xv^jL%gG9c6bu8B-rW32$H;-x=N{~EVQzW=1MR>KziSwCy9Z*Fp zQ$slAN`$m(lFrJqf!DtcGDbLw$pmF5g*-JTu(aMil-#2|zp%JIkFL;cXhfccKNqx` z@N3)^Qy;iH5BbKX99K^4rcBBI0hfg>vE<(Nq>obr7FMyN2{zp43quxSA}&Bz-oT0U zGrxSPG4@YMAl=!-(dA` z)rv3{+70v)j4%MeH*|_PQ_53Dc6-s#pR}#*9&qi}XFg>BBW?-5T`OVM9&i6t@xjk! z#UiRci-`s?(j}u!>>xgYek62T+qrz(AcaDW-)nsF{EI-TV0UDwZqPTkEbB)Z6<-k6 zXo=JJGqOqu5E0tMtiEd8Lqk>@VR36`8mT6*-r8V%BXQAZ+Dm}*CasN50``>7gxLBk z$544q7fWqnFh=jQ1-hA(1f4V3b$Y?H9JX8MI4ngy_-vwd#;qU1>84S&sQwbsM181U z=vssuw&KTfDdWA|g=I(DN1n);JZhTeZ`DOqP@%&S8VL(a-XXmvhKTCu>Jh4@mx*W9 zszYHWY%z03z6XH-LIcC{8NJ!f@dP;Z-yes|k|P}bwbhWBxqxE)#eTjA)hBtzQj_$UqF#?(Hy$zG8CC6EliDP1d>#p9z*VtMJzArXQXzTDb!Cq)lcrPIT8x z+tv*?4|3F|N|0Z}BfQmhXIQ?QGn@AAw^n>)=&D34Mhv-s*4NinPw(|!mfXiSSML3p zmXE)0DHv?c*bvtbp*QB#-(9kCX`M}4dre7vKo>BWMI&}Vuq99ABP&($W6m2-9a&fU zroQmY{Orp&b;-4HW)9S+!t)w8KTkL*F)R?|#SZG8Y1}x}YYQ5aF9NXyFmV+|ozRur zMNE9X(8_Fq%Jk;QL_ffeRS4`uo*-;vR5Uo~ZuJ_@x{PMFbh41QN~~&LUNJnrG;1%* zGu~=2&dl<0W!fauZBR!cyXcnmd>PX=7?crYY`Odhl zc4?EBbDDg6G+hr2%}jd7B^9YoILSY=8Nt*1-r`c7sirJFkmsDCF^+v~LHeZ@+wE(_ z?YPM;erYjJHLBd0=$yD-W9!y}f35nHRm%I?X6EOY${2&007`G}PUwvvbKC7gDDj3u zZ?CR;n*8ZG-^+8Ck5RA6*(0bDR9T}SYj54m`Jk8j=pg6WBlua*FwNttNJG@!2vI2U z&Kv)^fqrWbv3a9y@|@By+o*m9ACtisk5Wi7-&DjvYqBERr7*_Gm?nS3-~o}hTE_)s z_cQ_Rikx%oGi&vTYV@j4p={86{`GaQ*3bauHAD0pY|k>qv4DgzQalim4zcb$!YCpS zVrq9P$jr3_t2XAzF1|K)*Yrx)E%_g(ld)JTDz8x?Msx9_YL4Sn9 z=uOb%qR#Is!NytP8xxk3!&6IHP@9W)(XyKIUD677c<$WLV`JRwugDF!=Es8~?Hr5^ zcilM?H^A!+08ImG?57g(L;A+=J+~O$eB%4+ZH4RC&9-rAt-s5jZl3z0l9ujY<@qT# zG+Q>Hd$PgCb|D2ut%KlFcc0^PdZdq}@`C}o$Er_tC?0}%H9Gg8X1HRW=E#}7@D(Tx zS^(n#U&cpoA8DugOHVvj9_6HPIHQjk=-}6Ip)7G;Yivx;Q`ZR$XK+nq&c1x z`LifhwYDPLYQW2MyI78XNWq||0Nc1_9l2P3W6DC)N0#+y(>)$M(d=-lN1|mebNFNW z7WLYl{TO_N5Tk>!bJ#H$BUA#I8DUu_-Ql+z#Tdqerm5;FsuNvc_Y+xZuP59$bH$FO zks;-lqbg+CR%K*bw4Tb*qTfI$wD&$b+s#=U=BU2pj859W!@og>JNT~02Omhh*c~uC z1PG$x2nG{pe8)Mj?wzb#8uoeK(L&ty3CqegmvZB#AE@Z(>=H?xMO9scl_*J~e0myo z%PtiR{RCT)o*4*;JP~iJiDO9@9It$bv_S2%3Q^vii zi77wKA^_FUVG+wh*G_<5?Eq29s(qe!Tw-ghZXMmL{b1uSqOK*4Ao`Hwv&6ISQ!gD~>%;BQ z6#v|>(#VpmMwsp0Aw_CuR()(2>7Bl!^fHPXWG>fw`U>TwayRC=GI z3|j`Ad*$D{$sW!pNIFwthe1^Gg6Nv(D1+|H15&UX`W^g9;fl=EXnsqhx)@)E-k#?f zSy}geng+w?#DN(WLj!LONKG?fyDg~AUM+|lN=X-)U%Nzwb}98{>FUoJ^kH9I+)ja7 zOQe>G)!NaX-WYNz{UF6rKscyTrZ^_o0?*ouNA@A05u)0}hG1syQ9%5Gdwg@MR!+%m z9NYDxs0U1&vL#^m0QBK>TO%%bHkivSsmLiEF0^+aP8yY#TnBhAgAnOj5_&-!I~vm` zOuX6Sb&?R9!?l-!E8S|nBwGau1-h9dH3}tT0Ma!S*`O9?E zNZ?T)Wr(9x>a*7FG!mFAK2i0ocQ6Id&R;BODPKlxT8!?Vqzm0PTb}PKcF|^B>O}KyniAluWmLML3RQ&Wx8$JjX5Zc?A68!<$7vf({Hum){$8_L*d%Lf2 zH|dfPPv!~V2Xr`cM-iQvqn5utBA2n4wBwtm2; zP$p2U8N-aA`1sI~&)nIPE1ZA~kV1URG#78d%z}Q=-n~cu^Y)WH#=JKI%DnG(vJe1P zNj(>0XFb{!k^V9W>ijEMDVSclM6j$}si4UWr1=j2m2h5!ee=gkt3>im7g|hSPE+y3 zriOX12OFR`yVNd%9hJX}u1_&%tgCH6!UB&U7$_mjQ)F9+I5%&jaTZL)HGI|>K7I@% zYK%bM)6)`jiHNAacVENkh9?#u9a!d#Temr8Ri6a7e6=I5X6AI~A?2To0U1@M`#iVA z6PwgL#JbWT;)(i}Q^)q&D^yGjDeYZ1!HnrVsR5$x5iV15|k}fh~O+w{3cWP}U#c z@QNqkdug@~+0ZPfrI3ObYPpvtQyB2&5-9&9bh1ng?Y!$o-@_C93R=TH-thTIldv`H zc>^`yhRyE$VJuZ%Zh~CIy1rajrv;0j^~$^uF*t?#jqPw&2-}Rn)1_@XCZRG}Uu zr`Xdu)sLL^jg1+s%q~Yp0tu9098OCd*=uQFN$!2Y=f0WCDE!sv#O&N-)w ziUqEvnzA2;gIC%9ucK_h656t(b02NaH!d0Vu`j;8D&jL|QpgjXd^$$LSr4#FdGiW% zLK5C-JPi7SBL)M?*Ru_OrH1}n_}ah8Ed3vD=%BEy0U!q3UIiG~(pX&ZmNb;RV!sQh zc5Z5ah-VrSB8s1R74d8pDfWc#7Y?-&eGgZD@B}N)@M#n4k{ZefYM1EbFOgM70$9R^ zT09pzz9i8f*8)AO4>_E+ydI}bKgjS_fgwH+|2p2c9iZ-dng!@c(!BsM--OWf+p&8f zN&qAK0Dz9(qyXyfOoFP^;vSB8ML*=y`qyeiohlkU=_L&4fG-POLl81%8+J_A06^rfKoHt*i|7QbbHefy3%QZRVoW;3EOW6Qikzar~b^# zkpPic2(9K}aX|oFwO4>KLS2C1OjFRGY|a2kzv358-?qhH-;!l6001w1whhG+a{*;0 zY59L?G7f4#wugot{nvV!yVDr6vmbko|GR(xssHfr@%vZvuV@zo@*+8DTU=alEo%`e zR>O@-v9VeE$P#sbl?e>{%X9|S{!Q_DkQ76!3CK>n=SOvmPB>cdL|gI{q?!1@j-;FU zlK$BmE0(e{Ypa(Hj2l)9-QmJ)eHBJL%th!S6luzvXN}$O4fgdwVPp zty9A;cpbVMu>5J_5i*)Y`mZ0R@40GMW+4s%jiKE)&Md}FFYKu^UO);vHDcx{g9&%) z#cqk9Z-I>*n20kE)aY0jlJ4biV<=j^PAdob833^ zyh?t%>axt>x$SQ>*6sfRhX-C?DbnA55&!>~Z2UEGll>=Wj>iVmC;p1xSD!Y7d|&F% zd>$i3Z|7sgEbJxfvU0=iE0ead1Bpy!T}(s-PoDapk+|cS+PwUNnK_ncKMZofAi{Rm zoium)@{f5RAx;KBO~e0Uufc<5Z9c0@0&D##QSwH8dST*mn+>eH@X z?3)XFgJ}$jzo<@^2VAPObd~zl(dR~YLf^HkNlwPsZsYIh`pd{y(qNqyVbaVQ@?}L^ z+76NeO!6sr6i?(bjcrI=bW#RvewWvYX}te2N}X9X>{vT zQ2fX9>D@sz_iGcB8XVSc%5GNX4LS{MlB>MQEP)d_?$KyXxzk|7G+VS(drk;mIc4_hL%B5=_T|?VC3qmEO?vO% z=~*$xcRV%7Uht+isv}XzZmFFpwVvGP7ofk;*OpdKXSn0gB=f9%15*6pfg|&Lrv${! z%dyye7W}}-)IUYRmsfA|n!BmYF)jbdXdpEZsb%UZTA)oXe1=2si{ZJ7`Pf6vxJ9Vw7~$a%aJ8>o zr&t)(OOU*Hw8w!IFOK#T1Mj&fPwe+ZRe0}GE>v0pjm2eBX8a(GaWhR`Y?)mc26J$< z3Xat%@32$k1wEfke(_U*H6lc7U?UCuhaL0ZBo3_Tfi8`*0%pyBQ-Jz3?qE!x1)j;!o9}1xK`EeEhcTndCNJ6W91Hi^enk<=Cb zF7zYdoaJHSw+}SZU!L*)^c;L0BZ3`&_oS<;MaBBh==i^|3RHr6hpD3fImn-yh(T0e z;xEYmKQjuR8S=jxGyJEpd|k_`n%|xI8~@@jgoWQD^S_xXzenZ|e$MaJ^nYV6{T`X$ zBl9O>+wZeU=U@1Nf2HRA9+}@G^N;+||K}sUC-0uywP^C~@TC(L=)ZiAHQ`T}N9spt z(6G7%DfCHx6*c5{9Q(sN`9zY5H)-XGB-R_yl$*fR{9RKn@3`VU=upS~;9?a}i^@wh z_?R|6F6OVPF!^GtHXOh$H*rhhTrXlRf(KqFQ)i7LH|zVutR;-)m^}0s4h{r_9=ebEfU(}Lq8@ejsUn>G*CC1*iH?}6~)WNcJ5)Ss_)UKa-kqP5k`uym&VvS0TvRqsD zrdm6myZJfRDzVR4Y$RN)%t2<@Kr8lX%N>H%AfiUQ_oPi?t>s0njPOXwj^3r?`d>I? zq7wD(6Xb%mCaRO0ll(o&tu!)LpLhTY$jd30N-EpCbR4uj-s@c4Jp-}26Rq}E&6)XM z7PgJsO3Y31K`jli7{m?QXN@6B#IIJ|{m4Y3bBk8$cIKJXjN4%o0xHS*J>3aPPSVOz z8n^C$?fbmq&Zz%fbh4fhw_rRCoOhp>gtuVyK0u=bZd(AA7EmHqdU&4%Y6|-6&FY+4 z?CLdk7pOv)ANJJjP zracHm+XSf_o16UORX+?$n4@v56SQ$$9T)tJzHGyYjz>t*P_639`lfVk8i^5sTABxK zT`f0ns@^6rwX|;Vb0>7IsXE#dZ+{2Ci;MkqCS;Z1SC4u-H@2B%7Y$|gM@=535^Pfv z;ylE&$G=6ZaA(W7lmz1SYMv_`l`J{(Du_Vp`fD|g2(6&x#i$FOvNjs! zbYuF!5S7?V`2my71;T|YsvD{@8B@62R!{X8+r!1a2l`i(MpXS+FqyBlVH$F}{+{fO zrH?(xxWqqq`@+UWv&e8^j&t?CC`#5!VLSgVv3wFm)ZC-VwlR+kNyWL~;Hk={4Hjvd z*kP7kCp<5>&Jy@d=BF=n!Fi`Ssvb(BTC{di@UIIuA0>t`#TpYeDJHbx>mWU&^ZF

R#WBboP+0lpM(!0);PxMd`elKhxD%R=1Te|2M^uzCkm_$@F0%- zm=sc*Jyz$NPUj)x$nfzMoKxd4uq~&b_Dg4IbNgQ1jN}Q+kBy68ky2Y+s0{*fwti7H&>HC{TWitklS*YUs zyTR8GVDOa{^DmrRwY2{T=QhxECJJMahrZJ(JrnJ*d3d~suiZ3R{=tK6u6Mj$WHPQ1 zuL;p?d@gj_hCGW6U`O*QqNP?CxDzbscRY~}4M%gs^64+~!7EGOotfEND7-=>uhA&+ zc&bPhz1K^4%w9eStKRHAV89rUdJGCh%xT30u994HWQZ&wk$uDl3{XwPMW@A5YjkUF z>r=lU6v}A4&vVF%J!b%~KW{$XDglSm8!wyhIK}<2n%kD~*^HO%X`p%Vuu`DI;@ona z(5-g?Wqv;gt$7**V6WJ+{T`xrz|5=@ver4KXaoK9&gSRqrPMdOHT(+~%}Wy(kfy^< z)d|JzmipU`=ZP!dYf8P(PL0rVNKj`xK8h=(zIh|O=ogL?iJ963Atbjkh0ooNVSM6LSumCpa578I_5Qwn&}U4YT;?Z< z+=!=Ie%~qwsW3HJ27~Wr6q?O1fX@!+oxymyH=^kV`RWbU9gA3!bVJd89zLJ)+xNMQl3=MUW7lmYqkpS0A+ry7j%3++Uy6jG>eFNQY7U|4_Xd=WiogWk0{!#`bG3K#M zvQ2NBnTxoCfRXpIHI72|)3#JIokR}=@!a0bFh5QiyMG8#-Bj!#@n1*M=q8-Op9F$k z;4-mz3tQBy8jYiNf$*3CN79Ard66h>haNA52PsAztos6=Y$a9r3LfVqjP8qF*_}>r z%&UyCYt+e1d1*_?KO^Us(Bzi-$_WT|-icT%s}t}v>1~+s)3}-MU7#p%x9U=^6|37F zNjW%Kp{OKJYCJn-AFG1OD5weOl;NA_C_Eo}9si`-=L>CCGw1cFi?{b?ev}?Bnjct9 z-I|{@>@2by(q#>{q5ByBy#1&im-E^i;xnp*8&!4Lj$}aM-V4Q{IQw!V7>m(U^=y`C zuH;xQdu70|5>_DXu~Enmq1bLXT2^9+de9|!&Bl|zm^Sv!Zi!T0x_W9OaOATCf}3yu zJ3o@7VU?JtS*n2n6iY9ujVqh>H}}sV`W8kZ{(=?nW%OIu zUpOtdEY>Snu08{CItv&|DJrA+(oZuFt!Q@bXM5X91!+M;xmFRwdqA<&Ic<6-%PL4c zne+AwB916J8au~LXrKj20IM>rW&qvQ**w*7iXRogYTRGF^ zSlgP;_Yxlb0eN#y*7pnE6{)Q+kjG2jGpEt=yvWdS4{Z|fC~sy2DO&CGtiPLB(%s>f zi8RG<+0&vx_Q?oda`N>kfGf?7^#At0O_&aiLR}@od8~BSoKVri0ASg zLE5W0WAWl?GOL$H*|8$jIO%$<6m4m`Cs`p$kE=QDRdG8GdH``T(`7CYacV-u(58`OY_94gz>n(~ z{tEMrX0L?ydRC23-s)RN1Oq9a-(z(0>OsWvkJUcuGe< zBfc+?pJ38;IZn$joF;iMjf={K5PVxDRV3 zbpao5Ia|-F=_kb-HLLyd){G>z>yLOCpGu7Y7rVOQ)b7}zC3e)a0FH5t3_{?}(@ZI6 zAyKnOS`X%W>JshkMp(X$_sg~SuuC;?Ry0j1CbKB|DPQHu6JmI061(K(P_oia1(5N5 zP4|YTX7TAm@t(BxvYcc{uHA}k59P&7_uOV^E5!NoK1Ksg4lv_m!`4yE83^Ap)j9Rr zl8>+IWcWrXxpwu87J8!@`@SXm_L6>xC^dR`eI^?nsXHxy2cwJLSYk!8gkhfJcb7oK z{cmonj5~>`3r&;o1F|-5oCG@#*2$)^lEohuv*ed_^gzk+%-2HyxH8n$Rb1LCW1M&SF&fcKgf zL?Xna|LOAM*7_L7)YithMluCwVrLi5m0oy`;ZTHb1J9hx;qvYYGO;%k58bxHhPb*1 z&jPTm*WLGS`YU&j8+Uvu&u=#oYr^TajS;>%^(x6UHtDDj;ImzFe7#s>=0%>xh}upB z-1jat92JWt+}ab*>N6n+Q5 zzamFi;BC8Xr$Ms>N}5Z0I3>uKs+B|^6l)THacSaIu_Tb}pgYIcLf2eAMfZ}1n{y+T zyl;rcUPBj}kCq+pJso@+v%gJ36}WH~zwE=y8RpXRZI0m!USVax(3`&QXvdDZ#gT4b z-yGD=nG0AtGdC}qNO$VECr0Sr;eqz85JID~&jYGvgExlaM8uNx>Kx#L20)NX#4a2xuH5 zm8%4Ahu+3=Ez4eb0Y(Z<4v&q zWl(O$`E#5$jEXJa@uN+BgxtvRC^pX`LtDLo*b*%~wrZGum7jd7N>|@UU(?h}^{nda z^_d|Mz*n*<$sz&5uo{Fm;qVvlG&4H_OJrfl9)w;mM*&)*@WmnCm{VmaXk(2o;F*P> zDB-v3V;Xv3H!sF#?oFpuzi@hn@jKs%?*ijHE#-pt7QjdhCs~JdaV>kmCk*4%&v!w;8m#QY(bv|2;RivL# zPRv$)jpeE?@fOM$b)+Yt9YsQlWHCfyV`ac^u6Y-XA8t=C&Moy$``@P^*oasC7QYs) zFWi0YEAH@Jg87Tx4^0LqKi_mi>DuWAk%xnb+Ba+VooVmuk@F7bkLNiP_P1Wa8DwFi zPK}nIKI2JAnmhK$;$7-_yY;|oC8FDjN8ED+xQ^$|NCzi`#=-lTl7h(ugnd+J$(_y| zZf5~gduxpj7UqxgY+K7UH-j%lpq))9ckDgnX1Mz|F}^T&-_Y@%=+rQd7Ly-B*FKbU zBnW>}HA-@}!{xB6DE*#+01;!yvMBZn$35chQEH070ygu~u1wqS{C@DHzP;h2^W9)W z&v<)#}z2@>(%Qree(~lYra6vO9;1XS=jHKc3bda~3UigT|xRX2>?3y#{ zjs0Kjy>(oaYqviPf*>fMq=XCzNQ-oXh_r|xAuZC~9U~wqok~mh&Xml&iVXe|1rSK+{|3}wR&A^eb?%XWvexnSF_WPt`>)uuV!e( z`uCld9OqY;T=_7C@2Ifu36Lt(Rb0l7%Z4lG^O3h@WYt$boK^3lKzO z{ADwjIF(ec>(9^2m2B`1avE&kw=L&n=B(lPY)q|Wq|lMbXrj8PRB_pb0TsM!l)6_2L^bYAfwyeWN9F&F6>q=Gx2+2>}iimZD82 z7(!(nkbe8EhV43Wop6?N<9k07Ul+-*|DH#=VV5ENJPVjKDg!`dM{PERuONZHKutub zR{;FJ{BH4L!{>K0q))Fu9b0h8f9fv;J6(Dy2~04n%;n2ZHMH=R8uQ@lGVU;7u7qPr zog~y+Vs%j)nIs8BR?J0BFnUiG`$+BY?1d8rW$zngy1Lq=V5<<*h=mdNb`o~tKO@HM zaW=SY5WQ$0)-)gD(sy(I#IP|#oqsM$#*wP-Up+|raL6!c^j)%IQ>f!uh zPIG-%@V*tb7%h!1^_6Pdyck^^-3cna*R@A?dFx>MQ5pVQpR^AA-&FSJ!p9-pUrtcdL7&3z~f&gRV&I~FdD=VTY>3tRJUoq_fi>lsI|6KCe9LxuyN4w8Oh2D@SIs4E{F6B2UUWqV2y z{U1)yuCyyOIWH;mK&OngXrGJm2*?%3MvZ^b-a4~!6QP9^i2Db3%8@7E zn6r{4h{HC`5U74KqOiuzfuDoJ*>@ARrX#KNMz0Cy;43RVCd)LudHK`YfgqtkhfS@kd1*!Pc$AY z9v(Vri9WvF+%$ZgZrD|S=8NPNn>;zKO?{#-GP3d_@>Q};SB}#8Y*luJQM1_O%M{C; zH^M5}Ez*USDfu}|DBjML+5`#_|B*YvupM@6K~-scbS%{nI|lWq=Ut+vp>ziXTKhn_ z;WB^&Gl=gx%cYvl9)0vunIah&$@*OIA&qULwE?vww!qiN!jMb?CJMsG!GKFamvYN) zacwMT{L|VHMP=WrXFoH2Dr1%8x7do09{fX}WfY_?Ch*}~0^o3uJ}IIbfR5s!Q$fR^ z%o8RL@1GNZ1+34OQK^#4bAIIDFNr?~0NWYu=Y-ta&zUX+=Fdm-y@wkDm=!%J4}I`@ z{sm+OVB&fqrQpe+Np!f?&U#X>@1<~-(k=!TQ?}WFdw#)<_Shcmosxt;%=sRm_B!y? z*_}v?x~jTElhlu43iLjGZfTUajazRi_Q@ty)pI94xf{uls)zpXh-A_=jug(eo*^u= zh_5kpJWzW$^i5yh2tlRK(3x^45PHt`naB(#mF?V8NN-%a@esX6-EH3;w((t|N`oUIm(}$#-f*FcfK6dA;6bCFiQQXF_glrQFjop0pbXD*W5Ic_r>{ z6iKXh-yHdr+^;meO7ns9@&wZyG07v@Zic%6H<}-Ffw-7rfk^;#>JD=Qlebx}|Hucc zjVfc;0aHGnDm>{UhL)>LRil+B7tK*&2ES%iMrs}Rp9_Hd{wXVr>|B&16kU|71=2(- zw3hyVIx}+o^QqEj&X_ZR6|_UynRQ2DV>PFo`Ek!+?dH!i&EI5!Vnf#~cQLVHl-*Jj zxpeo~I_dVM^3&7buOS(L!s(3H-!YzV8KOvQTTC>B=%JUH&(x%^X~G$=-|iu`x^V+T zLqqi?1`P%-27X-d?yg`XD5Wj(JBCj^aL@(G0nc-y$(TqjsBWB=tj~Yz2M5twoe822 z<`>meW&Pj%eeK`-@QWWba0;GJr>^(k6Rdn+uS`g|c(wX=CF~|gDX#Fs_!$-XE5BbC z%Khdq^#s+dBZfn*&(OW3?-=-E<45-AE6|SI>`1H!lKj5Z=u`XsoB=~wU?hbul1-6i znD0M%@j%lgUq9!Aex=65xGhzl*A~cn38Nr)D80kImIGOD&00_Q*Q?wKdE=j8&0w5ca|)6(gO*HK3RH*3(7%h+BiC79vS1^;5aUziIf6;!uKUryZ$FvNMGj9&XU8d1%SrR8p^uqAo7&;eVQW@4){isNC@Aw zjwLX|G7Ab!o{W0!OPiOcr(o?$xOey2;DrABqV{jt;b+n=I&?$-)w7EE@cDyg8mZ?trpN{hrn4Re>X*7736jiP&(f11slbW1kT=r$Q zg?%O)QIYH_(Z1fmQ@DTn^ft*MtC4-?8%IM)kEX3ht#H{g&+Hv?lCR24ZDZV!q+P{D z`OC6ISXi_HdGR3LbjW>#b-uLclKPmv4r9${nC%1e^g8LL+t_S7Lqyy%5?zy-WAM2- z>1z|i1B?!{wj{Ep59F`!>Mzg;jP?#m%a2Uc9y3LpMXm)Rr5y`(Hr*$52HG-x`E%Rs z)O4do=F%3PAKrFZFL^ROWpN^6lG6FXn*YOYv$w5-osG`ep{Hmt&54*+ zh|Z=+P^f8DW6CUV55tvQlm0Gu*&a(umf50BqT6L(JVFddQrt)R*_&k>SBuV9kL|jo-=T1a6U-$L6~5Q;_I3@T?q@*;t2qdo6b(72)IzL6 zo~E{gY(8hVRVEF7)qYV~qn>1ccgZ#G%JeGZ5QEezWlQ#Q zK}zT4lQrs443f!91+B&TlT;vZdY<2^v3th~I5z z<{6GPMz9PMhimhtQazxO22eJ_FZxiJE)oB#*TKH-lp7L#hPg8v)8~XY z9=DDi&54?y1kIASS$24iaCnDq3*Ja^GkS4Mdg)5^=dMPhR)8>m%6gQ&w`PqQ*4_4Y!9(dGtj=$yXzeuoczU9E+>5JM9*E(3fxz_% z=083Rq+pigeym8rx*i^t(q5u0C2~;t=J6R^sMB*0g0K+jVA@+_`@Td|xsWFi4g~N9qjfj>3@2Msh(@zUG7O~7 zT)E*E;+o63MFkqx2rnqOHSJsC)kz7!bI9nGeuV*1UCht$QUi})nTNV-bfww&y`^iRaUS|N51B(t$9;PhbWgDi!qj0VZyyUN0Ciq! z^8bId{r79@t!A31tecoL0e%UX!0e2&3oLyg<9J_H#@2!gr)bIcu{g8*>w%2>pPU|K z-;StmrX^E%Wj>uS>3dU?xN~(M7*;>9x?cy)-#nb|rE3Yh*%3R4I2d6Ctt1F92!6y{ zFi-P9t>g^^jZFwv)(Dax@Tqmfu0_2H#`X$eq31hcAGNe(;lo#CWuv4ACPM}TvE`_e zG9Lz&Eo*)X4n0u6mIY*Uo?yxY-C>t5jkF8_4{}GR5+1|JeZZK>jYLlFoYj@D}&h!4M<(U`%eUcZdF#8*qY0`-V=< zBLhu6@N`GOtF`Sd_OyCs*{5};sO6f7GAbN8oCl3UeWD>B9Ss`&C&DMEt-Z-UnRxhA zTZmYC=*>Qik<$ggif05Mqo95u13&W4@xnFc*qWIAa$$ZU{XT{HBElfMjIN(3{^e z=H)It{!3y5sByskk4C7zg*HLIeFnmWxNwYUUa%{8F9%I(X1@zT9f5(6;U&YT`8mUL z0Hh{}GW8rNhw%mN7qMhr`TJA=0Ddaj-62Y*wE>IVE zoeDj^S9=KQs$+nywYSf>he410agWRPrw7iI4ov!u*KK~U?;jcdefA%6pcRE4u2-8v z;=_->lKEs3ZmPsM$$p_(ySdt$(jt2DRtS~R#*lfIgB_m*Abef_+_Ul- zS<087YG``LSE_OmMQeE7+D(LpIG4xpaSTVC@AzHE_^qS8k=Cf5E(vOcYdHZ?hseXG zuesHzxU+*30pdr^b^Qdb4dB#$?1Fk@D!xiXb?*xU*M^I`%#;;hu?tR^Q!=sJS zlNP@few>kNZoH&avgIrEwVWx=J&ar-v)?FmJO}d`mzr}L4DaTr+IJqjI{R8()}cE# z=}2}kM$)EI{BkEj8kFZWYWZ>!E)5a1$99Sq6DF?VIz(=DRz+&k*z)#s&frLDs2cAO z8)i9dN&INKEHX3nDDuI=ddgUw(w($#*ZM3A?@+lM^c!Q>9Sg0`H9+XzMO`hyKjI4E zNwprZI^dV)ED!VMWBP1z_4Z}98NC~^yX-^kS^I0DhA2Idg~SaJgI5 zU=FC69IPI*qDHkZN1QyH_T=kIg;uYxc?D;dZB$5kUv7Ew(YWc*oxw&%Yufl)b3*Kp zakwco@Mu8oTsv+NQmeb}>YeIVR~d)h^endeB#`8;*;fT>27FAK*jT;D$;iFDsFCUJ zk3ElTs+*No>S`h^#CsTMiGHU&6_* zOc>{|aeYxAH{UT?*?4dEaeFQcgGam8b3EB=jkiR`y}4)%r7sVZ7nqusNI82D6&10gY~X z>@pjf{jG;sYHiZKMN`_Fl2eYHxiKFY`mb4yeln0@UkSF4eX!zBX%vwmr-BGsQWiBF z6H}u8z`2_nRqa{1g2|*!seYX-+e9-0K#$r09kF;Z%!JM8{j)8VN?w6K|Nj#4@p=-KMIT$(2 zs~7?IJQ#WhT#_YN+8QgzYW8kVv$%>D-pzaV;>MNfS^2`s;_Jl?G0V^6{fG1p)!&St zg~^brT^K-&;Fyt7<)1NcZqfCGgqnnx>}RY068H{)_2&N^_+AXw>bxlQR|ke`{W}Z& zWk@w&;IqF?{y-jU$p5ac(ZaYfYDB4`XqoX~2R~$uXgpB?U!5et`l;GD=TXCwWuWNn zqZnz@=M-^r;uwsCIM3qlV~}Wk>@lc3EtmAsEHTvF52xvp!%0XFgDk9E1 z1o6SP5YSAu&-{MS`ilB@3|BMZo+a2Jq{6y{ycC8eJ0-cE9nPMR_2j?`PnBK({exCk=!Zv)kg z51CxY6UK8tU&QkF6!y}}-C<(6(BpM(EZ%at?YH`Pxd}=Una2dX&9%UH9(u1RNYrWmK_fX|vz|3DYMWFaQJEhrc>CdRI z*}C*c05Pj?tO<%}Rt&hm%S+`iTP?V?H{;XW!6;$kERUabC>X3(62uVWJdroy(jTdY zo>UvFkuKEj!QQ_r5Jzs2XNfcA=YB;xJ4$M{#W4*wY*8kj!~Ujs*p`dKMVDP%3fce0 z=wWO<`RU7zhJ!B~@snj%H}3dpJ`o?w+)~MY*J`KS3m5#Bj6Riw$=*R90Ff^<(n^t~ zVOK5;+5-L7_Z@?Z``7zwsxlqR9;xU3!0BuzJck7A3EqoG^D~j^-TnLG|EqSxM{1!t zB=zI~5ptc5kM`>5^*ABnxH$xn+p}t$>6-s)c)kqe{C#*A?hNf5!a2?mN{>J>wLtRZ zytvtMS`oAuz5I~&uULufgVX;AVw>nV+w4Ls)m{0c254g|>aO+%X^gxVu1Jh z1nBH>;*?eD4vAe8y6Gyl_&u7 zST0%jmlQJ9jAL~}O~biwvN?6gOlw4qse#EU97Ib862}(m52X==5h@S9_XBD|@3m?`;$?BRhT= zQ-`WMy2yemV)`)zufDl{X7!==v+|W|!fJ94L`SI2Oqod4iRmx!2eJS-d}Y4h_yfPu z-dOV!MwPDxckv}qeW?aQTUVA>XMV}vt~b{AXZmhueozmmf9&iQ0DYIJGqxd@k{f4W z*Uib~%Fs^BXWyJ<6|!L}2n@wi0Z`tFdW1NE2BY0F|2|2hOwie7;U`6)aIRgUueScW z6VYgF=%?ikHtlyQUo`_3saUTs#enDJh1g8DappOZ(lScVqG4wh&m0 zPPB3Csh4~U8UBb|L>M|%gWDfUFlS-kthsVqc-Nqc+;>6sI64|u#|Dg97x5iw{u zWw(EP6S@z0f(j<;U(Q#7qJH9zHa%1g0+oye>U|9~f$B}I%f51koPN^0-O!_oDB;_J-0hz1%iETTZ*SbYKOZzZ zHHc{-VaLX8Z9@K_=_;Db+9OO z)<+)|V2#n!Wp+9sx37wg9!t%OxC6Uug9PBcmG~o3LqX* zJjdD~dWHb%F_@HqZisp)iYX-r;k+O&_~H6jD+&4*5#NBSXVXff17mkR!n|mTeOGB5 zzp8LR}RoxdQ6WRhKzL!=b)9*d!*8Z!(H6WcU~=GuEm z&qyHrvEcS;%>7qq^${(qc9#%V#y zo2203tLmN8o?XryY?h?*c`)H)kCSd+#3oyJ!>FZA?6epE5c;V3GS;x$mfmG0W39O$ zH$S|QqcX)qwfJZLyU!~|??N6b(1$j6U}8BCyma2sGj&B@n{Y{|I($MkG<~@io$mZX zXM!*8A@55pTla|T+^9u0|7{C{4Jw@K#YP}XBb-qw7&7;^H+QrZ?-(NC9BGVt7?W!% zZ_)dF>L%T?rtNo(0LYH5-?+J_Y0;~us6o@J#N2yB0(+d#s)}P~p5Z*`i=E7~DF_o| z&iNvhV<}MY6_lHjUW?9}>=1ec*9pFQDc6=x!*(a`*~wC!E94f!Z>#g$G!5~lyOO)N zwKG-AJ?#(J_o|b^8N-$z+T6qJScv@?;dDe^z|I^sp|%J*&H+^*COqQ#fvQnmi%b?7lkda-nVM z2ZhthLH=4U>UCaeGg@7g!RowfU9(cjxd%gIef`UHxMv?j%L-!UW8w4_EHUTK4{lgb z;J#B)wi$H6OQJ?WANlGX2d`xcVz6Cz%y67Z;UiFn68i{P*e#1NjlY@7pPA1KoF(yO z1e+?DyXrSA)>o*t*F|C8EWOGV;x&F;RvJ62-Qx+io7D93iHmi2yfQ0&JBao0GLy7O zHRgN%2|bUQ_8d)Gj_PPNeS=&49NGROT-7y8!#by>OAp%BO}6pfpA*Z`reVCE2`(;1X_di%1G*R{(lKU%aoSzB1re{U;MMVg-j0#uiqrk90-T7;Jd_omLrl z0=DFax3@O>4z#-t<%jYRl!V1>PTl zf+c8c;GpoFI;bjBYmKrqqj}CY+dGxQ*-nOrC8%5r+5YGgxNN+A;k1>ASteO`7T;?j z2xFXJ#(s9y!vLXl^?MFjjq+otRlNwbm5(Hx&wvchC=xk*XZoQ9^Gu(*6XAmB&U3t5 z?;*p{c*qAy;>=1RGTurh`l6cpR(LpiweO#eu_rnRyrA#KG8a4ZgR~#Bw&c6)m$A(b zrM8w8^rP_*Az=xdr7mnQp1OFte4T8AN+NJ`Ea$I@$w|C)-Jqg&Tvm2VstS9xXKl+a z&6icGeEr!Rh;4*DCPG7=Y@DmZkX)C77xh++^TGM!SY(F=wMy7(l5x;bTpvvk4OVl% zpHR7W8?$xt8N+&V(#c4XQfPKs?RyXU#%Ydh2nt#^T$t3)uCrDw;txEHmVRD+Z7^kizGt+j6zk(r+*2o?{i#Ds6I z;z7I~7bjSfA+rK0^S#j;dkTC(7(HJ$FZm5 z+ns&LjMh0nBsj~~Co^-9VAXhFJ~G2%KJx7lWsb(aYk9r3BPx%bA31R_bG0xcmMw>Z zJCL}SEWmyl)EecOM%Wz=wWOa*v?;q?Q4>CRYli+wN#ol=+@co>Nae@In!-#_9EP*e z^`eGQWZtp;`3AH*n$=eqeP#~_;?-?;6F;@HdeqT8OfI3V3@FqP1VUj|H;TVs{=a@t zw5MBl%3tSx-4gV(mNK&E{FKe3ln`{a;>k0U1;-(s@p6VG(+(XUA-Min8i&Z890udh zw#&??8d3%d_}hTvjkhF9M1r2r5TB^&7&0wI*j+t$=aBYP)7>b4+rFuBx)!0e8U35- zCKrj2Bz_mQMkf(X83&q4Qj5B8u(%md9mLZdA>xVGG1o8q!L>@#pPsmmQOM_-%4$XS z{wqU6Zf{R-M}IT~9PYMMq{TtxZmc`9wre;WlyD#$qKr|8F?{(9<@eC~urvE2&Oly!LIrt~dZ+7n0402Y3>)Fz8+ zdMs(WcQaa}3Un%nS6)hVJ|L-a8Y{S4{RNE;C@zwHBGhXg6?9yWL79QdJ_s$J`4YOV zI|B3or-&SfcSGS!o85IlkXH5MxJ`?)&;umf+7z`bDS#(2b<$WjBrrvd>;91uKQ~So zE5bO>&E=_@wGmKf@_XZRvt#~3s}#72R!RQSF*(0!0c6peum1h=h2H&pPcDS>2SZdZ zX3j7@^qOyvt5c#yi~YA z_)^oAN!nzJ^Hpxvh#Dr4DI1}}kXGia34Tc&_Y1usmk+35=M1$3vS?O##Nn(L1>sB> zOiVc87>a-4JRPtaP8x0l(Z)ZXC>|aX1SE zcHHFwLCg3Wqg(DmkDhATKdh5p2T~elblEMNYnl@jJ6=l$JTp30j#Iv&a+Go*15p%A z;isv6FZzSAUUE;=BNh1PN-rH*Nlr~@uJ7>nP$}@m5ohx~+3XK+j=@s=L6ySxDuTqu8OiE&6<5aqCEGvqPR56c=yUR*O6bCJ>6~KRrpP=D3e5Hzp?r zzBGA+w6p1L{i)oXIE4C5~zqs{-W%@Xyzwt8M%H75QY5xrN1#_$2R{R%j zkp5=7kEQU}!gB^g&H)YPi_g*VDK0$v_cO7dx0U^gY-2|S^Ox03d8z+g@zMmc_yR<_LgFo+f|7z-d)P%Mj>7Gy zmdf-%wGz;)ll9!PCO^&}?`OSK!q3i~q))*4otpYfpiBpYbW};+0uz9VsKL-W9{-ip zVgCab7#jO;NgePX2rU;!YKs>~YEA#aBQ=_?Hu9Pj6og>lV<*!mcPAYj75cT;c9RTd z=;G4*HpIN)X73hF$4qNe^dFzn4q7t5#v#XCW(?4j*H=j*925E&b-LPA%+~m2x7T*b zgHAs8?JgzGwW`a6=(QKcYwH+Ah1t13I+FgXKJ35hHA4yXc(Pgli6bKH9(BEipsI1f z+2YFD{#?o#ewzuZs+?-_#2AhY#pEoI14+cqJ`6dsTJK<=yr|^kMQEP_ERMY?gvu)w zKT1~uT()p@K*=dkY7yWqTCgLTRa}X=?JDz}kVm4QzWsO^%W!zyYxW^@IyoCTl>}M@ zV$v28hwMMWVL?7Zra!s|o=hT`*o^6G#@0U9QevVA{E8=+p*!{tJts2=VH}(<&?-IJ zQ(M_b-!ay2w?2Aj0Du5qMMi9H`_)|Fd!$_U(fW>Y8CwXI>?12~&j*YhkB`-wPTa3Y zlB!OD%_61LV?dgt>My;b@1=pdu=E=N;8LrC&CsI#>N%*HLK1iiw%DKVAjY3xAW?Lw z2qoj4?t!~q>U=KjBMOw|UCu=N8+^xjwv@bA0Aw?Ga;kuvsrVUSa|;Ih3|Q&AaXvo5 zTY31}>Ix+}9~%3R-c7@}->6YCSj3Apf1(|@@Bf(|%F}dUBd!QfNZf?vq2@PFpo@n2 z7|U2&hHt?8PtNn|CnTtE1Z+5avK8&#*f~4{%11{-3D=G7HJ+Yn6}&dwPLKrj(h)a1 zDkXX7kO{DzpTze6OtU{f|Id~KOd^YZDuJ}o&$TQ^k&g*vbwz!p=sA>Yr;~xJO1g_)~;sS#8lhFOBbqbK33;2%rEx1&L@%3_erHYzx zUr}RPWF|tp$q==*?O$s7A^{Z(%b_G>=I_%|ylyH&(} zMYP_5!sXCGTvx#h)!#Adv@*6tGEchmB=Sylt+|8(m$iGA-@kbx@vyJkF@8wR!bbIo zXLBGiy*tO-zF_KIocCL`n+dMwF+r+`c#RS$!re93k}7X9j6bZUc4Q}gCnqvSh3V6L zQ$$y(C-*LodDb+q0>QSiM{~y{E%CT)Drc8gY#;FeK^Nu0$^*r?#`aTvZIy=7jTXTr zc2Ca5hLOD&-qo*Ny*WldxT_bJwct+H`yIpF3S=z+GELpN zPyGB~W&q;NXlB`)G@Fkf!v_7oBLVS4@~y>udFBHC$!PA{jyJZY{aKiX|MKJXw0 zubqL;tZHTQC~#4FsnQjMWF)cd&*E>}o4+I>+r&^#koBw{?2$r694{=+_1-J0UMyxq z(xTz|hT$}i;1ttM=Nqv`SRihvJk=1Qac4c>ujz%)c=C>GCbmBWgc+MKc7M2u@!q85 zQo(Ql5&!nd^lnDeae9ka#J#-vS5F@wwk%Z2xlP!FR#gZ+fE>j6ZHO(sT{z_cJ!(}U z5zzzT%+-}$%?Vp-IFyjBKU7aNO&MGOLg zq&OfHzxV+yhfYDz%A<>h0R9ocr=vb($Z)OW$$zqc&@=mhmOlWHJ_8Ce<39j^1gPon z7uq#zvjwm1n)FO?z~C>cpa)^gZF(MG)k>Kfg#>!g~@!Ff%oolSa^jeiHShE@zLAj9=5T9m; z_5ggkkTxb-@%rx=S$A3iOE=Z(ml;Vrs2}iYcfA|~dH)rFHB1b;P6I<5RXL`CInW_9 zEScAhp7UmT_&Y~6*`%4%zTL9Qq`k`A2;ZI$1vLJnK>8GJ33QWhU1V8 zib*cvbbDD=IY)kN*z!M(_M!a!>NLAm10PD4qap>b$BRi3b|klBYv6qsPb`$?Na1qY-k*2aXxwYLhi;Xa>*} z>`U~=ngVGh>X~t+CqpKcljmn?`AWfP4^C znMs8BwH@~PUM3e6*fTuQAl=wZfXt4=8&zwks@p4HI0g^G55FM-@dIT2f9*%a8La$* zMriVD!jf=0I4)3t`^F{>COHHu{MNpm_l0BVes+TjLIo&XSjU5a7wYWy3!#h8J7Xj( z#H0o#SE-pPXOPurAe)Q}q8;J0zf=jmevfk4=YC_4zJLL5^rNGpb>FH(*p>qipSTA+ zjX=O~Kj#NatdOk@!12kLX+iL-#sG(k+8y`k=b+DM5iuU_ZD`$%G;LRa*ie^6=pyK zyayC0{Gt&q>PQ@Z555CMVe;=G$p_G+Kdx@hZoqi?hlBH{$ z5$m*cda&|TX3Cy?FY_abDe((ITPM}R1v-X~+h#A=bY5k9%6W7Hp>7ZGDJ~UmC^h9q ze%~PPR#XE@u8ru2oLwe+PZWBcSnhVQ)TfKgGMX2)kg3A`JA zxQBRlZ<%PD=(=eb++jk6(%=6`Q(=8a{=CyU5v$b0;Qyv=|nTG$yL=MWZby5=x zuR~v8S5bbMkQK_mR2{h0$>>52Ib1Q%Q7f7ppFyQbPlJS)Q<%kfGsnuC~d*V}FAF+RZydRB{a zD34ht`!KQ+&>y}ueq*$>l1D2==(;$3bV$km+KCe4GQ5A0qKAOGhn8<&qQo{=N6MS# zpzC(}Sijxo8~J53#zw4s948OR7b7?hO)ScPiIDd@#=RdZ^Fmp832$j|u?@CQvPU#y&KXDElCA_3`*p58TieKLnoJh+ub zKGq5pS43zhCjL540bR2#GjEr7{c6Ay1;u*S!J1_aqi!2^U?G+~HgRg&C0S zM?svk)`=};&phd_x4alZ4AI|c#VmqISRcKnjV|YX*v_b0ps0Pb(6=lq#2PE`OW<&zA)DWnm-%b-J><>Q zb_0z4x_aMYg`%lhPp4^WlY@6W6t)M620}1lVOqr2dzl^*JS7pdZiV~e%UWma*;w_Z$Y)`gEqNAqJIh$TE;q~Y$R5zrNf zJ4SXV4(Vpcq+L?6e{3BJ6w2<-ID)=Rui-*YY`*O5pdA%tTK(^wh=#L=NQl!J zfwAcy$lB|pZ6}3>k5?}Y_2J~0H(-nL07ZF31C*;p8(jDd!1_;N$FvB)AOEsL)){?k z26P%|9f)46_C8kw-I^f+o`qaI^9HA>U97rv*P{F?nq*xFK&&Ni{khB^l37&(n{n%Q z5%;`UT#GqvU>(3=$$*sL^CE>Rx2Y;v#Pr&QCP$BYS?tlfoukQk$6|e`} z+fQ8h6}^M2;fq62Wg*D+W8fUg0iae6K-ZJ`XhiJR?1jq%|LO8D1A2GG+*8KE8n#YN zIeffwp*7)YUgr70n&09^?S!t$PU21~ry^N?Q;Mv`(}p(^pp^2@?|TFI5JO1$+QW#W zQPT^b19$a@y(5%$uhGI6^R&NM9T1dV1~&3y=ZS!YY)+zIo~@y;n*U~j(w+5k5;Vz- zpX8DP1TZXbY}&p8B3ZdcJlOME?{Myz4dh@N*6cJ=>PZ~dKaW<>^uyl`M zW2CsaT;YWZ1_p2Z7nB1kp&6Gk3LU;AxhMj324zVAHM0Rg;Q%7V9Lb!71b4;j11A7B zUw>f>qSwcfOTwgGUCH#z~(dcel0YZ3am z+u%|OH29_1%rC0eM`!85q$g7W3*8S`=&k56?}Z=xy~k2cbg?bqB{_)Wg@qpEMZy6w zlNWQf0k0C36P*VS08IS(2Y1b?>T$#8>QR`kqZc%9{o%z#c${4Ve27|r;1@nb{iz9B z?%y`>^$%86cJ*={HG>soeM1q|0TASP<8{2K$Z}uF>VJ|^f);PPKLkFbEoTN07{Gzc z0t_}F0o`CgP=$sLdjNL_mDY^QAUe$+Oe+dVJI)Vj|90{nLpTeu3y3+j-cK<{E+zja z6QJLu025cc>v*A+Jq9H&)bg9rC8o5t7awx0qxNIU165)YoQfB9Dch$P7EadQQTlz< z59wooN1v1+@`@4Xu**XsTyGSt7j3=HrrY5GbTKosPiOJy%y3aqBg3X7a{&j?v(Zz0 zB-sSiY<`+q6YdKv+oLzcEL*bbEZ!kQWM41ON0yyPY(Jwn_iC#&f-LI7Ut z3hZ&4Ke{|A2PnL6CnqTD4uG(pfX=fhr$KB2n*sW<8Nf;|?7VnA49)2E4bUlXE>y?d zFaH-%V=H9skmxKMbLq)sz(n=Q$HAqT7#tN0t*Zck>_9vJWWGBEi^-#bY=|sxHCqwOgupqhs z=(X4O*>QKKn81zJ*AK)_pRiTB)5{JlAAnz-o8`zpRv@FYt%-KRzIUyF?%>LvlA(|f zAzU)tMKVZ&dRPp+xMMe|H?lp^y(p79h(D8g_s%@+if9hL*P8HvSGC9P7njeqqer8_ zZWf5}M5Jlf;f*@RN3A)_cpgD-aJ(~701OmgsoFi44NN!uogiFF(I;tM&cigyKNcoI@tr{Y{@sFnWT4cS%jB|{ZfDAds*7xIxE;XTp=yjC}t*!gcF7QDm$&tKIIBjQSE^0GbD)eLGtS?Pgc2EL`6 z(PdUoH=T56bZS-Kr)EJU zf1?Gs0F5B#|Gu$+KhOf+`Q}-AWhSHY%rDO;IA!=K-5K!}#0rPX;GJM#VEVuRfA6x; ziw@sCZoc`vX*56ls!Kzyc9{M_-jr&)oOKQV7`_28MYL?1@(?!=Yt#p|ZYuxQK zm;rZP!?;1`wt=2EIY_*0Jka(~aQDgDYBvwJj+Wqbeo66+rCYU1E|#sMBkL5&r*2_Q zmTnq(f0eu5FA}VVd@bds=GUxVtH2A zxI`9wg-iKW#YT}c`v)2uru5}F`qaE9;??IQ*q<`2~E;yk_*45XQ06K{9>?b{sPyv5w$RNV@s zn0X%jOE<`a``Ga>MN$^{=85$;B^YspHEQ~{%S~$iAM7QxGb%Fmt?}5~mc$6W^vd|z z05i;%h>8%2xN0wKs-A+^u7){h&!(6YCNao3H?5X%wuRocc_ZiS@gn$31+Gm!Hd`fbU?%E}#+idyGvIkwSiYa=iL$Uoc z8gO3T$!_`BuLgi;j##);1^3NAX;QfRJeZ%IphdN=cYJ)zG?%8r*nd)NB8`@zt#;V{ zu3ffw(Gk3`G#S6RGX90GrNfo>7|f0c6WTzsocxa~qQ!anUpn(PCYnqe&B8}+E<9K! zXQv9nj=>nj6}r^G-fFD9zpYlg0<*fKe0%9stQRIlbAo*RS7EY(O9U$T;;I(HK=tx7=#&c+*+OZQ3JHt$q+Pg5Jr#;^QlLKv8F-q$n-q&3}`fZ720OaH`x z>?v^CGNuUbFJF3N=MC&`@GgYL;+P}^wqLpOUi?|%x-wt+c5vcgQusnhn0?N^i%wQ# zexvOj_IRfUr*{^|Whd~Z24M{^F?tFViwZYWCIXqhrhFUlW=uMP*o%FZEdyM}t8TrK zs)_-dAFm8y6I-EDLF}T*HMNiZlbgOQn6A{mSVfbGxTA3rimJ~t9OEnEK5aL#BZd#DJr?^~(y zl{lF_hM4EE2<_e}1r*->fQt>PULJ8Nf;?4A8JydNy;qoK;wcv~>Ye32F2iTd#{>{w ze)Mbq`E)2deA!3Fy=?01#*ii7lPLvv+iNBDK2>k^O71?hmAM)v`z(IUIGN1dDEC4u zT29wh^e9Z+<)YH{HQ1FWco%gqCWoW!hAci!)#-DARl4P)_a(^`)7_B5RCdd*ER}DcXvs5cZx`h2uPRG0}dfAF-mubfPl1gcS(y#Nws)$WMW87I%MQ!1eR8^& z0VtUCiHrnjL%8H9jh+XtVAH4JYBd=?wBWS)2EOj2WPY*{ycKy2;Uv*DKQXFF zjIc0^w%V1}dBsKC2df4Yh>~WzORMp`dWM%9rkKF^3lPe_BT?Kd&8KtIDk4DcZ?%P~WSinkYHocyC&-z+ zHrfW6>wAzGp*zCL74;ES9hl{H(5n^K2JvOssaqYGHR{hV=ykbErFRGV>p!xNU?bxk zRVJaNgVsIp=o7uvo;@zUHqP7ll#9fZ2erkmnueK4GZuj*V>U>#^p<+iIHTtm zTkoE1)s#_{?CvB(N#VYmGH3XZYlfyjE6qKbR~q@VT=^*cL;lyVx|7vgkC&GFg1ICO zSB(X_&UXjEE=S~URD60lo=T{7dvAwdOg&uWf$8K19wI&y#hM-b#P}+P6k+sG$XQ z9tMEDJHe?+wO$2BG4JeUxDonS8L_5lp}6-e58ESLsRq5Pn|#oQR;JW zuTSv=7%pMHynxz`KP_0o1HV_WG_YRrLe+^q3G+2?BNa~DdV_jI=8=XF&*kd#9|*aQ zT6XuNE@__Yx(xDYPL>m@e+B0?H^wuWg{tyl_KQ*@P{ogEQ|x=AI~5rk+rHET6=>Ii z#r0}2E#e0fW?RcvDdxfi>K zDVBj1#0h>f9{3nlm&f`~dfc5#VByB&FKXtLPA=jmX6ujn=X(Rt@~ z*Y>Y|w6Rqm`)k);QFmCX3zNSLxZ8wIqP>laoM1gSR%)6Z@Nu26b29V;=2Ff4Tb=I* zBqLRxn2r|%*Mrx3b(rQ(Lu}_JRHV%4x=&hyw&x#(J5wsI*Em;LDJ)R3X#~z4t%0dF z#I{(AHq4vF#9HoIjLdaey1JTi?fLdJEyTOTKwJlMj^CwsVaIu{*Ot}Tag_3N(FH{< z652mexKC#&E{-F+%8Gaf-!TXidux;hDd_l6f+=QsB?+D9{)%G45Ci=GWR4pBkkkWe z1>&O&G^;ln2zqDp;!10;rJ)w6V*Ab+vo4y=n76?2XXi-t>(#rjyM zI1)v~tGv8-!qq)kF?z2S`L>E7795^ATNsPZQZy zpvLk<7i$vL3|b>6d(ZdUYqCl44XVXE=!-kQe11ZzgGBH?y)9s4jEL?qBNp^BnM4U3 zCz02pcMmNlREH!W=8eaE`LTH+!sSMOb|7;NW;H)G{m?Ajbgn#Mz@95f5Yb$(i@!eXll<7TRyyxdn;27tXF-bI= z>pH8ObkgG-Yi-KiVV7VdMOoW-Oa9*fBFKf%ctpoSi2nZgOb<6gPF|K8-*KcMG zRy2#T0WyViZ|##-CKwx;J;_dRxbMxHJrOT0gHJ&b-lmn^c-vqqd9HW-QMX~Fn)Tzwhyql7j zClX#O`Z$s{Mevbx?J+qy zswg{A#5;;@o1zV`sNL^8-uIrn3ClS-TNBRaC5#$Yu@5@XxaHU@Fd&9}P6Qa1TeV(! zbEb-5qO@4Bb(lxzGw+diAH-0MX%xaes)h(I{!fz7cI3?zYPKR<-DdNMq`CD$`JD;LMOnV z^%Iql728LYBVp$vD3%*o4hNLvMJ-B5q@^J`*m73C_=GtZ@tpFN%;WCoLFz)|qw48V zyFD!fFCjn?3+Fo()vGsibfYx5qxA0vEYYfTy!0t3EtRsZ zYmx^Q*hvc|`Sx4fkX(tLMWwe2;Sq2*!_s3mw+m^{n**S zMMJsr7WMtS<7Iu1Wq6I!rIi8NKd;ZUW(t2##}=lEF2zq7g=3pn9@JBrp)>Aa)tLS~ zV*btoXM$idZ^@(^? zA((pSLKTCl8^q~URL#d)Qh?RdW}b1M7&|$zrkNx{fkG)eXno;cyxqfljj@&%bM=Xu zSx?|xw}ry8P2bHw{p*dN3KxB6!@V@;wjn!g81uNo#I@z3q5D)7}LX26?M2^DyO%vx!wDY95*10 zYj`r1Oj!-HU(e~wB3Lzru{VC7cemzq23Ae+ z7WeG>_j?&0W!5zcvPji(_2#^+rZ7@EUhFrqJC)Mu$UWEj+26bC%(Nr!2xp2S%#aP+ z^U9lMM_G{y*w+-R4oo|gA-V;T?{!%OuQEBMIZ7KpL$eZ-Q3g?>}c1{ z^9ow)oj09z|L$E{gOTjS#SX{+%-76nV0iGa6ekOEv*X$-F6HWBPAjVFXs{_&D9Zbi z$;ooM5-y({H$qCdnrKq-yJn763vFrjvqIw4oa^W+Jy{h>KXOX z$M<370v!m;K($O1;!%~w+vj%cz32_;NxYiCEomnO$>7Jh;oh zpu%_*{BWUJLh<=KjE&9roS+{FU_0hBsYgrm*Hw7M)P3)6Y}q4Nb%(woe0v7fS%K8?hP`>{M#M1=+febNjuQr9JWp=g$&0YW!YyKw31%CNX^B);+=f7vX7myvTXfZ^c zmN0HxmXxy|Kf(nd-#?m&P5?)vIlwVRhIsT1CJzMGWBGGko!abd;>ZSMnRN`Z5d|FR z`VB1I@F~KXC>-F>amb;*7f?pXk)53l-MjYb{4cyQys!TB93>dIV04AF9|)2FL6Zbv zOGCqCejdV@n8-w`y}UtCYzd|!xOA}!994a*I{$$Xq4B4WZhrV<_>Qb0KpH{=sP-PF zRs;@zliT5D(Z76HS6-ep+F@rO8^`^IAX4PUV_OEs37kT$5_Uir(V|2mhnzkISRER2U{X=fq-YWc~G% zE>AT)&TiVi{hraEt@HPc{!->d$&AN_kI`t3*mIi~%NO#j7LU(eFuH%Zda z7<(@iMSsEX!)5%(5*e5(oaG0CY%2g&?yLZ$vBKPpfy=AlBivsg#h>wr%rehm<~7R6 z0UQ%JPYeU_0svWlAdEOX25N;G+F?cBZR(d7$SwXq1BpLDkmz480l+{3?VXSl%CYuC zZk`+VC{vbeZ@)#L^!eX|DFCnC05qZZivU7-;{<^|g>;%O%Uoh_Ex|}he;^Pm^2Fb? z$vV*eib8&kwtv2pUvD)TAZD4;)yMpbrhdg?x04150BHCk1(0t>rf_Y;s;Lt$6^H7r z*~Gl@RyR3urKPwyo9{=EsZU&MK>vdO2m{h?fhFeucnqf9(pELLEJAvYZ}<=gD_%6x z`P2-V=HM2RVnP0&TUObvMFju1K1tfcWSIJm|10+!s(v$IC>|Hdj7^Ugdy!t_M_4^aNs`S{iH zseU_yU#H~PDf>TcLNK`QvZs+EN#!%(OjBo@UVQ|m^iqwf>85S@*Nqzo;nPX55VfkD z-=ai~WqWLB#?Z=wBNw+KHm6PQ@d(wGqh0H-8I*ShZT>ofKsE^-dEKR?w#<+5uFNiZl(?mjxuj4}aB4j{GtMMqi1K<<7T-k2KDl``pm5K!Tliv-Xo z5ZSQV@<$NWfX*FvfQB9je=TxfxDtZ&H^Mo98h4hi_Dg%e_E?IW=60*{3lW(>$QdIH zphv5X=%PG7%n82LE!@lwJBt3V=@xQ)Y7^QN5zl-hWNbEII4NkDj{CU1?M+QuZ_Tk~ z7>X+)7^&$_PLz1+Tg6mmUX}g6vQbkE7)y_@#Nk1(FXdJn=>&I++{$q1toxirW{>XJ z!qz1Iv|;Fm$4c~z*Zu3Si4EUjWeDiE@xhv*UOgt%hv`EBv-W{STY#vx**I*e;FZ7^KA3C;tO76NF; zGAkgOvWIvM$mbG$j^vi?Pw_7Y{O0L(nQFz-!AraE|RF{o? zr7)E&8`{FuFqX?oUFY=n1}^xc#k|9N5_O$D?>#77i1%ZY6pU-ybMg}Q(U2GF*XDd* zi4cRTwKwSPd04gDD@`;BXTj|WHzl04eRVVdCLUaDJ-e1xQ|yn^2{L>bQzDV0XyXg} z9NjdJwXB{Z;u9KSA6;ov9wkZbyvlCOrxW`{mg zp~FG@k8qu@vqk1>FkQm*v+=VK_|w016A1eWmlr)Ht%^OHAck5+L)CkHsYhENzO%h) z>s?S5t*>BfDAV`>a$c$&W{J+>!$)I@Vn=%`9OvPVh@}pgH>19E6W&tGKM)9Q-AEYJ z0rb$c+G#?ULAFn?m-~XNbR3fpmxy!MPd-JJd)GTZI3QzFDj~Yurkwl`HA+$o%F`vy z1VxET64u#x(q4Jk^Ch;QUL8CCxoY7@r&gL}LyRLDxwqKyz(4OJP|3FYGE6y(YUd0qhtaEue{HUs7ycRuf zaq=rmhG(vXrf81l&=)V{C(6=^7w3S&1bD&~*iyJ9OW%VAhz~~h?8!WttN|15jT-eY zZ`I5Nd)eJ1;Ir`^%N-!9;$W3_ZE5Uae)nt^>_QPaF+8%(@eP9RJ8DXG;8KnSe*}FT zz3kzQUIy!cGcl56zPOnRQ7u%>n=?58Q6OZ3v~@$W%-Thrnr)BUxMBU!sa^`}AW6?` zYT8FIpJKS?Xbq-%g_|iXUOKw|vr>V0V-M#1k8Hetoe*fDm z#lSXc@B33XyzL*wPK>2#i9CES*RQ&h2imVBJ?zlVM1(`vQ=}(6H+sk;(*ro;s_!)4 zWl>OddMU6o%i#wLhN7y$KsmB2#;?Ba8gNUm=UpD)P+sw0n-Yhf6 zUgyOxt{NZlWrYF3M!5aZA#f6`FBmSLra4jSCY@&I%#$=SlTz<{w665-vnFq+XlDw> zMQl)%u3gxdlduiR#|Ra5$#=b9MWxqPem-alrKCyGVc4|GDRb|kJ;DyY=@hrVNdg)W zFk(7qXNSQjzPh$kZ)R3AmG9j}jck#X2?2Abtktx(iWs<#+ZEMj#*L_yMvj^%(ydvT z*VWi~$+tgkJIcZ_KPd`>^*w==u9TxMz_lg>rNq@981r<$GETC$XaSVB>l*46fHsgG zGxPFjj8*qZC24wVgm9y!#iBoEkWaRVOLDDHYjsO=`FA-EK6i3-IgeUrqh@q5yY__zjY0Ax?=Y6k@sd>IS9|hFXQBqWLisYiooS-`J(hX6h9QTp{%;sv__$InKr~}v#Ni2rY1i=dv=?aLo^L5u87|cgz8TbA zFU1A>b*Mk#5Nc#SVdpsJSXK|a;e;73pLa-wZe;_=loDhtZrhag)>v76l z7q-5Y9~xPgiod~yL@JwVGeXNtPNY*7-Wuy2btb))-G&KO+{1_VDMhd7M%7$1bYXvs z4qRmR;dl}TsRa~omZsHwpP;xR%_aEn3KCq zXvTo_hFa|y7%oqJS~?X{y1x>-&n>touRh%}ZK4<^Valz~7)MW@jfH0N`N5j?RE=)8 zc>A8f3i$3SciOkBfnm&T3gMiUiNorxrbq5msp%n^-a6-`ufj4bz5?O$0>Xgznq!Q#tkqQJJ6@RKgKS4 zSmpWXPO}V=xTeak82M=)@kMg3$I_~6bSG`d><@%!p#iSPToNlr2J-c1E=`Gv^Zc2F z`m<_O?spEG^h#b52O&$c^xtz~QZI!Sp9R6v^9EOOLsF%JUIU1%i1lP_ zf%3A{pf}ek%LBMLb{R}GVxw>tlmaUE$yeCdWwl_&QRCjY>iNz?aej50EvJe-u2!d= z%$ocHsEGV^+V|8s<6t>xE+FmmB2#;mMDM+y*Me>DqCy~(TTHj+gOaGemvN;Xg01mQ z>K_`ZcYTcIeQiDb&qARer$)Y2s9? z?_w;ze<`->-M3gQ-gDQ?_`CLu?;#QZD|#KmX~~6(BNdeosc(|AaIxSqg{q zid^rvVh*ezR6n$RY%>o{#pKRe$tr@OGm?_-Q^xMx)TJ`_PTC{3&CD~L8bFOnRed*D zF8kMAb5q!NxICa1(u8{*0Mv^r?H6`A{;QIOSE-EWfyBxU&WvD*4pNwwJ15c z87YEwA@P3wC`-7ceyM>8bEBPQo=r@@*K;!ADS%DfVNM_^W`XFB<)|>iH(5w;$??L| zxBW1=hr({yJx7+iGFK5yz56PHkL;_erIAlBb>b~yVb${a z8QV*$VRJJG#4~Tuxsl>wK;k3z!d+3ucPlM~y^B=p=pF?chr90ddoS|Psu3eQ5=0nS zumt>vpV-(ia0hcK%eyV!9X|nc=w*PPHIgV1C#=t%F)ESyFz8L5 zdd`kI@rm$oA=kSz5yFq>NU=>~8l%FyjL*mO75L&~*i){EuCvcH4RrjjhD_3(sw=vjHHvizEV%Y6jYa{6Syp6B&m^(2-lS6?BSwfHh zU5r;oE#PK47tzxm0bLcDhVstJaZ1du86TQAayiBb`kMvGQ%2#f9pUVwefUm1%$!^P z1Pbx5@gaOBR4Zg-&&geXw_%-As2So))l4JXLHzwBwW1S9u*9H&SpSw* zVa@)#s?raHnc^F@;agcHX=*@L$%PmmqIi%~XlVc%m`VK0HkBJivvCbc_Db1ncAij9&V@ zYw@u?uUd)3j~ADRhVdubkT=Dn!-RMUwl2>@T!bb!>Ki9s2&OHAz+OTP7-iqhk4LH^ zWD?mO4u*wt+z$;q>yz3fYLeFBEZv+CP+}ZsSBUqUGw*IUcnkc-T6$i$Y*eu>({aN( zb`ef_c->pRobKDFIZ@N9*m?G3D`sAAo>9&HIVQt(>ZahMs)u`IoCsQRj*4Vi1>QKL zU~jElSb^3QT(-3BjnrUoyj_tA*B70a#%#KCED79wZX1ojYgYk@J+OC2{Xy_yZZ zcJxciRtY+sDCIf9qoW-SjrzFCGS?NJ ze?|%tW3&iO6%)h%}X_ULn z+(-H|B-5OETE`vlKw5KvBVbotw{BFP@LgWXTY&s2PxSOZazFpOvn0@^5K|Pv%n)hD zuPp|bH?7OpT1s^pUl)A{)+w#{jPQ*3;?UJa`;eUUbs*L4Z#cbqa08bc#us!=>Y+@7 z@F@EMsSNT!ZYH>;&{p|3!A0dp1Ij6Mn}_7Svs z^2FoXg01AKaH+h~15pdB@I59%8AdRl{8ogMiP~ZHnYE8}Z|8AeQ&dsa*5bXUDTYz{ z)+jZmeUjzH$>ml2Y6rBZi3G@>)~wxpyR!?;Y#CSHPAD7ny)n5NrXkAM20!l7ovayD zgDd*1c$Dw4yjF8?|Ii(yPWAko2Rtbf0de%L^RY9q0o6Dpp(g!S5Z*=!!?qVnDV+j6?9zNy6kEo{0<~ct)+H`;-E*7S zB8i!m@5Mw*;9mcM01BD!Yh;|%@&ATR*|jJLRgc=uZ}gGtX$K@J?4xw$kRUS^HTa(F z`1_YfybOnphKP6x7$YfSGU(+cX>^i5@9jqUg;&u)gsbAnU@D_V|o zl^T7bu`1$FU$$8}im$x&HqE&sYq&2ZxC6+B)PQDcN=O>jS7`kN0RSnDI@xl!cwtd* z+HNvV&v>xlQ>D>$hC|X*MVHv8N+}8w%CmiBq6`7!fM}pYfV-|ZN>;YVtG+JX8_J22 zQ!mN|jG@WT8((TZ@wSAc^B_U1<@sGL%>7D(Xrh5LhoJE5xdS+<2?Uxdv&=gRY4!p5 zZ9Bs^0&32s!3VUA-lW$F`!&>rUB__Qsnf5sJfVOuVF@BQnl;9EMH%O|0*b}JgS|Q; zQ4Xv|o@OuVKF(Fo8TCJ!ZfVG4NiDUhib=C} zE|FaM%Aw2_k2b6jXlgaW)r5oM8|S75Qe}42zk#`j)knGEax0OB_s6)~W>5lsJ}9_! z@w~Mf=)!I>?0ef&VOS`g-(GCugMVIJ}9*gx#@D6GMZU4DVDC{FRU!Oc(xUbt#QW&4C{smlJjaTOGM zvB1-bD7jw5z?0^I1lj{nb`;^FyMB&cwb+VhmWOV6K9XN|eCfhE!Cp56+Fw_i0`wIN zQ;?!rvF*R&t>I~>zs7Rg6J^-kX7e#Ca6F6K_aI3-tkQ3{0h_NZ7MNqVwzfrr^0wkQ zg1u7a`5GEsQCU9)7?!;%Qv<<)HkUwVHA2@wXsEqp$H4uJs8p)tm2o$p;zp$=lWP)s zH9feKM%d3s%}bl8wdEoqe!_;^-Rqsh8~8mIznT=6Lf1X(ZUw`jhAW*$$7B&!at-fV zmnb?0N_WJ1F)Oi+NX*O&O2MToR9o6h;h`q>@24qg>XU+d`pZc+1e9s|kJv42;Aeqd zFP`YXKB{o~G^hgpyvyU}N{syl-PM7sCS``5Us!xO2!|u%XXBy$*-G*TxI3#QSGzJ1 zC8?Lac!J!-eHQZ=AsFv7mJ|e32?ckYEY3LX&pNY)6TSy0F;E^lMJF{xllXq7A%MCr z)>BV~Nvd0B!TgQ=yQgM}(+9Kll#B0=h-SJZy)-7as*iXZu};^;{(6<>`ro+|opjZC zU+8*j`A1w7+Zzm6=r`50R%I8!za^iiMwQd6;$@JRzXy06w!H)&vbe@SxW)vrFh(Gv zMzq}l-H1;Vq!~foLznJ1kG~L7EyupjpH<^mO&3?n3pO9LW7=ymv0yzQZvCQBZLvq0 z=3WT-cg|!a{r-9M9rYQ-PSxVgbG4OB!nWw;10s>|lXQgnS%|fPZJbfRD}#l8c%iu` zbNu&IPhnJW;A6D;F&S%IoGlZUaJ@PxPe^YtxO{lU%K;O!*yF@T$S{R5Rr#sni)1Sv zX`Q!*wO#iand)5bPD6fjt3P`YoAnP8pN_EA&+HE~^4nM{#TT0$a$x0p)l&z8Ay#!) zRN{Ggr?nRiuUm_UA|)q3Fl%urXlL3M$E>uqUI}_=nL@b>idD<)CYxxQOZ0ax`vUjY zYbk`Y3iU3KnG#JV_O&g9p@O4*;*2Hlt1_H-0maUrJV?$BAvWn%{Su5DkT6{pGf<5*#N!)<@cGSF?u|O^+Q^^jf*UXxHK=v+<7m0=+ zhF$>M(a8Wi_bjsb+&R#w0M0f=&eA}F{oF2F^hwmwLM6#{P|uj07M*iGg~9k5d+;J~ z;`e_admgwVACUX9!@ROR+PgFGp$Y{;`LNG|86RTgfpLw9}~my^A`=bAcqOC;_f!awy!N})+@QK<7MACr;_+;G#*sQIS`kS zH0vcrEs}+ce9^09Ja5OBM9lGiblBygZkn`?Dcn9LbmuH8lqW6Eq{9boAg63HX+gVp zK7sL00hZvuvklPId4pFkZG4|KDCw9ISR(>x=6)Xk=ji+R6xEYPvE*jBVmr0kZqh^o>K0yTx+VNd zxY<2#UT;plRL*?eQ^2U9N?L8?*vRt?V&zy`tMa=tTVr)c~@YSM(Luu6FcpR@O)Iqj#)N z*gDtVv_l+|#wkml?Iy`f&@4%M!NB=mDP3SQd^8)7S(gx^mdh&r4=n^VusbM#`Yb+V zsmG`)mZF4FG8wFQe@wu0fTl#Z)CyF_xQ9EOk2FU7N(zwhNBpO!#`tWdDWOBfmd?w2 zkf#+;{w+38LHFB01}~d%GOP4y!CvcyASBm~0vSFE6;NpJ#yFuV%( zQ~<;U{?Pf|I?Spm{6=aefD$lE5>TVIOT2SQ$Vpu?pdN= zeGM+&qQ|QhPwGLB@}E}`@`MTX6Pl9O7%5g z_fF=58~tV{g^wbtSQSB%y|HWa{-F83@1Mv@A`QFEpXixajd2R*1!;+15!qAcimvr@ z^fRMKYh&TLk*_y4$;tPFsDZ}8kya`5jGvCffh@lfV7s|7kp_wQ_)t?_Ub)roDW1 zTWJNkJ8GucG{yojeP##bgybubNn)nGVULC>!-484SuhV!AqHfsR{${o z4{-fYsNO5fMc~&lez}H!aiRNxBg4Or0Nmiu*O2+QO+d~rN#^nJsm!Wk6RF&zi*FZ;M%l@@i3knzgg28B;drWN9*Pv`#+z*nd|w3P3u36 z@ykW1|LIC|7BI6ifByE{Lc5=bm-)M;{N2o5xPyNA?%y}~*UkC=cb*_F5lrZ@LV5n( zJ?C2!)dUU|f2xH0F9m45smr0{QrlGdwpdr7mz(Kf;*$I96FbPa@hUWY?hF>0K8=9n@KG zEufLa6)qeXSmv>;SL$JqOAW=G_htRs7{^zdtwk4g2`Zm(zlv>eqL7We%lH zZyx3(21Z_T+})FA16+=8w#9I-35V+#IW5Kthr+riBxh)eiuLmoi!^gS8H zZO0wWnYRfE6e{e*=Tboa0ilMR}hs>V+33X*!s_qhX7ALkHsP}gud z-HXkw)z+kc@R0!1k%-{F6l#Dk4_p#Dc=F0R=u{zT-wsmSg*=!ym=JFWz50~2%^Fd7 zjGH2YMKL;>I?fYkzul}0#7+Y(euVas^0vvheh^%HkUeK_*tkuhYzM@VfUNcbdg9IAv z9fM|d8aD>N&kx{maVJUS)@Y9TBq;LY=z4yuOX++ID>BCVEl!{OpKG3-c)8e<_7ulskf=;eYFeBx($51NG z3G6wX%nWUk#Dp)vpJZ6UFr-z4RFfgMR{z8^2?Gw)E*h2*xOvu`M|_vN%!{#d$zf)2 zG|d6qtnh_}wo|aC*xdpuol{jciQC>oxrp*aPyY9QJcC1T_`Sss-5PmeB_qRZJ#(<<)?3B3`33m$r(P0p^@6f-SkZ{vsSv9$K2`OF0i zkA7wdICJmJ=uKJSiKNBx=HyzNIHinc-tHG7v*!}rncK0djc2kr-g}=!ho4DVX9`S@lzZ7b~fu&LKe6(l54nAbYC=c=bOr83UlU)`!XqOvGolP2<}vyROD zPN_%m?bE_o;!Z2GLs?v#llNrj${TOD@_YVvajg#%(-B~hC-vZ#()1P_wKs?{O`qCw z^qww7FJX9#lyLhO+fHG6(V;N;KWcAO_E%s+A%9jEC#IOxQBBEvxAfI%ZMUu))cC$~ zl!ZQCRf2?(g{2+}Dry!&)G2>JcG<`~gZb1j*1~@)Nv|Q#uS~)^t2;D~9EHeoH^V<3 z_T=tnIVr$dvXKd-I4g1C;(6KPhnrQ)*@IfbgWUWYa#2_2P_uD2L;Y}p}f zpRRV)H3?*&6}K{D|DtU7W{il{MB(+k9A293oxTB1M*#zIArdIW$tZ63)dKN`8q{ui z7AD-af;gFd^KpVH3{#?#s$eJ;gr(%in_<8A%@5;F15*Ve!>Fy1!2)`IJq8DEmoHrv z^l`XD+13EP;ex|7Goq2F{im0R&nF&>Z5bw{R#)HN=<9!!UbGDNK**$NJy?urD512;Tia#Q4W08z z3IVx2S-%8QcsI6f;nEVlf3`%eUIA=|9w?BT2Kom(zoIb-n^IdGmbmTst%gA?*N zzfs&hIXg~OM}r4A9~qb`oZeAHz+b{lB&BW>o@ZTY_dakZe6G`Va7iA@n?$YEQ~TWb zLqo;EXoGw?1K`+#to!Ejz&pf?GQV_LTpR&>N5w~V}RCnDl*NtK3~z)%6sYtw+X?;pgN@_;mcP$1I?l9NsGc1I`5O# zl~mDDXK7}hQL6CvJM#0r8((CB^&jqZ%&xUjK}ia@YT+c%g`rS$cS*;&&w8A3gIGMb z&d<1)Z&1ckVs>b`pJTSKVAP1Y6)N)4m!fXuz_rv2jSH?SDSY{~h(>Qe|B&y&+Ps=o^7? zML7JSmU6v?V0q>AsENbMaJcWCLxoz>;1*?wBt<}7rUPEbb9eW;DbMIZxB4LMhd5|V zA$`8s7TZ4%Xrzg4%FXIiXA*3MF^deP($g1q!4^a2$Ki8w?AgJZ1x`pb4aHCM&mMUL zPUe(&?XtWNH%MG|4C%5ZS!RyJbe6>QS!K((n*oF%KSnYZ=bWnxBWt&~Asj{}usfpKh zDYkBs8I}ukFM?!Z4ei%gou4bdM1HnoO4x$FJad``cF<8(mXvX@bNvv?kc`*&>Pr&r z9$IX!C3_*c)es850_cIdg<#tBflWCREma$7`kkxp(h_m~tz=&PMTQyU(s9BCynBkZ zyw|zp=#=WoLAxG;GrnTpLjJdOJiqnJOH2kYoOh+%u^;+4lXWo$shm0|J9Rnnjy@=O zFcJuu^g=%O^>g=?X_)B$K)@_t4jo~Jik!{*gkgR zLTK<558*Fu*@Js{Rh@H_qT~%jp8N0dikYBU)L?OKL}vSchNO$J0G z=T3Efscn2?Ra;M55kmQ&Ts=Qb4Cx-)kIbnDEM3!cJDaU6GhpVqk!DV3k7x`Y^ zZ`O0&H69Mr=y`ue+b9)Lv2(ed!R%3^$mD2Ah7Tromp)|$_zj2E>^o@7Iakb^@R1?o zr^Kx2^SR|n)^u-zpF{nZ+wzc0C(3GR<2`fL%jG#M)i9`qXS!bw4Kmu|F;EekQ8tjR z16_NczijKv(=bsk@OFV27J+8-3++l0{S~TizP1p~EXcCY&>(FQRpeH6dkNZhG2-NE z(Zlu*KO0kOKrwAeE4F5z@~OKzIpuB(Z&wb|cL#dUS@M&(-9;kkYn~Z`_Q3lD>qFbKHWX0!2MWFXK*lH*Nb;a7zMq1gg|3s`N-4^Dck&{B zP1CU}Sa^}L_!EH$Jz5ziT77^00M?Zj$NjZZ`IZEWaoY~)FXUKxB7*LJbzB0uH*xK8 zGiZ8bZ;Ao5L{g+6)u?kFlP>McgO0IAEBo3u*<${4`aw?e(B{eFU$NliMwIP zvJ{iSoT1K4C3VV-o1een`<3Y%%dX*xN-3`6g0*>em&ad}adL}z>hiUy*L>S^^7lUx zTHR>0lRK0w4mWtwz%5w)K(K^Z%K^HRUbL+X*9QUz8_=_@ z9v5L@$E~v`dWIXH>m$w7`dDnSurlA5_e%;Lmg9Fd22?g|DS$giLG5npD>@*S{I5$s z#KUzfL;QKE&vj^V-suY0*A?ft3T?rXfHi#G4L`iFl$0oc1Kkm~+<-sU=uN)@I0ui0 z;wo=eqZe) z5D<{wi9kXx(h;OLNvJ_kN+6+z>YZz!bM{?pzh}SgzW4pKKEQ8|31Lpgm~)J0JkP)E zb5b}1yAr}+fMx^DS+c-cWjeib0A?iLYf=jZx>K!DJ@q$x-5D-+UeoZrk5Dw%5|LCn z$Zs~`trESk=xd+OB{^5b>i4=wHm@f%??&b`1OTSfaO?Z44>K({IQH+__Ig3{>1Y&( z0SCh&vFBttB>uaROJwK4%NX62+jSGWtoNIfMJ)~CY0UHo*%rzwW_F45Pr;FM(s_ga8^m0Dd z^a{T&T6(d#%abc&aDU>uY!0y<-u6o_Gh8>D)M7?SnOqW@IcYX=nAIZa*w`kCkNnmW z1O6VAN-bJ7@Wg4p^UAH9!&7Du6(dr0_MjVi!pRrJH*=_7h$mdZ9Cuf#iJ!~6-J0@Y zHyPSKYPLt-v%iZR!PSoPV7g93lPk4fI98WL`e0R*ogMRS}%2Y%b00 zct&2ExR5KeXcF;Yp{wQvHE~GvxanbiJt)v=3`aHB{c!pqH0+Xf@^FhaUh-19<*tRb z#<(6$@{ZG$q%U@1gcBXYaH3} z#wLj|oETdwCB3Rm-w=w~L*<)2m*f*7QqEQ08*YyEfdV|S+osNRt>o%u?su+qj^08; zeQa6rH+JBw=>|xYk;`>dMrk{bF6jAuU`U3q+n^W1jnXitqmopamww_TCT(;3n=W7HP z<7$FJ#L__F1E|{?PniVecnD`&S6B2qb7{1fsjh=B<)#seu`ntZM$sZ?+BuM;h*MJo z)ZF2!gicmQ&85`TMni9CvdUDVeTy{y99?N;v_Ducwugvh0h~Cx? zFnq>MtP9CvXl1uIMtAK3O$`}i{_7Wg{`aD|)}s~atK z$#BfwTsgtTihTh{p(z+dFF{#gwbg;9EnREchkaRM)~o(yVG_GCq~=$&vEl8bZ2Ym3 zOe%Q*XNh`Bqx8YSU+XrvA&G8w!LRbXViyaWXnTf?0&~=N^X`_R21K-7xNMChGU{qv z4bQTtwsc5s8LyyBlB7$^Cm>Y1{!e4E6Q@27A{;FGQpINeS7sHUz&kETX` zaeE%6>BlOyXhteb&6>sSOqe6QSXxn{VlL>*W}Q8nuB3@&XVjcIH?M}Km`qaQ8sPVixT%d1L*bx+dv3n8R+XoTmyxI||!e@c9f~uQizl}wO z+;+C%L0k@L!$i2@?M;%_JVyRnS1kwQc5YO6@~etb1lV@jQd>jaALC5Je1J7BjrlN< z8JvPzjOW;Z0}^zLR-8gcUY|9%xz`u68-L2dDt=X@@n=YlKdPF}R3XRO&`PqFW9f=bZbT^}#ea zsxM5^9aOd(NDcUQxH>E8(x;WxwLAMY>zt2-Mtfm|K?buS zxA4b?SkZ-@56O6qL1LP@!X(!so7G`>g1$VI21_$0|7UAS507WVQD&bB{98N1jd-3ME4 z>0G8Mah=_Bi4_bSkS1gsBWY4+QECY~;1;bTmn`A8pkSbS9eVQs3J;~iCt6@HbC>N4 z)nu|uhD!&I^-85X&24zhrso|JbV>)7$xY{^Oh#!J(P|xme7WTv0 zb1sGZn++_HQI%_Txh6^VSBmeTuDOU2IqVQTF7MSG(563jptrRO8uXnCnOi)%6C_>{ zAKKmQTX#g3EwX^p6gIcHKXc6RO;bXfwLJB?Jo_Dwq)w8C()=clbrE1*x(5&_37~%c z3*44dO8kYc%?!CJ6|#{*nuTD`ISa9~=;fM^N)@!BH!<=zZP>*lc9Q&jBQC?udMQ)FwCdHS)lplrnwR=C`_{x(+o*aT5 zQ5dD!$PvJ~hqo%0Km(5ZW@TsE<;Qm{ALAI}*Q~xjpndF=zzrsMC+8<$n=0iee|Znq zP+D<1``i?o_A=*6^VC7?mK-4)p=b{k%kvz9`L1T9 zV2P8r6s8Qv8G-6q6rXNqHs>S(n{(uI(z{h?CW4GPBRW1yLt)+>H(gFH`#&I48{Rx>dv5MTCB{utAt$lFk=W*3 zom=G}3TR|!lmOju1sj|mMb+8n)MXgj73@>i@LF7iQEM9R^hPgY19J7mq*|2Q&&O`9 zr&vRz5Zh1EM!2FMcJA^i=;63{YoJU~wT2QWxq|eTc@d&L?L;48ZY3g7Y94ict@SN~ zv4gx@uC2j?8olD=d3MWOT5YUuPmUNqaW&qKKUZV&P}xUR`gx`xjZZw)_DnMTrG%Bl ze!hgejf}RyNQluOl(SQX4>55rLD{fEp=;0(xsp~kvlw8e{}J1AU+S26a6Y5foPs(diamxX8 zkf+*g+vAMbT7ngm zYm?3@g$alQQTq2=g9aW4=hu8#O>TUdQT@T47y4c8H^D)|I#3if`%UmJA^bOi9qDg^ z3B}Ao#pL)?V98a}H+nsh@rYd6#SdRogxc8tQOr&M!*A}t(3cd_7yco` zs((!!r~-+D#Q%GVg9-pipRfo3Cj9`Ia=XZHf)j=cT~|}}`!S<`?2nHx-!vy);G6)o zBRsTAF%ZDoFKAxk>i}S-g@qq|{0(8%OB&SDDdnc>aW5c=$OTkzu3>gBNPRfZ(7<0v za-M878_NfNe}%mbfKKiJ{&hh>YHv@J^ItC;uNeOKpZmM-{(eyY@-qJYR{TAq{5^gC zy;l6a&i)-#{2f94DN6l&Vfe|>j~pfHl!;I zBKBxyO`X*#&eLP`(FczPk3t^+V5EIp-}*Z`L;vx$A2$yG{OZK{N2&Ml)WgV$e}FW2 zMWx30fGv-amaF+yL!h$y4-0J;h~QtiWdL54z|cU;ncxr3SsESELjCbq+76iNT*;;0 z(2D8*6nYMyJ={2x`c3e)DM;v_-dc?kOE=_jxi^$+0gG*^{cnG@*v4!{{keEry%_x> za!eq<3Gl9QK~|R(es#}ZYzzN>do}4LA!c--pD5hjU_eeO?#*@U?^R~Jt1?1@ylJ-?}yRAK)u377qo^adrJ56{8GW0T1|J?`;e`HfVu zjI)_eT}w=x7T$Xn3rJ|_lbq`-&yqnRzO|AHl7Nmoff`%bU407BOa+Vfxt@62_r5C7 zBigKA)qV%2gOWk&_@n}7mty=LyObsjulZyO-sJt&EqRkHTV;+H>gFg$rl`rcBBde8 z&Puq0aOuP`qD9XoHZF+}6D5h=i;NQp$dk4mj6D8Lz}T|2R`#mozUnZ{PhS~mW@60IPdZFi+%l8j2fJ^OH48T+?1 z1=nxehFWeWerd)uFVP_MJ>OUHy&jc0Ep13W?Y`k6-^@n~7@y-)lwU$g@tG|or46>_ z7^p{&8_C1H>9M(mO^<=&LP=2v?7CerhLS=xzYWVTDvvI;&=A)#6xWVmYZjY&$ zgA3WdrJLuVs!f*M2>1fuR=0&)2VXQVJdr2hW0{LULrXIttWN;C;pWBe0Er*;JK5x-o=fD@5E< zSKX%wUu_Kth=+<+O`7Y;DF&UjjtVxsytjm6Ga=_t!jVK5jt*=E2 z<_?A&>G~7B>}IBYcviQD>Ko90Hn;p!!JmXr$I|&E1f2Gp;MDN&*ONL0L6~%CTE~yk z;$N^hAFAjj+8~EQ{G;P;zh>WDAFBAmG4~Is#ctyH8g=2GMI&9diWfM$!ib0U7mY8( zm5X+JRH^ZyR=9{Pdp6mCsY|XgZ&7(Sr$#V+Q^zEx$e-L%V=pg`nMaUe;>`c#JHlH( zLP8=aK{s<4g(xnl!W1`jK)w}xGzi&yv~c!oG1n)txD@t5IyAO}8cr6h+1+5m0{R&P zWcI0@n|0tSK?=dc^-YOfPnj3ZGAsj{(}L&*25y-ao~z=VVx>8$p(&j?vWbr_r^iBi zUpBB<46(zHGQ$R*Df0QVTiYpDKO`O=jcbfY zGe%f_6?vYj#37M1Q=mi9gRQ z%OWLANa>+*0k8#g*!ON(%*81_=3tTAp=a%5SAN$nw-%IZlN<2RM zSZaGGPUdRj+IeUUnmt7m zm|NThS8Z$k)QjaQkwRM3!h;mhtzWnSLSgd#fm_p=KSBWP%Ru-_#~G1X=&!f1)Jp;A z>XXSoyd`p2r=)%LZuSH?CXcF=*EhQkty_v5z1$ez0e{}$X6DH-c%N(^Tq=ADi+CyR z72u6@k=GC(+(V=WV3ye)q*#seT3QQQ)Z}PZ zqhW?JF*vx;f`3jl{QVqxdGT#;Tm&doR;;_D?XqI($%;kMg96dq^5*T-35a!3ah03D zD(a5sdu|fIXhu=B3FV%w(pmm;lYvpzR7U3b&XAYWXRG_k!rD|HWcfdQT9XwQekUnU zkIrGnImIK~iJdKSyDP4>f*eHdf}}^IrSCeFiq!8bi6oPO6{89ro(nyv*tb`e@#B=o zk<@xGF$dj)rv+;ukIko*#7iuD3r5)(@6PKw+79Su)Qbpg#<5scgpZ7Vcy0APD6DYv zNs&Cy>U!3MM{IN33}y=w@4D_0XD?R;j0)F}%A-I_-CUb-+iNbDJUHKq!l4!7S!s4< zNC=OabFTB7CxK@J+is!^=9u{X^46l~VuW{iDM>7!+ItyB_O`Q3p8HjURw+WZF6ocj z>?u=-jw^9rAwo!NJ^J+!@TV>Bagz6SLZw2QA-jiIm5l8#xr}Svmn1J z#Lr9ABc)ABM+T=LK0#1!ka$?*q%k8DOCG{Y7} zLziuwvgNw;Q;Y*$t4d@Sux+Z#sGYaosSH}*739b(OK!axdo$1C6Qqm-_nxLkBvow! zFM&@~^*LwW#-3tvd8S*IgO7+x5cl>k7TptmVs%X+rkZdQqsGMIEDL<9O4T#(1v0HH z^+pDm=#S>Y&kI~S<&MHHM1B|=iGF5|*d|XM<**UHRiW`-*h^UF3|?;#Y-`Nx(DJLw z@l0U-Wtsf_QQa3=3y5(){Yy^u@n5iTON*I;TAX--Xsb*4Jh)lBM-ZOHeiQSc>S!Lvb!6F+cWM zTG8mA?@g-9Tg43p5e6!jOB$8=DJiqwO$D2aSxoA3Z(QWsAP_*M*577yqJJV88hI~b zX7kiqXIQk-QRdi43KzBffu2O3sh(zUP^N~I$77%>;QV4bNR%WI+l@Z(&1^3|9*4d| ziug55ED)JAeoj`5h|suQ1Ym>TI;6*;+o*bx=`oi#m+<{M*ds&*SZMKju5|;%;>VJ% zlRsEBi3i8P#`l$|ikkH<=OBR`>(ok&C;ZN#J0DWJ!e%h5?XaQ$m|N~At*MXQ^VEgx z)32eJj_AV+dYon)Le%n$uZq|NV3Ia$YmP|y!WgiG+&Ls|%^W#md=dtA|5?IZZP11dBnsXnFgXs4o%m1j`(HYnf zp6TK1dTc20s->p(<3u~6FS+rftHy_;@j;*!1Rio^sdsf2G(`~(7rjU%DV#Mm5W=)b>Ps+v zR0^@ckWJ0RJy&!Va1Sof&8xA0qLIOG1vONw(1ELBgN#cn516FsLYHk+#qF`g-L z5A>mvy}LP^@bFmjVFneo*<%TJ3G2`5PlEafLSB#Ck_LflalVPTlx_>Ex96c~Wp^}5 z3t9l-4=)u{$|lvqdYckh#SSYmH0T$EnD(TY_XkR`PAAJ6XUxdl+UB7dpoi54 z&<_TufkX#I$DPPDR<4ZId_>w&&dZUy-w+eUKBJAIErp6SU+GFdZe zJ$qM65|w&ImvHf`J6b%9lm7fl!3M`2997H znNbc6+27_`x?s>+Bx*}~o-F_Ky(Y_T(r+OGN0O8p!Mh-@cA9Co!=)R)PNxA~=HZL@ zwr|5lR#_+#e|r;q$V&tAv1Bh+jP=l)m|qnP_x?dQvE{j(;kb!ADq1n~8I2G|pS6Vs z1wbRa1LiZmWqcG%5nH-vaL3CO5E7Fnf|S@fk&Pl{^%+>oX}aq_|4MIXVi zXUo%tDbNZlcSctguExvW39*|xxJMN$6~10Yi}N<6F#->%m0PSh73RM=syBXiJ}-j|*ZE8F1Un?9Hmk#^jdR_40KLqVLneQEU!?frT}{mwiyk8Sp6y_<#T zYDxxEmE!yk?n{;+b9|j2T0D|NV0!1=oFNzO&Z1XrgYUZBAI26pl<4vfns+-C`3GWD zkU@nFNuS<;pJv!LgrY~O@jJF}0q-kSmupH+XfjnA=-pnH!}^p$wIKU(`?@g%UtPpV zu#$L+L}QHVqSC8D>%GcWV+9ID8QF&y68Y_v__8xl5CrSig0nQmjzq2u?OqS!Ynq_g zW`y`~l$D{Dz9X$i-svPWJx!)kj`EA2eqX*ln2ZWY@8?WtCr|8GVZk{?dRsg7BE=)& zFxp@BmmD!iW<2mIv9-D;-Kbby58>}h8YX-9WNEN5@xA&rsnz=2Dl_@5ip!ck5F@mH zr2C<@rWLj$DjB&y5OLPchb9(YtB~^ZmDLlOF{Np`)wkE=fc$QSZtJUa9r>pBM@jzv zKQU#1tJ6P@g}VUHlU!DOW<5Ofb48T&vV9ju1X|GdTWgrT_Wlrfd;o)Rj} z+#u9b%}V1&%!Jeq%=5il@Ej<_xuh2p+LhV5M1Bsb+{$D~v9D~etF*4_osE*#yQ>9< z!#`}ehdQy1roY$r4}56}DT*8Ku~HhxT!?6z(g^#JQxm*h1NTUwK>F}1OQ#+V*^-`5G>8kZqFMBqlZmCaSX&*Ki3in-$`)pX= z*lQ6!J!sI}bT~|Z;*V=V0~*QP)%YLKSS#E}>goofaXW-z<5bF&yBqn@k4F9IT9lSe z7h2t8J-9|}>D!HK_ejPqR1x|Zs#0A@6;!?RQmz(TH2W$cU8POAIFB81R8(O#dKG|l zBZcMOqfp)4qkdd(M$;LfA1LTaFm6Rcklf-Yrt7;H_cKkTE#AGC;~L(0b&KNa>OJgy z4%d`)mgu8vZaWTXgen;&E^(YewN}}6!#w6Fcf^$iITSL;{~}*XF_&r%pk-1e98_@| z&3Io&w5j(PY?^EwDT@(1kU0ped=-Z|sT18MlhWaN|H^=nSHncV@jdgg5B(}-5Z`{x!fS zqy8r?&Nd^HDykKlOBzIVruTJKmD&oL(qkhy@w8*SuuVK)*QtCg#hYdv=E5Dl_EcL^NhhIa zPy6eZsgS68*6Ea+jHz;1j6kK*UTm%pbCbw@;Q#t!NXOoE?)8dVJ4IxTEze7@UILJ&#eyy=Vng<_o$z_5?OVk8l8! zJS~#A)STVn|Fhdu51SH6sQov0;aocl5r=Oa${DKBw_kL=n)em3kE2!KwD@rjXjgG1 zl>8=e=R6g3{?onYb-FTWn*Y0Al1Tx05e&mVuGQt$_FVU_3=kagCxGMs^!Y0BtH4OO zpPsm1ToKf{&PTysIno8>iR>ii_Y-z6>ZQT920|k z*R=s!%6kKC?YcVv=tQrS0Jb%G1c;lbc;W$5>}UU>&J}vw=OW-gQ6nAy$u_BG^Xp1b z0t5hF0M{K>`WFF!mH@PpDbQ!_HNOdL7;R4lD;n}GZy(&yAPT$E$^B+S7v#u20^f}Y zV9$>8J-)dxKi_pN=GO@B>vewBrW^N5_?0R3t!9l^7HE_d3)Krjit{|8w@u#>^k{A4 z<-RNa58V4&@f8ZcE%|iEsS(5YwYz!S_b2ob(!cv2694T`!F@; zO$x|3NFn*{`{nJK(rA#j+>j$QCj%>czgF9>V^+G&hIhOgPDa#`L(1Y4k1ijqU%Pex z`E5G?DJTsRT=Wm#=nzgm|n_8|&9s4NHRkhx5?hYXMi~BR2J18pw ztjpt#T(Tg&*bjDN5bwag@R%Lvr&<}SFC4TS=HuhSu2h=0-`EIPY6Nd5IRePwzP=B;X5XG47Sx7LjbM(<2r5!35F123Jb>ndw7o+HHNUO2zr*kz6 z_j%HJPXbZff8YHL@5>S@il2xS;LyDw;HFR_Z3B$H0+YfIsNWXsmp0`NwKSF^)Q;r z9g;(mOx6->=OUD^M^q!Fcdc)ZW`O5icU-^%T`0u_ud<$>GKUlH(GiM3C%ne)q6!DDIYm>^4YVBRdBwW=?e=> zWETaYQKb2q@nxaAbj5eETuErJCQM5c7-#jq%ACVr) zMJn#%OHK+g^>0oiIObcML%U&L>jtVqD4n&hL-dWN4wdg)dv@D4O}W`z@$&E~-ab>f z6GIpMRE_CzRBWf5JkPAV-HM*#Bb-gm>NTDZi(4l3GU?a871Qe}jXV>$8bKa1hN|sh zBfl~d;3~{Am%vx<>NUQxH;$TIu<+;BvU5=@VZ!_-AU$7N1h$wS?Eiq={=bkxApN?? zgJ)bV3o1S^iW^;nsTAT^RoX^s%JOY^%Zc0mkL%HaoO#Sjsd8z2`mOp-L%I%@e zx12R@?&{!dVc{IWmz%G7JJtKlOw{E59jp7V328>|#?6TCcJE%<41i}I6|A)JZ5h44 zmAn_o#M9`(absQMe!tszT+SV3VxI%k4X6fo>~VJkT`Jt&VeEXL`l59~2U))h3t9Ja zVbNV0DpyWzu^Dv}54PZ%_X1eo6z+M^7;4W2|b}A%q3h-CX>-*m}c6 z4TOk0difPXpoR!)%+TQ*|AHhTrJowN=%z6dmHS%Udd58Xo~2H!%+AifXs)}&B@Jg` zVfiV6=@uwPU_3yG>s2}FQxai*BWz;0bfY`uFrHPvJ<(8tb-ED|W8nFeDQb}U(LU1( znUnhqQ+3co@RPWvRleN7t)=}bb~(i0OyphrWf;lE%YOIbUkVO|238b2za!q_mo>-G#GN_3xB(T)*xdM5KX>X z`iuC5!4sUc<+`We;j<^7Qj<;O$#x?buTC94n3d+F0Bq`F9*LRkfq}lg8E#DL9~a&b z{@_a8N1%S@ZFf5Qs+9sQs^;TP4fWHR+BIQlV3bXJJg;;6rMhPO1IO>`)TVNsD#gu% zLNl_|nXU!Es2*6SCy7&OFUVB|C8!(YgO^2p52e}Ny8|@xeAq~)9h+;yT!@J1B_h1} z9VavvKk)cT&*bws*YxEX+%q<2BA|Rl`NgQT@~2H9xzEqo6xLMOSkH^ zR_2upoh|Fe$rnDNHW16l({@vCA}g}K>z6A#&~oi@BNYvsQj z$VHiW3IMy@pJ29yr8hyhOKq(-(@#0Fy!-=cQSW_nL{v^!}-17B8l~h_{f! z&xP$BYMyCoh};Mw$)zGI)bwEf3IT@smqb8}SC4Vl`p2vg$Z3eh4XHeO=fZbD9wZvj zbxS=|@of_g$a zlEZoNaa&3at$csCpX1K-IS4JvCrWimtB69`m2b>YGdi!Wk0gVeXgK8lo}`zLSF|NphGFdV_w{v zRMK?FTT~;it^vDMMm1ao`xk2N&G*tDeRB zEsK>Yn7umj;+-E#zxXxBFMir2Bhid8s9uG| zrq$S8<_(Wu0Y$$FqN;DFc@;fK;hO6aeOjL&&@sX5hN*nQ(#luCv*3F;sL7m{beBi1YvE#ilYWuyu?T_}a<2ndLy@xdF zv7zxn#w+RRMzhlLOZts@b(!|9$h1e*c7oXXq)<<)VvZL zJyXJy*uF)Yb_(!JL0b7s^oY_KYODzPO4y9DGCsAXJ@88wZi)_k6(N(tt1gsWvLI0Y z^WDxUH$D~{sD-;M_ymoZH3c%kQj0r>Nt~V`&@X14EX(C-%3$34WWG+2 zkm<)YsOGXt7`poxz#mxAj%j?e3 z#&JzWMA-I8sM^K*bIwnrpUe_z@tJ2`?Q~PC(+8?I78X$LsrEi@>$<^}Xy*&vQft#9|cba5u=%vEPc>Gat&Hxp~ntqS2?zA zu5SvK)%Vk87M&3`vlrW?d$FfetN3BogZtLm1-*`*@a=_Mxy_C`#@EuEH#QdO8>SH1 zs@uM&RYmIs5G9Jx3UwIqaxS9_Uv2sj^f5}Ax?LfpdS@{J#W zew7yxP(2m05b$(=3Hc1LC?EV$8t`nF!#cjk-RwN=e;s6WrE$UsC12^bY9erHHTdMc z-C*;@n%&@MB5xQ6c69rv-O5?KpIJMuKTdjy8mw>=?@1A8*j}%YkX}-6$skHxDN)$& zIQOttlN%mY*|SGA?rkh6RT=5)@7-}7F1*A9wd`wNxGbtzgepEt8`1@`dW#EgV)XXu zkCRMzo!X%9`_~!1myg!a)kvq~#Fsg{c4L|uO7iiE59-3KjaQOa4eQ|bdg|VHHSciw z-+s3iXJ_`#^KHTj%ppI)-{zRCZIl&v{6##RlSYZZ0(tqsU=FnNO1a-J> zniV;Td~ZN7o!3yK*WGv^w9uytlEm7?FYA-3uel(3Q`_D@9AX)|(-3dJ?=Ci=69es*%^skiZ~a$xQN?~z)gh5|BSfHPh8xEi?KlRn3UI&avUoFXk1!AE zS~tYAZnkRa;Zeh%RFuH?u`ikS{(j7C&*`IH&W&H__@3bK#-#ix{aNU zafify^((iwnQO7N9?(u(dwb-zQpl70A(@0!%_b7S3UqOB)!}1hW7e^08Ov?b2d0xd zqTXkvC9(}%(40jRGrMTbB$mMp`DbibzO4Qd5;lLv+Maa^FoGTx*n#Lwh=`rQoO{;* zpIw+s#{r>*)a-*K7I`|!&q9OUx86+A%(FOCDgG(v@R$5b%lB=}?eMCVFsbPMCVB#s zfzAOowgiEMkqIV?MJ8^oT*aiv#4qC5UUv?l;Xbm$AC_DHT`r{hNKsMC4h(%7&lR)- zx<_Ao$CH$lJBGUs9>LHMaczQsi_oo-V8G{rS^#E+lBza<$hT3 zOT~%zyDvTYt8II1ac7@?6MP5#!T;H8j#)bgjyRjCF5cSyp(9eJ?!kROMxgjsN%gkJ z!;(@W&+Dg;Nqc9_J{}X_nSa(%yf_5b{4h`ly~^nuoag*xj?sXG~Zb1 z4-#1I3lcaQ1b{D-qj&x#c~iP~sDFZQ_)XA3@tdF@oc=H1I7J?na4PX9zX@_u-XD@xQdDPX*TPJpaChzk7io;eY?L(7hGPsKSo-GtAPO zK71RqLl|wZ<(Oq3zz`#Am9Q$$z9p)na4wWI&1gkXL*RyJG8iqBAW$i8z0qo(JegHw z#H_8YDD{(Qa(nt%8EGZ{ajLj{vg?V5>qfb!OZ5iIep0E;=rTm~H^FXqC=U6TMgv`q zKCM1sWzs<2_*jIA2{RE*Cy}=_Z{VPxspi|A>Jw6J>rMw>10m7oP zzXU>m4T~lr2#CtggyosPUneDI7ZD*7-ybIVlFC)|-<%IPqR{+H==Ik?432_W>bJnt zE*Gt_>Mem7yZ8c+<+zW8$k=~#K0c77p!MG_W{~=-k_Du0sJj^c_Cnjy=f3eqtj41& z7|_2tuhI6#VDbMXkd#50OzvQKI~vl1sCO36%F%FH;J?Jf zS&#~sW8dT@)KL31Klk8D3AmdQP0FjlCuuD4IVIO~2K6QAV{XD>-w5Qo2?A(zwxwDB zG8D7&)x4WazckQh*`aXGD_jCzM~XRXs1s9%e>GZv!tp614=DQFDk=N2@v!8oNB@2= zK`3CY{-3pC+IJI~E`1Gx!O+WX&*ut=m3BnU4Alg2m@SyTR;v0 zMh3f}n?}vjpgT_J4--$Z%>ar(&$^9vj_Q-CD%uWBwVlD)EzYu-N6rAEXe03x`tgbh zsG|2X5Bw5jl~eTi=#i6A`e+2L)UAa*gvCfjOIK9gN3ZYUL2K69H`GN7EVQ(q+`Ci6 zOVLujYcvDH16A}Mi<-tM@#^rAwpZ(a8c%&*-qS>^|fgJP#YAu0$UvK^~u@f6f`yT@@QRukt>zhdhS&xKNBfE z{72>Xj-?aG%tmnb6BZVMaKE{rF8WPDFSYmJ-Itc4B*?1EjZZs0VkFREx0#SCaA0t; zwfRN^ti&2Xh{<~NCBtcH_8PSbxgkmzyEhZXiTvOV9K11gi-`)8R>2k+E7A~{E7Xk1nv+L)& zE-r4}niJ{zaP4hJaFjc5gUb%lF^7xcH*+=P>v3MDiJjoHT`JcAm5TC>m&2u2E`}8@ zENlwiG-4Tk^y4QC=6p#%C01fb4CDmf5XpYmJiDU3Z+=8>XSr@wIx9tlClC_aumbGO5X$t z{%Em(+0!^Wl+v}y31?rZ%7z~;vc~V&k6{oOh7&)HBWA#6;)L+W4>(j0Vhh+_tg9}B zFEb30A9v8J(9NAcj?|6`zON?@KTF?V6zGZA(r>a(_ti_YE_<2hIgb&dq|)ib<#x_V z1MX~A&sL6Jm8yGPl~0y8yy?Ll zVU|5#wz#QI{Uv6W!jz}AY$`@~zAosr-Q3H%%5dE!u)d`Zkwl;OVNOSMX|ba_zZuaC z3ErJ8t5WUvo^n%Cg)Fx*OPedH<@Z;svG3$DWbnKjKoPe!CRsZ*lV5`#bBPnRGnq_} z_6F;n2YM~Xb9Qg}0SY?$0d=mAEtX!iK3>CASJQ1OuPy8 zMRg^CEx<0Z#Z_;|HZADeX1;!T>JE88Ya!a!N%7^zco{*t80BWW5dLljKJNv5D3{vu zYti>CLU+-{w3ICd$DzS_h%|AUxL}FIjxV(EsrhH$cl1W)+-q&=J&2PHY}2y(HTetgzb+q=84ud}n3aWjb2g-&H=7L7Y9I?z+16K~ZBY(&Uy`VtPVQ zNnh@@R(%)jQ14OAaLHz7{AGfOCEUM!a|#K2y)eHmaS=8nWvx*sAI{GsD$`>{P5w zeiRyfCwZ+fL1tb?K;X_RHp;B7C8~2ZC$t|fG(q~i^u>MUyJuXJ+ee&s5yDPM4jI`j z{>MX#T#UEMUwtCJ+El~&eR1%S%zA^qOMBXn^^<)sAiY?8(B3fu3-sSRS;|}z_BwWU18yU;?TNb zU{Ua==rgb3<4FzmeL|H|w$NiI{9~_(#dyWtzy8ou=is2Z*3arfYQwF%P02GWThLYy zj=+fev{>vN%2BwlM$~z%U|dI7!NH6@7NFTkKwO!_+O(hjxA^II zbUczN?=*%>dPAwr7q&7D0nHuvt(*A4EwynGrSIEgmZ&*(Z;VKn42n&6{jR*Gr%pAc zhFD_Q@o^?eQQ>BDbvoVbG0Ve2q(&rVHj!@8La%oSC{4T2{~Pq#KHZ}mw>l}@_Lnhe z>-nu_hWfOC?>OoHsBJgLy8V?%jBm7)bY;!;cSEdwg=ti*gzz}X&j!@hl7rwRY_c_y*P?u>#PH=Y|BlmY+%yu((C`37Z}C6^^{(l89<0P5WT5!Vvu)Qg=<4 z$Wo2CTj?IPCEvrR_BpX%7D)h2BTKywy=NHdY<;sS$7vt3I=5R1x*4hV99F!AdlPa6 zT2qYn;XgjkIQ58!XND&32Ho|OMw!7P5k$?<)i}uoWP~=ybh`sGS(p4_f6h&&pWH)l z236`;r7m)si-A>Y+6{7GHT>()RFS7@FFV~tpV#`a^SWgueNdliV~~1S`$(b9-{GQU$fqrL4|%#fYwJ_t<914! zf_9IQT4FTohyy-_*YqyLjxeMFhX~ z7`OChyHztUv`a95OTn$8Of}1o7^zR(DxuAs+T%R4_kh*w6Yt980Mh&g#9p5s* zTl8(|*VV`BG2}cql_+%7&c)E~q|;PuU3nz;Sesu#?qku)$xo)TJ#CB0afFJE^`xIi zOZIk^llNemE=##*Zv%$|tOcf`Wj6 zbfp*RgcuO%y$DDLsS*^Fjt~$b1PDcXQEDg>Y62?7Pz54{_$>Bmy3aXJIp5yjyFU<; zmCQ;qSu=Cb%zgc@#<9^YrXD@=71G&>CJU^UZcmqn>TRBSfb@I?W`(>cqP8OI6o`y)f4p_8 zr-P|+zx_p^>gK0%#O`vf>BIbD`m(8w$1LU<|6n*`gC1g<3REg1@ zc8!0%RoPmTQ2TbA_kERIAgWy0>|l9NYLTvM{+tW!WE_^@59SyjeEh1dZ0L3Nu$s$c z)CVqZzaq2e8Z7B$oKQ#7t{5B;j~69(ass@a2zF-k+3#%f%1Zn=7JrbL*2B&1I>d8%9As# z{>AZu=6lJ`f%7@=y6R5>^PNA)Sj9UhMw%#!dT_Hsi|szDhL`%WCzse=PH|gvMeoKG8?bfoWIXmSDzay6|(N@Kkb8Oo__v(!H=k1gGGD& zAUi9TR<=^(s=%1zQKYQ|FQ|M4^@f7x0`fR#)a^5wL<}M$IX*C-^ILgk!CTf}t|lz- zgG{z6)8sP}EU-pjIXgR!Pt@{{bX%!gpWj}2ji{Qn37qcR7$D>Uj|LQPd*(jqZ7tmE zN?6Ca@6Sjp3>t^PR@sFhwh0+X^0_G&61R@j&8@H}hmSfx`lEXd>Fb_N>+&bs%AHd$ z<6ACVsec41n0D~=h}Y^rEQ9*F;nLi*V6)Q#TGZJY zT>l|owETNFY%1oniw80zr0M<+M(Sy^*&T;Rx4aSdUK8QPB`D+QNJiK|HAa z){>QkTAdzBQpm{6a!baV6>YKkWdwM5~#E<4#TY7c<0mn^2Vz zYH&Jq23wCI82^UGH#r@3=GIT#r7c=(W&ED%G|r^oSak}@X0|oZq@Z9x*>CzR>)4h< zSTS=D31Hf5P->;&yaa&MeGE-|+}WL+ulBIt3D@+e>-XG$%fBVw_Ja(6ICRnVA%v>` z(7bsBA$)q`<880C0ebOtf+YFXN3D`C@&tu*Jxn)+3gbH`!QD~=uYhBB&vOO>K=-Bsxhub{4cKu&Y zQ-~;f>@duySWxs0yoxNlH`bvm$ji{5zOSDwQ^nCxg+c{^>DMW}J2Dyk;YXIuJSHp6(x7=@I2uUYgYv`Fus zd^gp@svt$ISKOA@+FnEEsWZ!X59)58h>9GaEMKvNyPTW_Vp>OwYayZpoh_Lln+hA3 z14m%}&Sq}N|MK&_4`G(_k5JCuUbfFA?l^PYu23f23uUHTe-NbTTrBd~zUcyHy=@_l zTZiYRFP9#6v^7ymjOD`|-)sM1jScO4x^4$3X%Zu1eqFh8lU*(BpjlAkYH{<&<<*pVo5nBI&SVun%6XlCsY83kT@*Le=*BdYcXIvu_b|N$wI)DN2 zL7Kd_qu)E?s7#t%rssyFiC$fB|KNW!NyOo(i?${T4Mw|Gir!%e! zOfk-5Ri4xi1ogQ&;VG@KR)1sfFeN!hO&%n_@nLu9MZ~O-%>{xFWMY#@;vIt%j~E9r z`}&Wys%_qO?rjdTIB8bmQZ=Bdn$^*5Nx8co3+|_9{UY|eQz+YiKE6)qoSB^z&_lw5_~k*zzQedTF^EpIb^Mp8{cNVSxbiZZCx%YUv2r`XKY zt$h9qVytkaazi{w2IAJ|%sRhz-3pE?KF4 z@#`{XH8st)FxEomX4hwjo{P5d5w%)IraSgv&-VgqFDX`UV#j2J*>3vou}$Br=Y#l3 zx$z}5bPv45TeWFAmdp}b7pcO*xLF(htvhmct#rHPit=2fL8Qhw-c4x$)av4>f92`@ z##7Pc%rg!5J$r@~Oxl&7Gzy*ih8Im^tx%W(i&Z-LjNMP}*M8#9>*V`U3EKHY-swcF z3_SQaQHeF97-b(=63e+I+UaYa?>}0F;fuSLuipF6=rpDMsk=c9+&pQ^+SlJRXsbjl z`Ls6BY+Qo4Lwd4#audrfy!+qI*gt7D*nzkQ7*9=4T0o%C?NG5*6Oz&}LOdZv8jyr8 zpz%RcuPgHp95SnQ#bLB!gPPnhO(nmP#T!q*tFeXPG#5^{2(FP7wvwYlgyvQPwwGaY zfUAIrZu0f?JNpoiVhvBl0pXAXImh~`lbQW;oIJ9(tNg}Er-P&?0r5tt(P&}nhGBi& z=R+ud=HZ+sb$+)Pr)DOL0VO2TOW>@o(`qa+{?10i zUG=)>GZUNTizaj4>rBLJ*ms8T5;e9=qNP#qe~?kHnIz1y4&%k0&=s}y&UKogD(OV^ z?JwlU4wwsyK4$4bA0Lz|?TaVwR#!}|)U}+Qa2Kg0eb6mClX+!Srk>jDnWk47KHhgI zCia@5s>gF6x(Z?-xZ`3gizjOP94!w0;O<;;2kUb*r3-pu+@Px;p7w9?pIR@Pq&Rbm z`5S>NX^t6>wW{uXbv^)l_x@S`6>D`xiFdkD*G7u`h38g8#{konuV}=baXK`nMLf$g9_wjULgbYo>8Y0zZUC!%y!sE_!!6<|JEnZS9U6%Kw%vYZq{qeaLwpZGChN;LD)jQ9(E!fwf zL9~0Jv5oVckR7+3Iq*b)T3DY%sID8Op@#T>+*QJ;H9T=kzk=rW-l<}$BkSm5a`?%kNBM0($Tw!|0AfhN`#&t1}nr!h1 z0jBK`jhj1F0D0wY*N%nJYn%wDHn@F5ou~jhBx;Nfl>f;?({jCQcs9vyH^R5v-SLGjEf~sreW=#P5da^Uo(%kCf zR!OZ;(YHJkHjMo`d4U0%f%uyF{J58P{f@)kD3Bx+WE3iIAf>FumHAuCWi2#ecb z3DPD&z_{S!&5`)3*^-EjAT`^d3E54V7qe-FcTiUh*gCi}%&)HwY+vOqZ``bdFCLx5 zUCO}bu|TTV>PWmJV!HwvA~*!2oR6f%Y3_t>3eZ`kviLKrwwpVTAg|vLq&C;|&@#{~ z*A@KnyC|;WxuZ(b_Nwt)@`&le8r^NR3(?n1r*5oG!thRj5sng~gb-~3#YAU8J-}eu z{Y#ci>fAzjS_G2W{!=)&JEg;yw2L|S9rdQ#VZMf_rAUjQ@{Gc&_h3vAi%k!F#z zyxO@&mk7q3!2O{Nz+e zc4^{ErQbu7v#OCCeA7o_Zoja{(2tY!D z@)OaJb3v+G$?^BM&Sq}`l6775MlHiA{OiJKo*DW}OL#>kaBbbTb=!=2W+`2K%WlfJ zn}2g2ui;-sw1n;JqY-d%tR=Fe9Y$3zy<9lD3x%%Vq4T&tx8p&{=XEGr+1r%O5wFR~ zYoL%!Mj8ka+nj?h1llkGZ%(@4ewrvPDHrYaxRAG~y;rpGEh2Eb+C!iLq7Am<7Ca;W zKz`}|B#`pxI2$megAU=)Ui6UbpyjrXx2gk1wLLAdm-Eieq>+ejD{cG<>rurw6=VoA zEdf^YA7npGj<7%Aw2865;(g6+8f3OtsxK$WN|Fj7`NxZogilgh?h{I9^Va(y%?moxe=44 zKAzSF%Zhs7`w@0Kx~m4w17b-u?RiWs{KVj~ zrt>fT^sM#Bevr8m72j;Nl=(Z`QWb!*Om=b{5mD~9p7yx2b#d1)fSKvZvnbO5@d-jN z4&Nk?wK{1uD&6edZC+Q7OT1ta->j=l2ll-{Fegl*dPJ&cevlPeMJM9w?#U}Te<;na z(wb0qeqpcPxEWowY0{-nP&C@ii*Ci9+YzrV8pm%)M{S!kWQr?|RSat~WwXZ--d}SR z>b%E&cx?^l+@V8e_~lZzTwS+S%pl7yNU9|dFN`Hk!2TP z4$U;lqdbj5CrhpQ(X6ybd*%72t^v6(WS{zaL+Q~g`{MLz=KZTQDjPI?faEEImnHpa z%5Avo0*Q&hqQnCD$8B^FcG(imK*}Y6Jq>;WG}TGX<{o`0J;Qyp6TZz9UT8k)>cl%9?lc#U#>U$Af|M(RjFcfc3jl8%{ecmDSTDPz4 zf^04m)~9T7BR;eyGyJh0@EGQb#CND2?ANiIAYcR_QNKob1X|`=ej;nPi z$1J~{dI8aS(g9mSD&+LBM|_@spv{or&^hlK=+|Ba^WaRD+3=mO@yP(fE|d1W)3vlt zP_dmhUvnpT5yV<$Mq&c+9v#_3#rr~QXksy%dh`tiW6R%Kl{!Rkm%($C>LxsSm`&++Yiqpd>!$db;XrmYA>(w*V-RDsRE$ms_;i z+TFsv)g3Qeh7+Zp)DRY6tXXNSWu3?grMU72HnGYRHKlqXfhSs$MOO}RI&$#RHx=)O6rfg%^kLA(MIy#E(+Gu11bY%^`>FOG^Kp#K+-D!K)2lAj?kp zU_b!#tCzNk@Sim7Prpk*(|$E%=qWL6A3;fzQ$~9j*h)UwW=q>Yv~L9 z^ryMSKS{02bCkpcX>1*0ZQ}4jr&{myzgJ#J6btW9@^GgqmC*J;u&u_K|pmj$`&mQsH)bF-me2Jg!s~YDfcCE`6Qm{fLPUveu#}YF(^Y ztuec}{@HYA*ETpR5m* z)?+?c5RVj;M5+V`#13M5ZEB_-0lkxq zq3da7^wNuMlzReV5|0=0BFC;ZYwdk$pJS_=EYAF9rOIy5fJ!X5krHc}fAwjsrSL=H z^sW7_p&0Y%)@zfg9OV= z6q#ta_2lay5yH$Qt2zo$=fnX4!31vPqQ*qXbUsZp-@)Cdg%$+qrKWI^^){aqk*VA- z)x5b**nyR6dJ;k|6WrSsKttx7>_lmkX;j#-HF(&$QzpHr&5UGBs+ zoT+2@So`w1`z1k32QU0X+kgoqV2U1eo-Pt?kZ0DEy1j2ShER+&EovF_7LFCGERiUA z&kS}@)W3)zqpUuWTxu+dn2iZs1_puK5r2yshIB6CHoAQY9$00J?hmrAb9%4*ayk{D z=_EQ<$Hr+3Fs!b$@j-~rLf5pF%3G0&_0Mt-P2S&IIbgEkSh@UmBj(%MEL(@%C3%bF z=oXGGDZjiso5LfcinZBdxd(HjR;u_jJczo+;N@25vp4RFMp3nN!d>fIBO7Fffv}3P z4`*|csE^!a%)zm3(5~!ZC|0+%i;Ef>8tO9_zb+S5+CD#pyC-t*E~B&Mb8;)7ZZEi! zLn~Ym6*2J?^>({!1+6oCqDkwDGJ%o>_xYb?0 zNWuR2?igN7j4ahGcE>*2)SJ0=q)|xyCEu`;x+MSgM6#to4a)X!AFht-aR??%V{Cn@A9@!<&au{6x17913$gVFE|@L zC%Q7sAK*1sYJbGrJeT8Q1+H3&6W4w1;~cNw;7-vS4O9Lxah#*5bLbfbxgNO8ASus?|eW5r6ouUP;6?CEtHRMfRw~%hK6VzRZdk+tz+g55E4cHt8~Or zE{3B((qC+l{tmP`~FtT(_Rf}sLF@3Kjcc^$%)R8*`~ zc|Nk`-Nm@&QH$nY94Nt+{xK5&IePvXa{Lsq{C^#CXh=)UsBGSm zaqB?@bQ0)q zV|sKt+LiJzq*857%>;mC0T6}%h_X0uGuiq(%3|>+l*K~#*Cdg@a!H3koB449WPkqs z=XLNan`D@nEsfTdM%&ySdU-rCFDyI$!HzwM!7qPH&CIz0=m!D9?B6i6#~Q-lY&ErS zyE^oqLmyAz0e|8!6+^?(yVbEalRf|Ru=7W9H!ZIXMX{R> zMO~Uwqc_R*$NmQt%m0*q`TuM=vlf;4RZsK5?F#*yG*NNt@uI@FPxDeEf0Ib^=z|ND z05ftf)X>2$ur@usF8C^6@2fD~#%$<CN$0*eO#dl9xPb7hUH%y!-P zg(8^3PKta85K3CwqqmBhGWz*-0;Kjgq@zg^m1XEwzfbBx;Z~n_+3SukS6$%mzUS+< z<)AK=j3UbFCiTab_(t()>zW!fw@68hRX>pa_uX%9MsO%Qmja1Y)|&kJOwo%Z^q4Tb?b;oo)`i z8(>{VRYsnA)jm_|t&7c**q(c~#N+@m{KK*MpTB}o;a>F$Qr5;P)ed=4TKDap?FdlG z!%#od2DGfo_alB-*GhXGF9Vdq8-VaGPz0xv0#t?GWi`R%X0UxaCTdNB+l3G|D<_kV&Cv1;@g zA~*lnZ3Ac*?0$c?jsHuZaQAELlAJ%lrLJo|;OMe^ZR{Y1^kNRPo|tzT;lTQ9)6LRHG>@Ymz$BHd zKK2UDQomU;hSTf6YpVy=`SSFR_01bcY!Hj_$3R=+R?0i3Vb34PP9V#gQ>OCDR!K^~QkNiI@7lww2TC zQ`ziYiUpRB4{Z*&^ROB}KQK=>LUBxG9X-hp9afqo5laXLKixMjI_{-2j-vkltl0d8Qs6?Estqt je^3F$_wkUU^(@)5e|znF-MQA9b+5fggnoX=jui;z{3ZKURP0vU2+7= z56tod5{%QtPA33Wu+31+r`w3@!N_HNxQe{InWnaeqRLH$9|qztTDZA6p%4Iovx}#@ zw$gQa14AQv^fgc$2!I8k0b~}I9&U1)nl~?b{(kh&uoP7G~+@?g;>BH^6!(A5XVSYzJZzcThnP2VP>^pZM`5zWWpB z|Dd_8Ef3N(fT6;%uyD5p0K6Wsp5EKi7UYAs3SvGND|;6Jz$XE*w56Se6^L(xn9JGO z^%94Im>r~d191_EMeqK?)Ako^VR82l{uUOtf8d{Xfh|ELZrFRcIa&DqxcEQ$;q2rE z`tCdd^ z9`q|f24X%diyLYnz5-%J7pGg7vA?XpYh$md0%EYYp!nK*s$BZ(vTdZbhk_1>LH;Pu z-CebRlZEo!#$8_Sx3(1)?jZU}-{a+|ds%#Y@{S>D`KX($oF+Wj&}T?53Ni z=A{ooJz?e!7OI*c2K9k?12+MA;08bsc!9@Vz!h)+>_2SRZ-ZAq?))kYg1S0^$K}2MSSJTsbrY0&N#*rBUwZuCDbW9asdV{PdJH z=*3?whOvS?g<#iVQXqGbGmH#I1#rUzK{;|T8BnqiSS$aVEtj_c?)P79`ojX?PoMur zhslSDf=P}ki^=|vE%7+;gnqa8hev;UU#GNul}yVf0X~{9ecnE)Kl#@UH_nj zMnbEh{m@S6TWAZk9-xP|LmQy)p{YyID&Dp|AXdtdo944OPQCw zz=N-pZd{81jD#G^b#$wetcsYB^R89Lk%ub^_GileHa8lc*u`k+RjrlP(?twrqxN7EYW z5gHmA85$d!2sj!I(HzhM&|=YEpjD!EppBrdpdF&4qf?@DqD!G`pj)7OqDP=VLoY*b zM;}FBLq}j>W6)vnV<=)6VYpy~VWeV|V6V$9 zVXk4GVi97oVM$@##&W>AkM$I*0;?Bm4r?D98=DbZ3|kA^9y=8KDfTPuH`q(qCpbhn z960hgCOBR=@i>Jz9XQiC`?$EcthlncM!251@wmmf-MI6(2s~mu9y}F1E4&cA47@tL zQM|ACnD{LCa`>kB{`jf*)%ZjB+XR>dtOW7|76icr83c_4Qv`>E#Dv!fH3*#vV+l(L z-x7W%LMLJ+QXsM-dO(y%)J?QP3?*hFmM69(4kykh?j>F$K_g)!Q6X_4i6JQ``9K0E zB_b6h)g$#K%^+M`f%XY)8|@|?F`YD>J>3(!cDgNkQhGUhC;F%K zJ@jyfD-6mEUJN-59~e#<*%);h!x$?WKQUo3i89$RJz?r%f-}=Gt1|~Omom?=V6up^ z*s-Ls^s^kZva#y3K4PtB{me$ero!gWR?0TVj>|5?evdtuef%ogRne=CS6^Hm=0M>P z;;`e$;27dW;S}by=X}9A!iCBu#^u75%QeM~!!5_{&0Wg9#6!k&lP8R)p64qsGp`YE zB5yzM1)mU~6JI{x>@}ims@KAyz!gvw2oY!y*cIdyv=+=1{3t{$ zq%QPGs7vTvSVY)exI%bSgjvK~2= zB^)J6BtA>BNm@(hORh*UN?AzdNG(d!OPfn)OE1bW$XLka$}Gz=$y&+2l--cKD(4_q zCinF^-*xxvwbzg3#pQ$KJ8nR4DBXy@@j-z|L02JNVP26@(N?ik5w0Yp6rj|hjH;}r zoTxmdLZf1-Qmg`36;TaR?NP%~(@{%TTfWJ0)BR?XI*Pigdb0Z5EtXp@x9T+j4Hb=K zjZd0vn)fuDwa~OQwKBBUwXbOhYWM39>zL`3=p5a?emmjztS-B*mu{CHzMhF*vEH%% z4gDnjMFU=gAcFxzDnon21|xJMJ)@UKhsFxVDaLCiLM9O=lXuwe_}+PIN@eO~+G>Vx zW?@!sj%u!NUSfV`p<$70ad=nd?(@5FOL@yQ%P&^4R!^)pt);A!tT$|=Y?5p~+e+Cc z+iu#)*rnQS+soUh+wVFkJ7hT=J8C!hS$ z@K^LN2!I7x26P271l|u^3X%)T35EpU4eknI3V9H+7OE6lbRX-!^3I_ZNs36u+c;8T0bI(4}y(NV}+~SfseP1LTp*>L%d@`eiT zikwQa%9vNcE3a2uugzaiR;g8WRf|?v)Ueb%uO+UHu7lM1)xqoS>K7Xf8%7#c8@rk$ znrfSQnhRSPS~6NmTNB!_+8(qa+x^=QJKQ?9J8e5xy3D#}yA8U>d$f8!^s4o~=~L|M z?w9LteIZ}e>fQ^zuN@Q`to9ZIs9{)axM@Ukq-|7Yv~%pn zSl_tH_`t-iiIGX&$&XVeQ;Q$1K7O8dn%TJ%Q*m>6%Xn+;i`$pe?T8)1o#$WK zzt(({{q`Pi0AJg6-$m}l?o;j;9ta+E9cmuVA2}bL9!Dc65k)7WC;i{`zi*uSoS~mR zJ->S1bfI=Jhjd0F-7MTKeyjy9^Kld#Fr(fp1OQw^03aR)*AK=&bG{!GmpSdva(VtI z_-9`DgG?9zDnM|#T$k?vfLGwb8Vd531%S(?`fXVNML^(>1FX3$9yS8}KL7;B9bB3q zkjQ-+06=d7fOB^w^7I7~d7cmE3ey14aqnlYc}a~1<`vnpmuP~*D)jRFYx$Xnf;GR} z_>X7MasdIs%O-z0BRc>>3={#hC@6#xKp})c2_eWHfDW`B6+$$P$&uvii&!c7I?*lMGR3e6Ja%jX_7U+!kNcit3=3p>gf89x{JpyMI zxa%Hh9_7>wok1-RRi( z#N^b+>6xYFmDRQNjnA7~yL+Aav;MH`AM7Fo?LvXUpfL1HyC5h& z-~lCsp)y=UBa+iXx41{l$bTP$rPB20c|+xUH1_zGG@UgmfcI!epvQjGc4@C zW!WEw{b|=MxbQ~#QJ^Sbl%P;BQZTTfqN83GbPRAg1{RFp3f7MTE}yWm!IjZ(1qm{N zfIPs)Xy6|%COYQtxBlyA#w2y=1=fRm)M2ze`sX9rFH3(-F`X`HN)vh7ZPJ|hyz^>VCo=g6;a3g9YU zr%x0CZiz6VLB%>(p^y1L|7$Jmkfz!8O|LoNz*__ z!GH*nzE6}vawX%CL42&u6~sCcXnTavXG5F%y?;t;66^g=_0yt<&a+T?mg zvN|U$UdY$z_CB)>go%qLs>5X0#B+GSS#q+vINs6ED(tpvOH$Xm7-1_Vjq0myITFbG zkS^XrBoJ(N`Z;7*@Yf5WkxA6^F9J^)MRk`Vw=@viE**NV`1Y!9V-3<@+n3ZYI!2Jd z#u5_vR*M9%N;@_R=;;rn?w?`2k-08Lo0~TSaXp19A%Uz%pa-VT*#CiEfp+W-w%JE2 znX@yQ^P~19r6aTiBp`#21cE9Nx<>3rnX*QIZ6fnZFysUga=H`JRa7?Il7OWe$84}q zXh5#s&DkjTZq=P1O-VH=!G0CBavPWKBAD*t)C`{Ys}3AF^f;M7seYY)lk@6~cY&ja zrJqwLTU|?-v2o!MW(0w2aR z+ta+ll+cA(hGL4+K%_Y6<$-tZ`1J8|XqO7L|1*WkNkAdoA?9{SU>}YIj%Sd-L%Khm zqU&H_-q4t0UK?Q?WyW9`A)Kn%@pdMXG9F-Fbc0BtfRkqoUp zzn_N$hPsi!g5w3rUj@mzUa3zG%6uorQveGmZ4w-{!pTbF8|>QiU3B+d&w~+Qh@n4L z@|P-nOojyhb160dPKLgf=lzOjSLCQs{i0t*8SIhf_x0Wt10E~Cg#u%C|1!uWWAZs3 z6xKZ1MA>m2R~8e;q2UPym%S$IPY3-&uX)@p`oM%DpCFZ;<=U&*21*V(YBk7PO?Na* z3Pvyvu!Vox^13W6IaG}KC~wB^U-sJw1DpE9oQ7y+D-#zLt-O1WG2Xp`SrI5*3ByP>f`5@L#JUE`=vKYZx2o3j4X;aGw~fu@Zi87797 z`Y(rHrCf3cDc7)xu}qo=&MPs^PS&{PyXD8mj-lSK){OJ;{->VREEC{+r@(}>vZg5c z-Hlz@Cgr`B5_5d^>l=zTSmH_9M8H=Klz-WQd=odk;y+Q@2J15FF!9kwXD1`D>{cIM zN%9UAPd$JZOL~4$s@X%C`gNAm`gLrQ!tSXFoVY3OHK5ih#_rU3iE7?L_ZZf`5hs!F z#;Lk@g|V+-ddP&`BvnTCa@-jF^JqMlTLI>pGp(OWP2a)N08 zZ_W?8x&N}q{JZ(_e|tpyZT!FJv42PY?{5Fwg6!9M_usAw{vPxHe1-ad|Af~{7M0t# zG$T(>*Y$xfxB;cUx3?;^lo1dG2tzrOaue*(?;K@>oNQ$s59jR&gX`W2nQu8JaU=nX z|M?C3%_iZ((*B}>m$NEv>9<~Zl$t)FB$zgG+Aom#`pp#meE>8({KfsI>KhvvTm2uy zwe`sq@f*rtNFUZ?`^C$hmIVb}EnZMW`$VFp2T`yyw5O`ePhfpv>ERi5oKEp<+;R>_ zms}|>U5q5JxSJED3}ahvRTFBLTi+tI^ks947K8eR1I>#6hfuDoHY7txZLG}W6 zL}_F>6$z8y+x(=h`8S=pZK1EvGur64flhmVG5iV{9k99t|xHsr}hnuROzXxhSc2TiB%8jvEC^!e4Nh^IS z(rNV-NQi*9i&(aAQh2$XU03!hblk3l4~K6%l3x(sk+|?z2U8||c%{zp8Sb(Mk*|o^ z?nM+#UmQQ;-g%)n4WOC=TNSsRS1w7i} z(VJi-MqR-y@FCr=7oN3w`I}UAtwr+rpS|^|;to3*f2OJ&*fd3^&p zJ0Rx7cfW4?6bbN}we}kU`&qx{+J8;FjowWPIR;S;RurBje2PQYcj*YxnMwB6w^ro2 z^=9Z_?F+Oc0^sfa^HQ}zddJ%Jqd7c!oB?(>%J=qsTAoo*ZgVU|pV5{1vT0R~dg-Y> zYW27x&>u?ERlNx2T~|N*FE`p-7TqpC^i`YR_D^xY=`6|Ee~Yg9t6$|AV^hf4LB_>* zx+SGw@E!Jzbk4H9TaLea=C5wLKHS2)tU)5Qg>Y4Cn!tPEK|nKX#L#HZSB0K&wYS^Zxm$*F;+$7^{6I=|%5cPG?bSG!wc(CS zwsTcC$APsdQx1I?R#j3NRuTq!$%0`Z?gWqRc%?KeBI5hr&Wt@m%T`RfRY z1icUFuQpe_T9<=@T}i$iw=p)>RKL#BO#YBgjS(0VA{a_DDK%L0rlWarv6;Bf5iJyJ zc8psPJJRsbS=I5XyoI)eVgst1*c^rVMywtS3FOO+by`Gai&&7oPpO7S;l~92t7}zu z>SfF6QWP0ElV;W0+bbf+>r z(5KXw`&&+3ef9W3s}W26_`!=?bTtO^U4`yZOm7$-CuxmGXa~fzLq8$`+mIOXN8N*_ z-?8!Wx8`}qy-4>NUngi;)x~qlZK&|odnV!xgbiNn)CKS~WJI^fN491%bIN*9UKWQ0 z6qSTGu(vfNEwVe|&IZ1>g^GSayJwmcvTM$hP-Hic3C~PeY&i5)ugLQ#RFhge9DFUt z7gHK5$=ANC7@nEY8kibN7*7J`$X(Rljz$$4ULloWL_S&|!`TP%>5U zV^S(86gCR`G)bnmEuLq#5uf2A9xet@tKS;;EnLPc2r2FN%4Um6h^T$TwbOYq6ojtv zLVG~pFVR#bcK@N0Uc%$D#4{PwiA9+i&J~$%8QlIQUQ|Scgp}}PKy$gI#>;8bJNEkI zvu$HMFFYi9xl7;QdG>~j|JHCVp*Q>Y1#mlSdjgI&u(Z*=Db4q#Dfn4wpu*_Jc)^5_ z3|al7LvB(V+vpDxxcKh^f)thWHF*@eao!o;CdH=cg_C#TPj6OSKoRJ@ZC56|+6e+J z!;Qke^-zUGe%;>TVj1JH4WlkKX8wfJ`vvk~`c0$4P_I(%o7~^J zNg6b;RpCkuRphru)!N-;?0B|s+06N!+3(X!cZJ{w3QbAl2M>ne9?Ia9%=?BflT|M@ z4;tZ`u21^mw$<9YmfWg)U8EvYqwl9_5)|%j&OAj}a&`?NwM(aiXohbr_JIRA(sBTa>P1bpfi1(ErCA!a)s+=yo{@OrP=3O$_a-|q6EQ{aV9SPKAMYQ0< zXP46=B_WHH`M#38_KpR2OiVsWy=|M^;hw0aep+AumTrcbAkwl+aky?cKhezm%pd#; zC|zog3>G-ELZrO>(oVo#lSO4uOFkypoJIJ_zH)sqd&X?QE2xz9v>0z_ZZ^-#WhUPl zDD0f171{NQzrTzG@Mx5W99IxaX2g`)QLE#o)X!W+zFFJePha=5l2+sKabATa=!}Lq z;Kv)$#Y(ELWZ)C@vKFjRa=)CSZynpI6dZV4mKV?Im)>`qub=B$PYx}8-1*KNL`1)V zW~kTf5tUMhS>%O83;e~W?oEHQ2ism!5HI4Uz0nY|9;TYGrT+J$Gxx<$9^s6n*bcaO z^vnlJ!*Sc%D*}1Owp|$}5Ag9-idpN9zgna(kIqm(lDD`h=6=Rfg@}<@5q-m#oOB^$Y)CuWrB9oo{OolOg7bRF?FS)G$18Fpbhe%{iJ1#Dp);olu zq)zc2*1W4pOWL!80TRB-S1A*p(uqinqZ9$FmYbP`aN8I`Uf7olieWE|i1tcT1Jh|^ zhe6+RXIq#3Yjw?yA4@_jHkkuSAj3r0v6ek~Y37Z5`_*<$TaMFkUmEw?#TBa1l#j}} z5-VWDCa%4fohu713uizGeMHo+kRBr7-w`gydLq)atqtu7+7m?YuFg9~w!DaPwF#T1 zH+VK)Y|?mF`Kw;2S9(Y{-J|a>3l~c>JRjIMolllK2B0NY43rtKcTId{@^yWo)otyz z8P|BkCMFGxoG~m@CqNM0UEcl)kMbsJ%jMM?A2=k>-P96nbY)1F2(MlCHsOkFXX8Rs zVhe3VRIdy)w+bH_BN7k%*it(gYQiYWXV!^f%}h72BjOU!C6oN8#Ik+s&EUP6X%@LA zF}{M1{q0p6+;s06l0MD|tlj5+ig{C5_Dk%(hOBrcwgCdS1tJn7X}NTgXSZm~i9J5$ z%HV8luy@SgZ~rhtG>6h}TCHTo4z&v11Dx6-XsO0qgzIKfN;YRs;62}GG^Fd105K*@ z6y>P(NZu!cs>k>#`S*D6-$QYx(m$T5?b>85eZj}-WQo~qvM#Qwi4T&V@ri&==&3N- zzTLXzuED%sW*BI&dz6*in{Di1Zq$3%b9l%ZmWFHls*k~M8mA&Ue`mmo*4^HI9N%W7 z|55FykR|oDv_g$sspALC&5kkZx9+*U3QC2SF^3k!AL5K9xAtkq)pq&Hbhe>1CNCX_ z9mYu?Ih*y(uz*h)j>=p2XM67+KYj;SLVb*Ob(Dc{U+sBptQCIRgRu(+M7vte2$xf( zE+c$-fcDu_M%(&m-~5Nmc={d+Rf-Ub6m5AtSw?5#WwW>ziKWjiym?!S*w}Wa^BArWWzi*dHy1l%djj`Pf9Q=?|H#*Q);<2#w?UJrLXr^7nE z@FwQAKd4a7CZQzoRPClk)|^)2&rg5CSclixa9?f7XZ(a|(}&T$w{u)QS+mo|iul?s zFHZKN1cS-Ig}(0jtn9Jg>$%l8k3YPzj-yCYjX0tpc@cVq|6t#~Nuj?Rd^6*tg8v13 z>$s%6%r`?ae&_tUS5JzxS#Vu(o+_=Zf0|J6xFCS1bsK-fFhH#I6oaoAmwyo<6P`?K zV@>bm;^vC(y&AEU#~b2i#zUqVP4ZB5HA{R#($2Gq3zPGZO>Tj;tAxyWb7cKg=sLHDM8d2xC)JrUTqV zQT*tir~AnIqdy8ng)eWZ4brP-vQFks@^W+UkQ<3h4fZ~u_apkqgj(N{c{6T+sf5$o zm*!sW#{&j#+TgG$N`$})!K!9ZX45X{=)WVME7ksXr6 zyr#KoG(RHkw!4C{0<6^dA3Ty%Jkjqh;RAL?kD^wpCxp(KOvcI&&gE}6#dN19%oN(y zAi|%jo!mQ7ziLhzaSLjR4)e#mpM%g@76}ig+Z5+6Yog64MKs@bENYvdiPUi|RAJ7t zZA{V4^1ng8PSf%-2<~Zc0$Cu%@l%F8uvd78O)wj*e2!tMsKP7*d>t z6Bq2h8^%GxYJQ^e5keQ;O6{D?0H<~?RhsJ+J# zg<)GgMqA=z_EZmFCN7J4r9^W+O_+8W?B;S;9FXow;&NiB9urC+??RNjoKY^GyQ6Cm zewpcA9IscNzv-_KyMuW?>0R8QZ1c<{_93;qZv|7YwB)WvY;M?sX|qz;j8Zx~clmN{ zll^DIoAB2#3Op- zvZB@adK^|+dW+|q-X2B8O8VNZ8*8k3TI}2J&?#sD$Y*qq5?|M)_K1TJLI<1qm7Y?^ z<&=?{m`EW?ZhA*QE~Zu@RSTH%U6!;pio^(NtXmSergXTzwJmG~rkhif>8#<4uwB7a z@22veJ_Ab?^l8SpuH1J9YhU}nJqy;k|K{XaYxh=r>8#1jR$78*eN*Bj50$PCb6Ou= z^+`b}`nmoTc^8<9L3vb>k?(n=0dZQA0|)9DNFyCB++2 zD(-}?(;;j_#7iX5O}-|iL285uo_WXZzNXM3VALz1yuYZzd6lbsjXDbJR%hZ{(?Ipz z@}p9;>U)7<0cvV7*q+hz?B$E~P1@DWZn=?D@6p$tTt0{`T0X6x5|X&XIwc>bS*K_8 z+`or#Tc_%Xy@!)^S>y^m)LtTBMevR%bS6+`5g)^OS2$%!olWOr6y6?L6L;ke@8J8H ze4~e*bwRIGiRS0c<*qG8ekT{5Lz@8A#79vhO__WF6P}f{EcEsNJ~Plmct{g{$WCzR}ic#t!u- zP$F$D4!pB_RQ5_Kph$jg)`9GM{=IHnS1jyVeSRe|!oKD#AMWQ79dCNMfiHz{v->Sd zWCgBEj?{yA8)~~jj~*E^ zW!(+&*IX){dW+m`{JvEyCZk?5#5aYg@9-R-s+7}5U<)<3D8FDxU&@W8q!qCatn)Jk zM1?kH=%R!c@aN_hHjiaZ&5Y)Z?%W(qadHgTTL@32 zErkUxD%WQCvdsZLJ`;Sy@iWv#tI0DJc-`pewr_a%1#On5_`&ge_?&+koL4_RKUmBx)q~SL`dWJ@pvRQCIeu$EVMJ17wYTg`(&p=$?+;9#eXD!Rbx)C; zpf3;Sz0Q5pYks?&eMW_kjJw2N7BZ)s9Bo>-k8}gAslCc*#O`lf$9b_TRFgwbOrmEd zgE<`%R;U+<5$bem^(|xD2YuD81};65srMelxoAc_To7|jV^EQ}g*h;c7o!LF=?=of zCqguRLIO)n@QY`TdDPULQidtgQ>DryPck&)0{f!pUh0mMJrRWwiPbK>ZKIQ4`W88A zKTq49+F|FfJ9p2)r)u^?lvID(niBt2ONzvsQSQ=yw|69Qrk>B9-P~=hYY$kq9&ef5 zQAMq7-p`IO_S;!O0{YmqReq)>Asr}jjiRT6Ph!B;THcfp9iedEhMB`;*N1~47=N!& zRnVK8T$u*SNFbCWu8`SXh0zXgp}QSp$14lpz>%1axF${St$@(Wi0WA)MU{9nF`t}% z-243wvv9Lm!B6-dZB+1{Hs)Qrh;Ox0u3Ba?iZzc0l6T0j!tlA$RP}TtpXe!zhzkUM ztjxUI)Dj^W!I|;!hGt2wJ@}KF5dUTk+(6acv^q zo<~)Zsrq)NYaO=UN;!12iEz$w5vf10tyz6Er ze2Z7Ip4&39J%caw#NEXn7&Pn2WNd_6N7R?SEj4wR3C>^{Pb24yn+$e{YrAo6Kd#|U zb3Xb#^!FJ(>0_HB-nxA*VC~0SmRjrrs)CPf!IYWDjxJ=-(;i7K&D;nezG0^3+%C4 zbrto#>H-6`B6TMm6`>YBN!5(tVY&~A!r?8MC7ca4yG)x4H4!PoX|9Ds(zyWySN&HY8;bo;7=CE)eROv=8UDA4w$*;ab=LiuX?T#Rsj8eG8#b-V~r zVUAX~+6rJ5$TG-k?S-OZ2HsmPO(5%D$;dd$Fs@5sjaVDOi0vt0(oL|7(;|6XL~i%t zUXqIQ{Vx|plTLxWi!?s^lalIQi=_eI$kb`tDqk84t*s4BGbOIq*`;6_FaYnUy|LE} zDcz~t#*sjE3vW@N{%&TDmq)e+YeBw( z8Im%)*uAEd^-a}dJoHJEdyDgGj((1~pW4Cv$-STBm5S69O%)!h_|URU>~`&rQct*+ z2>DEtpV9s1Xo*Od6*@1Lhf@O_Pfq}-EqswU`5B~n*L8kZ{&XM+*OSPP~& z0#xN;;@aEhR+;(9kF+5QB%1#(9;nTjT#Rk?$+zp1wg#{)u=LVd9B3K%^@yu z^LjQ6bxzG0Udzm%I8GS7-NxX%e7Y&5-GC z#RL9VTNq+6y$006f={-=b$8mb+GNa@jOJHQPMa*LwQ3z547?#3F5@VPk?% zQ2wbNUO`c(2Z^3|All@+xunR!HYM+^Jz;=L34nx3`46Kh`1^D&oUr?wBZ0dcNZ>}T zUz|5B%G5UabR$FERZGRH{=SXAfvl~xl~Xv7LZea6_WB#Vf;E*|tZSKbAeFEfZT9n% zlz zllhvz7%|d-8cVy=P8#O<8cSVVhe&5nK`SrDnna>;pG{eg^R!p*5cN%{*I>Lh?tf84 zYJzu`S=j1sMiyd6Z5Gu=CeFRonz@Co=18r=7RKIXJo~1i=zXl=D@do9^r5t#OvroR zaL#x-n#g$R=NqOk6xb^q=ZB{AcPcrKz2lF^PYfnAqr7P1>tC7;LYm@7FGkmPI)o@}uuYr+7#-!|>_|!^ARwTb2)s5~D@*(l9#?9)Etk{uTXBnL68UcELeEX_grW zaZf(eg4Cy;kt>9E{1T&{&f%8VcEZr8ArOxSI6Ce!-ORUT+UAuz*u9f=-72*s^(Re2 zwP%&KMSjmdZB$<`dCPo9TX2pIE3xTKu?p z{|@2DWCmt)NS{O!WP@}PK{d6L$?>Z0l&rnzo4w3PAg{>uVbnG1E5<4*GfH}5bgW+; zlZvw&nrfeDSl^S%A9#^$G|1BOHZe@w;2DhyI;9>u3FP4L>x%;WdNMMR3sS_swO8p} z42`(NH$o+Xre-f2gU4#_q#q`@2FC8bmV_E00qTPUa$n-k1#C(5WjYy+Od4V%$1ku( zZfxbISPeq2sQ3J&hWz;vvzgZheJ7(Y^gPyLR6e!x36ytV2>MdyN=Gc*?!hpe%?%) z)a04fa!^+?Us}*|$~`1LmY?J-J!#lJDS53rq~*3v#VA06suhX`9H6AO6`k!iSC30m znAz*``^KE=^iN5n>>oUeMz4d!S8|f|#-Lz|ZIKGUn@va^h!{%gO(ZeTj@>rNUgf3p zw2T+OXBxgJL#whVGMOnwtv(r2SJOXc;Gp#kwW^VAFcJuM3ASGGCSRxaTO{;me5vNF z*=U(6O7T|e?Kjy+S_ zJnkG!A}=t(hv2rn>lbZ%3r8O=-$tGUU&%cT=}XvoL3a^S4!-KVg#_YmcO2wFM-#SP zzg^J5&0o})ig)^DOM@Q}#u3x_K zA_3>iw}j7~e=xPXnE7GT?4?bUet`E&bAPSh%)n@`Zf`vgTF*L~{9(kxPaA#_X9E)7 z-&8shIYt8b2&SJJ{gwXd_qr&?CjqlI=&w^k`l{ek>>URMzY7TY=_SRq?w(b%jFh1X-Fa0feHiVA^hOg6|o;~sVLwQaC=;%{fsS?v$X)|ZgEzXnn%9bhoYynhb zMATgX<@V)o6MUE_(~fSMeQE&vf(8=k(QS|D2=HzJmYdNYbNqNOP zCKP2Hc`Vd(Yn4jV%_bM3GF5jkcKXl1hg>iwY(H&pz6ZXVpM?Y>E4RZ35>E5>Nc_MW z&*1BgPOZeFWyLk!kc6ml+x&ql~&oSpooQE z@BbpDy$YX4=4-+mt+oF1krOPg&>;g5 z$S1nTxo`ef_Khe`YIF7bDl z_`6H|y-4}jOS`{kiN9xwzh{a6BeR64zS{j;H+^uo?KK{S4y|*%dl} zbn-KkO8A-nn9C&aW?lFVg87yem`>T9fExzS7mn98E?C=NE&Q4ymEJ$|1GjqiKe(Rm zvw{1jN<&CM68x2S`wzAee`V|TUuMgLzPq*$ZcK=^e|w*GrcNhwwx4lv_7=<^r;ez9 zCTG7TbqXC9l5HU;8zSc?$w(k758P(W^axpa2L7=8qC4;}iC+U`(PZe$hI_qU}erm-jPSHNjsQ_(ePEKb5ZB z7Wqp)8v{C(-O9!)TG#fp*WxkR_s1<4g7;NpxwP-^;DjRq>&k73|Ipx9YyN+T0&?_h zC^y=@RDwgX;8~=uCcla#0DN`)s@?Wz6gRi|3Bq~BkkG`wKptnQAkH92&MDgGj8ldh z+*A+^S@_(JX!>S&OQe7@WRa`?3rYL4pbboQhi@TEhG4FKzZ=}|=mq~Kg{v385!sO~ zf77k9%jP0~k5k2NIZTwlB2}%U!`(X;^L$fn1*5QToo4MLqoBhX zXxLGm#~i)%!`!$hbWZCH>Z&)^lgdmC7YtL3XVprtcchT(jn0xmD@HgN%q3PtOAY`X zqr&?7rsjtD(RcF!%~2UnZpQK~J)^>yT?#}s@ot!1#iFnSv>dm0y%eO@EXo#P7^3vy zZ|LE2n@W#ya^qDxDB12uXMP<;0=FXP9K7{Y`C_5mYxzebD9QkNx}dCzD5YdNP;$$j zV~)zZ&@+xDGb_k5+PiwzaL6rs;S)EBOHOOlps*UQDxJX4tJX*FG)F0&*&-FoyVB;v z%`Ll9J1igbD*!rdf+-xG_n2J;-3FPpEZ-+GddEx6@f_=NWF%lW#Ac$YU%$mci5tfz z_(V%tPTj#vNfwnvOBPk>mV@)n(4AoFkhjWk*Yh}O8YD1QUJ!D(yKvbN@fiVbt+6n5 zwjT*1d_W88QqE)Iv!W`Yf)|VjlJ9-`9_B`Kz84LPem~*mEOFyi#_fqhHDd#E&!jhQ zCE~%%nZT7~(*PuZUAa_vj)r~#1xH@rm-l@ehQWBM6z|~S{xjMtv+Ezuc=Tg?6^3wC zb<}E%&k}TV8!GVvW#I`iJXSTsLL^O@Ec;a4mDJlG_@O09kS!(E9mi74xbEfRl8^Sq z{Vhh0-;|`;u#NF$Y)$d_x5qTTS}2g{tAv7^oq(2t?Yu*i%?qi5^7A>eF$ZGm0Oj=* z%Ydjb!3fcmNS;%|42RVnZGWgN6^WJtK%#Y9rdIIV4pUxCk@P%0IqTGWGf7!v^W=dK zI~ft5KKA*3uzN-RIk#xeA>FHBt>T4;7ffG&-gY`WNx{%|FJe=&hRtK!)Ywk+N;=T` z$J0mB2Z0((ow;w9bxI6z8A%gY+fQ$XSSv(DH`>=bK`01%GBN0f(RN5Cti5pZ31lz- zlY|#P14N?FvW$NPq0@D&M`m=CN18wLBtpX4e6XdIgQ)lR1I@1`hLM`@^Te3ASr6na z%X6P5F+cm*S(j9ZF3ME2(oi@G@@885CzhA zh>X6>EATMmx>olQsagI`9KHb$$pSQED^2DkKCR?`LF~#JmX?>4i7QEzIgf!^aGp~kNTCmX$B)4j?LuT!BSIFR z6wOg{>|Iw*WTJjWT_AD=Z%M83g7od`DW1a(!`xC6Q==Kb>sxk9`>TWs>!Nq|gxz8? z%iP@1Sz`hQ)C$uj?DJB}SN94qmSWujOg-SNJPZ$Cl<`GqwSv{W;|yyS_*4e>`s9oW z+O*&%wfTXl4LVx6q1neR&5StdWzMJJqzgDPj9+OKZzm>hDm2CSzGKgQ92TADTx@@w zMlPJ1#y2RHT;_94iLtqBJ150T)BQm)3>q7r-uheU!0~lC#z(x=GxbKRt&(YRjLLJ*_?82tBw^q&Owm5|v9*5~%aL*9#Ib>o8>F!Waet=mF0 z8XBWqtK&jykvq;y+C$7`q_R-9RWpM@X zi(b$)SN93@3XvVjS4;SF6r`M|7C5D)68GPOg>y3Bq`^31Vk{pe(9)FmaCIAH=FgAA zK5>Vc_tF77=Hgcf-293^g9^kOT86Qu+uV*LsTR1xQAByUCG3@r$zGJ5N&QrN`O~C9 zf#&DW@|>JF5!#|)-zU8e?)#4%)JIF*`aUyKC>mw^jFBgZ*3hwZhz{r(^aecNsuA%L#o+IsFz90en*5If# zB+#mZ1c=T?4oKS{@hY9r-BobCCmk4>pGFf{W7`+x9UdJpJ+F`;Ja093J#IvNHM5)E z>J-nh72&!9KIubn8r9ap;~RbQ6^gg00)3*K*OonrOLl@jpE-M9F<;E|x7^gAKpgiq z_3s!uF18vQH#ZM^extQ-w;C(hyBI?24|nMx5TTy^CJ?l;lQ6mK7tb2cFs2z39a|7= z8=yEfmKFp~+KGFrS4-y*6?SZOvqw+!A6)C$*UEc)KppzFLZJU0b*Is!tZ4P)*zd6f zAyBjIU{XZk$^udFF#nn8u1%$I>yoo&kI~Bnuly~-ZlT6nev=Z|`A1K?I-W_~$LL~T z%uoY0YSi%Y5P2GLF$KA%v!%pI1F$#>=3{0aN6M9w$sD~DyZjTe8XvvDffA!qsu8_n zI-M2h_!Rj5)hmrYx~O?N#M+|9gC?0s7w#6CiZ3F2TjJu~PQxb3GhXAp@8hs<<+l)K zrD{r>K7W2j@1Irf6N1&o{IOPzHVG<$19&^{>+LnCD7?v zdwd(0gf+DGH#34%t_=OdE5E4(vJ8_QWet}#>MQ$5CJ58JLz1adDW zU>R(Q`$Wtb7Phf;Z{2)Mu^2tgeZpgPH!f}i%Z=_x6LGa5FlaQ8a#@3L@a1PyCb(xC z{b-2iUaa$wd?I0{?BPbV^X5Cr}WkE7-?X+g7x$`rACZEub%bHC(!h(z(AAPxBXl+TkqNOIyXyVnXV@ME zbN1NTA`h+L2Wr_oY1FRDmJh+{v`D45KiwD>R&c#!S22Q7Tp_>wJf!>Nc}a?H?siZf zTxV&hyZu2(ok({alK~t*?u@gy#b#ECJR{E~$oD6w0)JQS+37c`Zf5MR0F46W=IdsFc%Qy%hr_-yd*yHYBh}seWJa}Q)4`|gDbAX z(p#3@=}~o!BXr4No5F2iR_GKH9DJ8QfD%sDbcVV$JbMg&!Svj1+q@rak(nXO9r zIQ>RF(c_!6!As0?Cr>J{am-_b89xr3XL;HCI7F6P-*fdK+UatwOR<)f?H_1FlkF!x zMr%9`3A{NWDd)8k#MH5XU&Bjrr;B@`m+ZS_no&~^(_W~`%d9o)o2YF5_dB&k^N6qO za$5({ExgRDRMb(O$IZGL?8nwcBzbah}(r1ov2$=~Xj}73b|;fDSCN?sAdIOpj1E=zZP#Fe#d- z?`Ry+#47({kOOef$A1<~eKBFmhVX+QYawil5fWXQk|T%e{;otO31r6V{yW9D$OH4a zqGNlXv@JJ>3(%hVA%SS=Yx9mFgf;k4nH2EKh!)f$gtsGShMF0+VeN~IIfJ2%{Hh%H z4}18ZRKi3Q_Iw5{4#iAe?)Zbx?C`AMU-w+UpKIg=Gkk8E>frs@-QA8YsT}3JA`>0V z)iM=$J@VF4q3^xPc|1J6BsJV(rW_)f;>zS;+J5-_zHakK8=JaM!N;w-0axo~YJDFn z)U8JA=EiDmvZHshH+LdKU;6o`4d;yPcQ;e({N3Nw z)xq-pal3)W0N)K!dZO}A*hJlY^9?fkCqd3KXHjd|adK5$t{F^QC$oJ!|mH2<^UhoE$PY7Sw)Awh-0NLn7Ko2&ZET`($vFYf29hB((zHWa< z6aL($sz^*i0+)BkkI`3ileL1tl01;dH|2d)o;DcnPd8ExMc@s`Et0!$y7DyKW{az+ zP}p1Fv^4kELr)Z&=m{}glGkPbXL6W?ujQEcx;DJF}gn{{{<%=J7-5{fU8zRdb;sxTYG7heZ9ny%Sb z1JLf+U2V*h*OSrL!@CB4&ij0XMZy_9&#qA4`1!TSLPPd+53>IHEP>)S{fm0DCBx)G z-`aPnf-oV&Ir`C>!Q`b9bFiun^W&mI$9#mhDXcY5?MEvco(ntJj+Y+6$>#f9fZFB> zzcr5X)(3lOlEpzS#zpT}p1eZXGBT9Z4pGGJ2|n7ZIA_A7SnO}nybx~9s7RckCiWS`u=DL#|THvxW(*6EJH zK=iPs=*F&;K(;!JNLHbf$$3j*Zk$#6!Xu|xs>0r*VjGCaOca4o3|MH!vbX0M?(_RI zUXhG5NoN4bxtuN9(A?ZS=A~fK-N`5&=_V{CSgNmOII^9qLCu{#flN$$pGzaoaQSwd z(LqL64|bc9Rp-21D&q-uunZge=#66weZ{yGl;8thOq~7TgLHEd%)_c*%Pb}Gx<$G+ z*+Kz}nt@#Yu2|Tji+4vL17le?hPN*dx>lG!?PnX{ zd>*1v5EW8Jt*zl5akoLj4KKfLNr_`cn(LsVa`eZgHYK>seE3wyn^X#Vxo^n)pi41? zQP7F|Mh{1+3z1&6bdp+DqW5>n#XZ0{Y|Wt-sJfx_ajS4h8;$epfQeL3ayf=7R=1j_ zXy&DpciXd}FFHh&ue8KtxzHIJSWa~7eXLdPyiSqH+7Fr2M;nQfm9zak@RFO6Lb}~6 z59iJFiqw-yJ_-cu;nc9kz`mHEQ;8C%d0u$LiM`vT!rQuh!r?t5vp$)^p}i{xE(s{_ zTZlNzc!isJV{vOuusDYU=W?Fkaswxpfntnu0edg{g)VwS>cA8>1@q3Q?-~M1tPQm^ zbz$|K)5kKJNwE_x26eYu`wz)vmW{-j0=|$)Ty1qE>F1-^jYK2}jD9odWcJ*9C~kUjZX4sdLGv?Xb99*pq2> z0$D#PVh8v}T$IaF^rLf;y5ge@PKK~#B{`~aDo(Qf|1{}}oe2f>$K&eHwLMUWg=*^v8vmpxGH~lh7 zEsZJzG@fr?fNIDSJK6KS89qDN≀C&$lAG1`ks#=Gz)4#WG_=7poPo+gV1Y1`0RI z#h6@?7DlD5W+reyY;lB1yjAp^XT*9KfX&YoeI`~>SK=_5$iakGB$D`t$zp0l%Moj@6X3gK zKC2p7sGYYP-4R0ga3ONOZyh%1YM10Vaz`|A=Q=I>AgzEp!DaR@z%t0}nSk(EOv%7J zHW^wazkCEb}pD|T~aLXNKPxM6ZYsBSe%XAG}&o~Ou;lfsbsIKWc?+9l>j{7ZyUSWTA6jP1ww7a;YDs%-WtwzBiy z*{df+ zjOdvGFILCpbffC@k@+LpRaM`2k=(j>U;G%usi0-xZq$JjDf8E{z9>?hu-|8#-0e<3 zuY%gb+_{>rqM7Y7)PmcJ+*hH*$TI5`iGB8-PSg5fJk44TSs+Kni8kQGtBo4Y&1p}p~Tj~zuanl~X2d(@35t;cBZ zT1-kd&Ruq)>I~HyEjdW3s;j9p*FWCY*Lvw%U<@DG@zf)?zx~3vXEt#4JO)p_kwX%A zdCkN-T5CC5U{cSkInewew8k=~w`fSs&HaV%`>pLHR^2(0$Y+;=&9(qkRd`F_HJmb* z3bItdL56YpTuzxletI|MOf|!}A$`aC_~ts%tXNZD#RHqL_qWO8ft5{hy}%){vtY@2p`4qL*5F2RH_3vafl=!dGL98{pZFFS-UCjh2#1zIhH*N z$dNywpnwhSJmw@-CE~Cr#79{$)9EYz%ad{9-0W2QLmyw zzIaGiz&?)}+K+5?ERO~@8d5nSwVWhI4~B#T1+ZL37^%aqdKc-Br;n$}D8l(ar7vvr zaIEKvRVQ8{RK!%-oGAet#>f_hu_m{r!O$GKGS6lmc;FQ|1JnjWA-|TPAv~kBQ*cJ! zq*tmf#5QT(aqhv$t*a#@bHR{~oT}6a9P5&3c*Aa(Xm+m}7J?MkX@6y6mdKp#BibLV zVX@dl;@FwmCoS{AcHq}c_$E#aoy$pqv%w5@c8;Z^ELofol$l4o*NUAb#a_|FGon01 z5%J0fGu2*$)SirL8W=u!FOrkka#P2R=ezD(Yguq2C&Ju%-@;7hJ)7Tg(+7Dv+R*3| z=^bFMlphj0=pLzN*EcOE>-73+t^pNt-@r(IEx+>NilJs2GyUAy4PS7js=DAY&)Ag} zgz1ZIAh&}|`Mmk}*jP+rX7ov!(q)_hIy|QU>wP~%YjO)&d&Zu>hfsd*>15*r_kN~s z>zkIl&tjn=zTFS=+TR^F*>+X~RZ+ z?$zvhSH&!1j18QAuBFL;103e!_oDefUjCmrsQBHOARM$9Q^#x>F?K$qdM=gmJRK44 z#M7s9FYjprLAHFP9ovf~!V!PV5}(n|8~!}M_`(jp*v6mfC(2xa9A}GcrH}lBf5B&a zm9AHAJ;K3XGt}g+E8YY~uGY&5!5P+`K98Bc#-s-dk>|=AR5wf3PXkik+g-`{+{Rv0 zS`DGQ4gW+VsT^iN5Ckff&4bM7m&Lr(Q?XY!Qb36wGFTp61D1^8Vsi?Q`I{FYJ-Z8# z6`9gGOO5WV49m0~@2X^edaA7EO73ulEg7a;U&qyh{*&^YT;+{xN9x`uC*spp$&pyZ>M*Ux3I< zYkGCqup6Az7HvhAq>@R;3==C8(vO{A1v4kzBVnVhTb(I@T!7l$Fa-Fh`N9iOC_B)L zNzTwq>)F@k7NWpLC<>*s8;A9!gbX^89{p^FFGyhO!?a8y@V8(4gRW?66aDx(n7$CK z)lyhw^b<-WxrXQQ=`gJb*<*c$R!uK_=)_|{0GA{k<(PiNUjPJIpuR1ZL;n-Hr#+EjhYnoOik@ii z(A)EzQ-W`zSOryrTwq$IE#un2I&AyO>$(5O?Y2#GSXdJ`SRw$$I_&AH1gkL|`}uBq zc_*B|scA>Pb=<+5-928Q;LctR=cayr(iGY}K(Ye^gO?Uz#dVmV@Km*{iKYl`mlnU0 z|I7$P(J&%~BXC?79DWL77f~sJBuwwl=;;#)YDe zW{RonwWnNb2QdA~#7R*x`xwDrojys=dS8%$1WOkl4+>wt0JwI?K@9zM7$Z^?D1m3)T^ZwNtb8Kjy&wvua z=H%(C+|&7FKi`4{)9IS>>7D0&&cnUb>AIL4DP#3#KG#nt{GoJGr8?i|Su(Vu=SAr@ z8{WN^tlcR<)i&0?VhN?|;jvOLu=|1EEq!fRh`dyUU3h>=YY@xg7{Cvip7_$7*R^}Q z^~_ZLTo27W>hwSuwf72(qJ%F%2@Izi0JFeiL7Sh@5N4#wVm1($ZDJR7iHYeXUVBNm zfMTjFp3DL>Uyj^Vihf<2=wQXZ5*+X>Wk9&SrY(JbI;!rOa$>8G!P6z@#aF9PV+o54>c3oyVu$N72o4{vZ##eT*H}=e96g$}#(W&c{%3w73*|~uSvEX!E%=AHx zUo|R4eJYsyrRr8mJu&h1kV{`z!gD5d_SuI!L}S5L$Zbuy1tW&-$on`&jxc>E1M22F zv3ZmCz-J}s$MxAHfy`p$`-&hHkK(0-s0N)de_0HtS>4FzQ7M^`kz>t}i3cf6HN5dW zN%F}Ou3o+b;vd?V1gMx5#&bFXR8i)Bh8V?4DRvvvkr{R4Pqk+XH3gq2?{!jr*wXNx z{gs(=of1@>-rC_c9?0R8eHlL_MsdgK{`S4=K;*c}E?TF)&Zcj#Vr+ZRU$0+B2QCtC zv2TV=E%)i@Y~euH;8Q=(_yjypCw1ML-_WqFgNZYJ5E>496q~vnyGVK1H;vQ4M&fCP zT5c_{iz~3|H&)ix59fubX5VpLHMNv=?F$v*b~yu=ehM^8-sf~40dq^1(_oX~H`jWB zo+dL9i?Cnd+WK~)JUhuK@KZVtM{b0LBg;S#54dMj{xnY?vcBxRMu0x#n- za~v;`{aUw>qI70&Oe9_n4y7xb=|rqXlz`Rpe4K>|J1=Kx&z0FWH>B{qL-WL{T_!f@ z>1CK3x|9lSAH+Z-OPWA<=IEb4S3AS;f^Dx7z=nfP)Iu0!o`ZoGk8&4U_2C`_Hr7Oh zB6GX8k$oL)*vt`+SbMW^&1{-%st<iA^C#lOEs$JU}Aiijh zkb+zFNtCOZ9Viv*C>t=;CTf%wN-YLhb_VjL?84Jazl~Iz7O0GPp5)EEw$|6Eujj^Z zeUiwdLDQ&+uGdI7p&&WLX*xB!hf6$gHka{HHf2`wXO!Y$kHa$k3N$fr&bf;X--8` zI(BRr(>_D&OaqXi=;@4AD0x9}2Vghc0)}HNoa&VCbq=1~a{;eWR@A>&W;uu_&2>ev zwYHN9&IxwTON;=@knAL?l4;>NpEXwyTpHw`@*n?#%k)rt<3i6q@S^2 zxcev_MxRh^e7D@-lvT)&)p(R`{7)JEJxP^3BE}J-lG5KTAJTACjC5l#eQLUi2p+S84T%ua6ZG}wztc~cCO-g=&Li?>dVhfhe|~~5+YEo zQM-z)RMe)*WEQ5INsf~+%=DnpHPg;psx4N#optUXj5p-G?XPlvdL~HWj;GF;pF{&=|Ejv?^hHC68k$bGcASF&ZX;2q)1%}ePr*K~v!;>#91GTMXFx(`( zdG~U6i>eb<`t&Pn_3z&=M+iWkFy3#WKtLuIs18&C1(O|As#XO=GGuJ#!}UE{>Uwdd z4;^QVA_0Q$Fq082>{tsIk1h+DS`MyOfW>YHAEmY7VdP}GF78o<&8eT=M2O3Hc#pHY1f@LV_JEk~Dk9=9mwbOVYK zFwJ1*P@VAohm4TI?{{avaaOAm)D!z>c;CLWc1u+=t9FaD%>LQT#{5mJH@dgI<#Ni# z9N6Z|OhEkXY#)apk6Crq&n?x1s@O0#Jf^*9^X+a3OJFdvmCk3kqd{TJBiC74i?zC! zd-Bn9E2q!)1LoO=_OI}mo6Xirgifa|SrA4ztBWWc5mx7Q_T==rdZRfER3V#cf8|og zOH~M8JLgq@2>?C?vEUkgzLli)&~bkJMpZnm6-|30SWkS9M)lqnNLOQ-qk2w#?}rz3 zh3#iIJBC5wrDaSYQA|gYsj?q$PT9xo4e69SHaDjlPn>(q!$D;A%6#05`czSY*U@3+ zaa&FH!Zn(MBvbdlw7J_+*O>PDRhIOdA1Gs*<>o{Aj8v2Hx&iOr2N9OM>|cl%90hnmUYmWo=kfs z^9jwnu~8KGjeY6NFF1E5Ei1h3e;>oz4$Ed~#<;AceR=8=eo7&?GCwlDo!#YEZ6B7G zSdct$cge=pfKNVL&PZ=@mwuz+S48xVTT|AlbWPEesjuS`U+J#}GRs;0NiTf{3+$fa zWH3Da_(;4chJQi`EH7tnY}#pCTdCzv!-PuNQ09taxeX7BVM#fO+#*W|Z#ZxHQpQQ? z^KLy|Cvw%VcvH2?cqJP3bVAkwVgG__|8mHEE@Y*e1?%!_M?RbA(ZHKH<;jDEaEuex zXBFrY#m$wyBghACN9!ae>tuiT{NPBU9@56l*l%t9fI;lD)R_%L3Yz3gH`CoBN|#2E zIcLuM+DV!U_fDo$)W=SG*(nho~qB=NN$j7)^cub!pJ1UL}Bb3SKpDiWNpdv%b`ZlLyqF?@d~rT5HO$9 zBJ}F|JbgvFW~Ap@thF(S{MUy@HvX%59&G$fdO>&S$0xz10VDuYOaIzmK&{_kt^eL( z;Fq7S>1zW^{qcS{MOHdu3eF}y+Say8T>3OO2<&$kn|S_K)L#j6&(wv>WOzFppk4bH z3*Y-G0!!(P`o6x>nKUfhEntx0@ck5sVHmi3qs;FuoQW#eKQO=97@}>n zugqa~XZEZ3sym`twGpX9>65bsMZaC2Ktvn`w9g^Vb8q9HtPf8rP_6kzuL=C(pHcau z^$}R;NU!qe1}R;P0l*O0cgsD%AAWcU$aBuu3rr44Dd%p!lB?IbZSshlpOQ?3v|4?h*2OkaR>hjRq`r{qqcer|#9_a6c=JNcVc&b;EPubRZeIl4&z z9n=MMHJA(_or(eQUSQjf5#HoO|79p#y@V0Y-h^`f3M@AcNImAX@5JOF@nI;_ zRt_IgBrYZJR<>Vnk?5hq%Yb`in#Ch48cQ`|`F`CWX0F`TeQ{fGS%*`iHPov+F{aVv zQD5InENRqe0!6OQ~mL3W%=mwuS)Qv{L(VuhRDI-RM0o)7y~LS_FGnFo{Yy>WFOrde3`% znBfD&_gJb71&Oz}A$uO{+!<4cRMb9ds-pm`V2=Hd4O~^ynIq~ly;%Sy#X6W~w7(WIN}h(iZVlhc55H5YJKg*}+E+%07kR@MSIhd2 z&4slg*vvmrLd=<^V8jt&Iqmf!Pje33EjpcrdfS&&zAKX-VkkuNoM5Kepav6O;8eDz zcs-tbKG#a&`iM7eT}5C*f|Ha1oeQM48AOW+j4`t zb#X(YZzt32BFZ#{{4^atIUjG^d{?B^iQ=3|Y$LZ|tZo6sEBdA1Xg$&-zc&4bIIKZJ zji0IO`^kpjY8KSI8N<=&iy}kExcl8so49Q#g`hXkrBOF90FfWiy8-fbgxp6qQT<!{6BPvnon<}Nx$z;Aje7R&^l>& zJD;ZO2se+dOCY*AvRLnu3F&ahSN07QCx{a{j>l8JfFxkp6tz;r9XKpR{bdX1i_}wY z60VpL3*sxf=55{58V^d(I3p)b{8MCf*AP!q5q8PzDXGb7LdhN0Ki9r}5nrS;z8WRg z6wj2I@Lt@@4yB6}srF@tI?Y zh&lj#ss0y4BIgS9KOrP6!&~?C!2t67p9qPee-v$HSjtLXjy zE`P_>rUgdmAVd^*1&UWv%Rud(Yy%5!5CDbm-VBUhT;02~^USwJ1fZ-;SYpX9K)ApJ zna+iM1mH8e1PC1@Oq|nsoDlU<{jG3#1>1=CGlnioT!1jA3%T*o>-E8ZD+B+_Q%w)_ z2A3Ic|7+3zqam`mkQL&;wQgw=h@b_;ITg%Jo5&6?4|MEio z=@QV=pSR@C!1>#>@nz@_p{BH~HpGEk$vGS)&{+Me2zqej5CUArKe00?l z<#md0her;y9L&UPf|BGdh0-#pu<~{X&kJBGVOnepitZ!7=Em6YP~b*_wDIyT%ErBwZPB83-xe4 zi!i@M`IxQ|2efkiL}^W_;*wsi2F;zaBtZ>B<~Kny?`F&=$s-^HiQoHmYp{Mx@;`Q5 zN)Kussy>)%rY#!mPv4JBMBGhMHwbQ*@O$gXD1N8X{ZU!uS~72xx35&z-rS6H#d?W5 zQ!tO?F%!GQ>iNf=52iR zciJJ3PJ#wm`_GeBUjT@7SDK?pnP(KO2lrjcAzZQ+Ttk|hm-fbW0^T8sAH>mXU{f^A zVyH=rAvk}gHxQSSw5I{9)8ja;I>37q0;Zq%xdZH|7Y%=(gi_g)6{5eu%6|}@$9^S&{ z4?QmnpzOH(7ZQZ6)5}=A9hrgWTu>iN+p(e!CTbQTffO zpo&fB1F+>07@tkeiiY9*=$+$7V+Z~BpVg1nP{EHO4!iru*t`Qs%A0df;=)Em;Tb}(J#;3S?Vam{L1u_)G0015vENhyJ^ zqcFuu_KoMXefu%x@2kqTPiA23`_YEf_R)FgUq1WBF(S5)^DX>DGc(>i9oUnx<)!rY z?3OKJv>2M-V^{EEz3=rRMEw~fb(-xxapr5%D}>jSK_UF#SgH*@<+>8xp(5{z4ohI) z$a|kBb7_a37j-aN!u7s5pK8Z|8YVuBJ;+ot`Vc0%QA|cUU#-44q|%!)+Av4wQ0PMPF?SHNCpk% zR*85uGYsqr%kAq{hwQi=>S}_W1Xs_B`k3&StADeB|6fSUf6D$l{X%dti5o0h@7Mah zEF5xPBFD<3o(@PL&#ZEE7JAo1H8HH6=`zut3smgP%a!r%KvIicaDc`krq3D90q5>OvsN@j46y^K-m?we^@ zYvbegxl#|{LC$UP?dcKt_nHzaaj+lOxR%#iDNcr>-e)_o*^l+-b_swp~PN_*%*Ew|M$N>(7?h66k?t!-$L>7MIc9c~I9RnW8CVI6|RzCc<2Luq6AI3ExZC{gNVW zUo1>G*1POx^sUQ=hX3%gU->PXA@!wN&p1e*Hrm8W_9N3fJ#}q<33;XPRV8X1ASYs@ z7SZ|-4x&xK(FF*Y^W^}s9zbv8?{3r5e|MV#5cXy&C05L*YCRR-Lgs#KFJ6Vh8{d}N zdU|7X-|tA>5`kYmGRJxlcbq7)Pdk<)XKY8yYLveW2GIFj2M={t@_D(wintm8Iat!G zhR z@Zfe|r4Uq2{A82;DmUS-z-T3l!zyRDXt-SW_k^GYDm+C&|7t81JRzzghfT{Ftiuyoh+T1fRUp3$dK9oqp=sGuY*mvi2{a7xbrG70&) zsNIKEj~$S1FUNgKpVV$h-ll209sM-zZ3EG>(tT=6FMl1Z)#3#xmV>epEfX(nTR-ZW zAMWMD>j%kzWH`_$ySstyY@;1*b$d3H317Qg7$B9Vb5w_M4*A%#t`>2OC0y9DBhYHd z6b^eU$zu92oHvPIXnWf_$%9qgcV8&Uh5O3#_?I&Chbdb2v>tKi` zj&PIA0G4tYmh*8yI9$|Cx>Tej^0+MQ#Uy#jPg^B1!hK6GA6BG8L<=W2xoe((*r6$9 zvpc=-^-6xKNCKUa7^1_G0aR3AbL(mar8$gt;Pxk~_Hqi&n58AFl-;ucf4O;P>XW=J zs5Rt$gYYkx!HgAtR+x<&)9$@5#f@u%8~$#K3*k^oyexi9iDhBwO3Y_$!vb>alrbD9 zle=*=JU8Ve=YQ&H^iq?e`cs~>IjM5cyF4fP<;gv`C#Gs6D${*QsK# zi%g6ZG#qC01Vg_lBL|R0N1J{mLDEP)sO@ws$kkW`as_gWIC&roRlDs8l+ZTmYMnTi zD`7+ta0R|LIlkx;oH3MAiHZ*-{yKbTE2(dzK&Omfhpr~_$-K5Pw7LEXw@ z37JN8C3dx|M&<3l2uiXM&_ORn`yYGn(+|eB-0>&FTB0qHyB(r2mgEP50c2ebIRiRXVqNEOv`vvea#YzKx}O>{@B7BF9#JW$PqGTMNf!OR&!imj{FuXI_yvd<+Y0;z zNSYFF%4obP_*7ODyn)AzvzEOkod)B^n6?4^*%^s$=ZWW`A@Jw1w z9v2{z?P8yeneW%INmPvAY|1)|XQp|^BnsB7Y{Yc4M_{+0QW!x}khlvlX1HfM4^9>~>L zS3J)q$Mwl3k0s4U(XF;}EbuDsxNOM~OHT}&b`Ui;J^#+Qha&1Biu&^I{Q+4{h9v=* zowy4cdOR4+A#c;y$GOZJ?HJpt7#g476um(td?o*+{#^(6bPS3eqk_ny|n+L|k zTuPq-G`V&LMo9%ryVy^)B%%}R*)R3nOP1xA8;5zQ%;ARLtqPV_Sg3ZgGJNbufp?+@C5NrMDunK+D zrT+zF@t=GC1BFctWQp(nE4F+!MsPz(%wibrc5he;G6&V4$PKX@_FUV!Zd%0M0Hf96 zy6$^DhKgS+lOLRXP;M^1wy;0i4tO8c7ND3X85Nmdji<0{*L((i#V zETYp)I{P9=>=6*IHu<&&J7y7Hh~#>5MjwkdeWZzmr^@afmC3TPWybm)*`*n<^QEyq z6THBZ{2rCKCqL5Zga1)9nMVd?XEw* zX~M2I!pz0ZZ^yk#z?Ibu6~Vu&;SQq%3_FmMY(Aix^p7a|Qvg??f0;Jg?jNoNqTc~_ z!mRQRxBui|kotEAgC#}la{j+M7$*MJ!I1MG4u=0tvP}OK*y8`zav=Q&@Pb2(W;xaU zQri>^g(*k7<(l^9I@rq+9Jmx>Zq63b_V%gX)s<1|?0n7JvcPZ{qeW|ub@+-6*?ly& zMby{gf268zXOCnR$a`V&(bl2ahd2bRS>VX`bku7T5)&tAS;4@VV{2#nVf<+W*bcA% zq@qW`V>@(25J#sRxq~wcm2Ho)V^;h=;y2p`nQu<`cp&U&jNYkO%%bXQfJJ_utQp_u ztCc`V<%{3Ap1<*>5#q&4IzT0b32gk^ZW5Ni2`pYsV#Nrb3=K;fXO{RZzAP7tX_&f+ zZb|XV9iG~_>F&pNyAnDOY}om22vX7&l}OY`Xlkjk-1QzWm@L>ZOw%yauSnHIX_O^UR~ zOmNGHSjQD6(3Jr-rQ10l1YiQ8&Y?X93PB3Q-%#l%&s}+H%Z8IPML!NIZ;vE%O&=&U zxRF8>IfwkAUMNk*s_MGdQ3k$%`lL%=<$t2LtskC<-0lc{E4NHph2p=JkFA~AO7BZ& zH5OQxcqln_;AeQE*eeyPYWS;%jo!TPdo6OL#g;qMHaUpSHk;0qQ+djhp4H)M{;$V8 z%4_+D-`6A-*qu!q>&4^drVrd=Z%j&wUUi-{O0;w|d}WyOC_SL>l@W{NjI;oS_zK&@ zO4xjxaOSr=+xt;@SOcXnQh|D;#>U+>(%txK-ER74|K^lr`i<|M_&ls~A8>a-^l7JD z==78cOfrC+G}AaKS#09s?imYM;Q~}>`VikSvkN=xKAFTUphxi!)k0gh9MQ-4EEmDE zYi=zIyPT^QA`Uo}HDByP9N_pA?7#EV=(yO*ZS|d#c@|f^WY;?PTjUc5knJH~khpW5 zA}^PcbtOmF_WlJZS3to5Zw2JezE+F3Zx|lQc*P80Z8`y8hvF+GEF<3qh$#;*V0p4% z0iagum9U*&boxixmXq_0vQX?7=;}cC1?ciJfM%hC{_Uo++-QZu)WhSj0n5ML&WX_n zRBW>n@I*fV`Afl~+ytjz=K)BMR6rjo74HuqiA8kqVrsZ2t^2Ds7ogymP)zg&e;&dY zYUyM43&7?ARGJ)lP8?Y>u-VW9aNwf26Tt3UG|RzRH$?OQY1*G&`{%3r=Uw|VLjO!2 zoqvYGpJDK482lLqf9$nCrX=>yF!)~@2IBIYShpKh<1TqYvpd&*kbicZ9%JC2ejqTT z%moOkON~#;mjMpomADI#B|!Sm-+vriw#AxSlpB5TFV^D-RuF&99mpA)b3z7aeF09> z_Nz*($G{FAdgQeRyZQzEwTUS4JID980xYNN1MbN&3R00@W*3!^M4bC)7ofMTXLA4g z|L*3HBCG#xOll_-$Y|LvyEtja+D#GS5)<& z0`WmSgmin10@EqTKwVswsxKK!_?dCSChd-|1Ma%g z!TCSFs(=pGXbBI!0PQgX$vrGm6`K3=2O)lL3Z-yc((CnM+pDo}DLHN#*s8V-Fe@Jw zIUZFq!g4$YT9F`5U{m{79d0;5B+%ij_;cuy!L}kRIwBfp=PQzf6lS>qnbe1Hfh(Sx zHg~99+t~efEoKLP*@szb;E;pu^hRt`{KVC$KH64H|D1gP#9@Um2v ztL0tEseXIjG$^A)1u!^M|LsFSvqSMA#Q%8Wx}@GVH^;m~2DH72^8omfdMwZ1bE3_KI&IPVf^zKc&KjUVx^7P3_e+=+ONO&~;#2Zm{mDH_$QDw+~c( z|992E-A7Lruto&`eqyj*tvArQ{nn``N zCfSV%1yJLEfiQe> zzY#?jOcdx4_;1hx^kVcxaTBiyOiN`67oblp<&Vw8oAxUASk$hc(WnA)Vs1*=@)2kZCmo&;$2Ho-n(Hr-G>RgQ1T*Fdmq*MSooR>V&6$IaSu!_D zD|huj1pSm~;OUuT{LpzKu#hcn#A{9^d0q-uutNz_5G)-oH$;Tj9#sBCG5WAfGs;-tRngRlfaJ9UsrUXdyoSBA&SHrk#! zv;m_7gS(gSC~+AnLr__-dfQJ^Lxsy;IU;I)6`cR7g)7>1#_!%ZPHcYV3ch@4hk`Z+ za@TovO0Q#4Csrm!9}>u|!zkL`dTC*>7}9Vs$-!DPxm(a0vlX(jVJUsY%1UT&`2JYq zX5C37H%#^;mTWP*afy{I--XL?G#^bI({#UNZJq|h(^YKe^kt3KBvP^WOQqUv&B)L8 zV(KL~Ul^@imDpE$<8OzuybRGqQC*$S5M1CjH71RhMWrKN05U0bUopMpL7=q_G^#3le?^S zQe4d!2)Ym%f_wDsJZneNn0LIaNrE94f7{$}(G1`t{wQe4TcH3`RR#nR?H#?;)^vFB z<3wZ>j+jdbudyUCnSDMY^<~Soy!7bSzTK#K_B4#T-oN(ci~K8ip-Df+Zl!2lterm} zLuIjjI`rtCSwQ^EnTqFpjS3h{^mC5 zbzu4qpBIejIC`az&Cr!TZ8DOJ>kR1);7hTM%7u6*+kylyS5yd)mS;ciw&0K6ZTGI2 zC(8JKlp-xhO07zi)sk^5efsh?JVciAB{FL5r9hQWD_k@m8*>j*e!$7#thaFrw=jX` zFQ|A3BQ!JZ#K3!sV*;(xVnHD1%+lgXJmtq!kF|3TWKIZJe#w&Bc>=+cfz_YvPz1y@ zbfW#$cw=&%Bz%IsxfxHR^JZrk^JCoTtg`RpVFVDvvQOx4q(xXMcG9qZc=GA+!EP9y z9W#+t_!MFkGGw`NEPfB&QS@PC#gswpauV3WA!Rv?Py{TYjh)7DX^lCI<&J%UyWWV z5Nx|F)sssgnMfy^Uw_(LpA3EztYuvno+o z_{fnClq%MWQ6`a_VlVOe+OZ}J*kiidQ0CPZ1>8Di}acTBHN z5%*CzBp$X6<63wQaKvHHQVeNI`V{Tnif{i64vj{Pw@3k54Gy!Y%mW;@WE7cFG~?(c zdre&wXLQn^J*d3zMySbfqAYmB%VpzX&b#-bNhZ_47Xlpa9G`dLSzO2}9|?7gQs^$2 zhXcl2p_oP&<||3Vovg)lbg_W@c8h5HU$hi+)I1M^i;%v z;PqY3i!p2-o+gVJAJ~ckf;m@}khg}QtALfu21S>1 zsGaX6GO4EHz9jgs`!3HOhlWrMh0Z6~P=mn?Td8=O=6`Pi%1H?+IHdGf6Y#wC3)KFK zbwi$9D9r$f+Qf7HZJ~ky@#X$sIs!W?&x@G3*c`y|w;=;-N7O7G${Pvx0A0Q6E?~Hq zbbdNGo@{`vp40l*hjp-;{y@x4 z35s0;6k2?~pwcv_A6ObiZMULRef<8Ti$u`7ziV8U0U}Zmcv0T;1I2RM871VumOBCs zY3*p;2R3&K&rDzYwJA@R8;F zp4JKfgT1$mYV&Q|e4!L6F2%JF+=>@(p;#%UKygZt;slBZZ*iwUfdU1JQ?$54ad&qJ z?g<)7$batt^UV9s`^^3@vS;r-Ywh_E*1B2w0Lgt{*Lj`iar};=Rz}!3$trTa>x=QK za{@~J2lm@I;WtJ0xVn`0?;6&fZ{ja1w`w+vP+zlg0~aPY&;AkL!Ljb&u_iy(8Z&q| z#7WE}Q~sp(Zxt+eY#DHDkwCqiPv81+J8n$KpcgMrxpB;}`RR7<8tu8n4NB<|la)QI} zZtHQc*hhydXABQ1r_f5KBB`bI+XC^P6J{r2H$F^?(f_H2@a-mH6G5))@~I8V(Zt5@ znt{+BJIqA<0%s@@1nW@OBLOFl34Zct=8B-WK5wY*TQ#}g`gCh}h(b-2&YvRi?Rf_9 z5ajfNbtDx8G}E#*_tDaD=U66ZEE8z<+nM+Xb6-5x3hb6n(xoYMZaFR6?$*XhxeU>>`d>36&C`TOyN0GOkCm<@38=`?Mycj!K zbrsU_S8xW(&$CbFGalvAn)S8eFFK-?GPDsy$={v5nX)FH;a7E1sO}mje2pL*BT+nJ z3g6&0X0)GkSlFHsZPQVjbAq(5TJnFb8n>jywhD4i`w$yd{S@@{HvEkXB!FF$suWUY zvZTg7(yX|@)cR#rwzdJ`mn%7^`rFpYQVC-~r1A4~trir$G_4HWI z+;$p!UMjv$_SVh_(w^r~yaGNDCp(ysks6&X_&TY8-^<=x3vy1z>|FY-_PJ#O3_t6o zmnDS;?C!m8ZEk_z=PthdS)z^|Q(SViH)#L!*9!Afz_a#-<{Sg($L(0a^zRAz(96HS zBcHs5!s1jC=U6%441<8N-dC$DJ+F*g5<;=xNPWMams8s^FJt3 zDE_HP0r!KuHE+4){-e)M>z^_>Xj&?QI%m%^K=ki2@!6J8UG^=oBP}Q|-=-g_yxRWP zOAY{%%KMK}uY; zC|4{voEM5LcR#v|$T%Iu&g_}Y&g-Y=MiEgpHtFoU+rXIPBY6DOO3mPb)9hz}mZ(B# zScJ;LpbC`eswR`Dc9dQvTfUkXaR%9|a}_3s(XzP8dJdGhoJEyt-w`PN(lN@^no0co z@bE-*NZU;fxIqAkrluLK(&KkPUU8<@1m`a;C9z@_$dhLUg>_h}kjFYkL4Vsg!>oaV zh!Ci*@{tn%ZuqPc|EC@k<$)3fX!l7Q>;GAVrTz-tOaD(1R`|ESFvyq!B(@a)?r@HY z{GSfz{}`z9e^nRuzdqLdH#(g2sP2DCnWfHfkWzPjMltnsQ^w0n3w;d|^VF{1Z+o3g z1VIm6Q6--wCAakpP;ZctTWwhVf7XJ395tjnWfo~tww0GxrX(nlcaq`fnVmEdLpAe$Sz@VpePlGer8nRSqCWzq?&N;Q zFTDGQxyIyBKWI++)AdBMZH8sIDc+b0ON{p6hb5hxdd6HMX!aIvx5E)c|6SCDLDl?b z{F`iTkJzEM>YC;Js82~xK%ZXh?ep#)SSCKoZ%BKkM$oFweOO6PX(e~~JNT4$u{N9X zC>vK$Odij^St%^f%h?|rWwq1#M_BAxtbe?kk260CmBK=|}XsfRt9lwG&CK3Xk*4vuR& zi8K2?{{sqsJL%LaRECr`?0C<4a--)p*HEo+p}=0ZQpu1jn5md^Yw`fggE1oPY~n{2 zNlV+LpM-B7-%Z0G)Y5m>Nd@ya*<3M?Ii1%`YEm5qq(18k$WX&dA==~05OFnuD{Pw@ zRa5SiO`Wq^SGL*@oCxx6XM~wWODKXkKJPu$SZSi}On@Js|Mh5T25$Q5sRy@2wSU?` z!pWywhAoiz#UGy3Y<@h;0Ut+lpqYyhz{XBU>`HyD*_-;OQ3Cy>3O{v(TqTU4My^~S zC%3R#(5%iDG6@P=I@ZKLCCv}!iNe_(zo{8@2kbxrArw97g~4t=BoPGRRQ1iE>pvkw z(|oHjneqepT{|$^hqu-)R1+%fh)jMqvZKNw!2in}}AS;duUn z2+0(7Klpoo;z&xP_t$jn_jUUqm@(JJdBGPf=0rNapAW;>eJnYs(|EM&i#Ij9&d9;Ga!m6w zvNm!*()*&Fe~w6Wh1#ULK+Tjtct79?`%Sp=XG32y7s=e4#acrb7F#4c+M){YLx0es zEr>tsCm&`NjqB)n%)lgtFpbSWG$r`vCpmXTLdu>w9$cG2bLO}-<;@|yEUju;pP+AU zBhPk@gD1%r)v)G{WX^6jMqTMm&K9ROp^BW?u=lb$Qtbyoo|JC(9;kcEBauf zeh@w_!@0W7aIGd5vZ2Rw%G5UfL&MX4?uL~QQA8J&9FH%ugwHW&^+E2>WONr$B*pKM zK3#X3L8n{#ZSxiG;Nz>92Zd|vW1J6h^of%FM<|~U_C2adJUr_%<()1&KD!#Y)SL7; zvA=pfSEF$q{a*RzL}(PU!`-u=hiPp0FnAf)OAQ&knIVX?j?}(B(#|4sGiklk-EeKr zr_%0aPWBwh`%pH;LeZVQ#%=auUujo#wbHW739?h$lrpt}$wxfdsHczlW#iM(t1Okb zsF|AqM>cTiH7WiAoWBH9@Fs;lR>uMlo@t_^Q z$}*%GX!}Oi7r%{zvPv5;c>Zn#`<&*a>X%efTJ4&cE#3_W7BAR&R{H-m>9&K=43El0 zKem@u7s3eeIG2wLbaq}e{++1q;IifG?|S-(jvLY{{cvd{;^=$0cqGVfpnv4Ibw?%% zqn`rerk9|w6`2fsuiq;yp*!o8?&}i#MQ;XD8xz<2M8_oT&4ayA8mwPTYsrUGgRH4% zRyTAdjN=C?8#gCAaLz6LIEWl0(xom|!eAyvr>L;p>Kah>2@{W%Ds@>PsDyoY) zRO0*q)Pml9=KtdSvUbp~EIgoYj-3TO#M>^e-46sJSeey=qeI(Qr7`sSbo%mOuFBv*oAITi9(iW> z$_P1}R(La%9@hVv-=py??NlrovvpgFlms2 zW{2Oe6$r%I{ahR^evvIcB^|K_MP#?pSZw7S@+zNSk83tKwA^mhf0p#NcA*o1?tJ^i zZ9wo&PcON`cIg=B=w(O!%o7Ih`Wnzd5_*c9x7!c%C(5G{IlNUW$Y_EzL}5EtWfS%m zs*aZR51pYWv^|UaJU2*uJn2*>F7>5dU}pq|i-kGfWp;3*LC&v9!ye=>rvlw2Aq7ng zSm|}e4pROpDSygR^$^RqR#QM8RAlud6Uis4P75-V)>PtLl@T50fXOw`^u8eAvHF%K zQ)k`*-Qeurudsg2gfF7pkF|5ocN4Y+@46l_Fnl1cyDlG{ZTn8*=Eb8(Xz4b{_E3qb zARfbCRH#Ug;!jZY8#I|AM5vkYu8VBx8#F5Xxa%-((t*ALem95<=MjOnca5s+X*Gc+0b^# zh*JqOwd3N)ZXO&-j`oq6I)7fJI*I1qownHK@3c-r{J>Av~SaQfsVrd=hIe?^Ts<9@XF z)9U!@n7w0jqCh^k^F3#JGtZvKIubS6adg#jnPuPTB-Z2;#Z}0X8^whM_$j;py(!9) zypHsRg~!MU7BEt1CJr4A3~?BENL%_<2^YU*C1H)2$2$ESlc+50@Con?X+-8&Nr` zvmf6PmmLN^*KVc%4>XIKf1_C-E|_Egx7%C|0@x6O;V9-@Q)ou7QF28>{=r1;jaNer z9~Jy%FyA=amlBLCG34rq;j3j4L&m9iO{2Dd()9_(s4fL&d=P zbK#*u^1WRbaQHg2yt8wxJRN#EcR!UJO5IiC^rFa4f>7|3Rg$KqL!`C&uzb)A=7&d)>b+xgT6*V-EiVNW|N*RgG4YEFDPUCieXlKlm!c?*=M zdC=Mpyp#|Z|8sR21j#Na3ud~yf2a>jMUgA2 z1l{N&Gq=t$NsW{eD^3(LXdkf8#WO_K^Xa-$O2uT`#LYN=)Om|<& z!X#i?PCoTssUj73ik1OgJwG_J(_hT%Q)W)e-TB68P}SMg7OE92nlNNMf$)xHy*Zlwc(E z{iuyIT;8w~(4I%*b>x|<;lKHXEPFNijGjTDjhjaquNyPC{}no1Mn8w-F%)b7pMDJq zD>wJBuqJ5jzy6jkyQxOI-12N-)Q`dqNDjN3wz-c1q_7`IkQz3|zW%C*^2;5ILmxnE zZM)+&-bgIL200tYI~`qtI)ZFI^u&6Vb7v(sx^EI?Jq09*roL^> zjP1x`s4dVDsxrXG7T;!5R_-(@I!T7bdcmBJ)9$#C89mfx&GS)W8uTYd5x*0qhfhR% z<{kR5`q{jPrwMV{$^+{B^pMmfy(Eh_Z;>Pd)qmW*{>T<4dWbd{reRm6-i?ErgIk90 zS{lcVP@TYc_sNfE8cmOSaGw$I$OJ52YF>cMegp5haSU2L<}sb3#IO;(Ki*Fo_FnOKfHd3z2yr2`bLkh!f4SYu zCyc82wC9BXrEK3z`7~w*mfq56f^_Q*z<@U#X9BPcOr%i0A8su$CALvO=0LoyVEp8h z%f~w9B~p123*Q;X;v{eB1e0tNwK%oz#J14DUU6N!;bK*IeHEfV(eX&$lHcJuvc(c{ zwpH2FrU^@pt+xX9 zc1a}|x3d*8hp1K9Zq$~|n55>1Nm;J4@E+r2Al;a@{u-?5HW0W6_wN(r@B=2m7#_@| zD6=Um1ZLFjWjW7kMNtru0AL$V^oHbxPEzf9e`^^H8ll7l&^Ot4xJUrILD!CjGPuu1 z3p_`2!BaoCdbrpW7_GiScxx>d+x~u9Yo$LHTW~&47Ia*aE5mgM{CleRX(t_4&S5%! z5_Jf|c92>fb;q4aeW|U!`_nGAg-VX+WLSxdk|o(SB*#s5cjDR1w@goxda(Kf*s^=b zA3>-VjM8qb$s$1)7^^q!CVzA?)f;RU=;h_*Hg5}xSaxDqc@+?}B`GU_h@VIVwogmPH$ao{W=b%*w z-T-Uw$cF-_Gcxq-<*jpG{9G)Zd$Dn3`W9@I0&KBl(U6BenkUPj@0k4z0hex? z1sr&wF>`BY4&4NPtgeoajbjD$c054&-#t`9*z{amZ}p`HkTlPqh#f7bS-s~k&r2~j zHZZq2ry5#(r?P##r0*gxG;rP#^A`rGj2Z$L{YY^mo&wsG1%&hbLJ0jLw`Utqv~|zO zScb}MJ+WlF72;9dKD8!vOEO)B3tmejlYn#^Gx$3?>b_ARGz}Y35zkamfqZB9!rRHZ z#ge_tXzZ0bV{5flI<8GjVrMYhz@!W-C0A%V9 z%sN8V%KNje;;;*-92AE)O#XZ?RyJQ}_KIg8adfuWy$Pt}li?Em*|kO8g|k;AQEyRl z?G(r)y%{ILQvsXAHEtts*5nvNLkks}7oi$$BBs=Ew`(CJErRWuB?C4deN1!{->RN# zZ_1w3>y=7AT5Pzkv^$7<#yDV(n-a|d_nV?=H;fJFvo|H4xLU_qK~nU1A`X3&(CJIM zC#}QZP9X)+g9(iOjE^4r&hL=}Y)BdOlYKPpj2szMdTTvGv@(>g^u2#+x9fqPzP_Bs z@>x2W&u<|$SG2W0ITd?1`CUz@#z^))b6PTppDy)h-{ZcX6PW*^JQC> zphmvNZmtQ-E({#EuWBP{1|o*yEN%@0p%I6hV!kUBa(>9GEm<&3FuKFsnc3ktk$TV5 zC3`PlAKKFjQCg6Ew2+wo7C0hs(>Ad4IZA2MIg**=>MUxF2I-p*l2Qp4?O;`vxrH1T zLEbp{rk!jiyjzobt!AMX9m7rehZ7NftvZ3`MlNrXL|vY^Y7!fv*qX@~59Y3cui!(is4S7y6<7jR=%hqGT)k^EJXr2X>A5v+{cN|c}kU{v~WXk0@+Yskj6&uC3 zFwT}Ods%+!HF454i5;ZpXkQ~1GS$4`O*3TXL-(%{Ars(x*BOZKresJkEIXVT2W6bE z79g7GVn#Jbx5A`~v+}}4n02W9>1mJS>*H9;0RQ{&jt|*E>$RMp(EJX8lzbHIE}nQ9pwJgu)4~Z4k^|2J`6%u%TJ`)|O0Zry>8Z0IJ1Mro3g zP(s7bz;@fU#yU<;Kf*{rJcBGBb6LDxzF(fYd1$v~HB*cP=mr4Ds2ch1z$Nu-GX!T; zfQXVeOjbovWPgp`H)C+bhqAmbhT7OMXMMYm?oi*g1^@9f(`pp97Z~eOJ~q1+C^$>N z50M1AUy&)&cbQVNblW{QQW~M>14}+5CpShb-?Tn_jQgQ{Ocu$U%M2{8<-p?V$37Q8 zX$(ztCRHh2TYZ0DZ~U^(Hng|Zb5o|)Q*Vh4SCW?V2jyNC#(k)x49T59!|^->f!jmn zn4Z5>R~hNf31NQQkfnwdO2AN!8(-2~WBzp;VphiZ>L;)OsK?g%lLVvava4^p*XjMl zrqECQ=n<*MS6i7>yJKtJJQriEM=xZB-H?)wRO4eoaAYjb-^yKYaS7M-~l!jIwcTZ`#N5pe9onm3tuNSy^Db zZ_1H)^hP-fHWzq2`a%^Hig%}#;huKaIP59{mPs^7;RKzlNsjsMhCQplA+MK_|8W?= zImchi&q#K98V%qCha(lZJ?)rrEx2@2I(seWe?rBF)qcSPBRo!=b)+O`r_p4~1j)7O z=g&E`#E$qrlA?M_KA%5ms8j%nUp_ku#COm)TFcqoiDhe_+HB3*l?2)NZ9-06o?%{YFURPQNu2i(OGAT0EnR}z`dU3qEphY1HtKf} zwG9HFDa2QChmDU1CZ2%Bq>zHKRrIFrXXSx}DZ^Z)JCRndahse~kPH3U3pUn9{2qbh zaGDLbUZ1cA*g7fHt1|$*ZbIx4pLvp!1Vycjf_2(f6C{>R#&P=xEe6@3ByK|$+L zY6R>5_BE2co9+tGOs*SDaKT;U>2>@kLSGjpQ(;|Fw6=#TEsNN&Lswavk) z8-w{vM!i1PLfb0{&$F);&-*hWVht(Ag)sW0iOb3f`OkrHosN(-DPwq@-a`hJTUA4%}M1)(1+<{(R#(`7A_R#J(9-p9Ei@*=AE@=wja*Is5OEzW68YOej%gIKoE9pLsJi>`IVg^<^&ydMre&l@Jfxx;Y`QE;Ln= z7gVyaPvrm565pkIlC1!g(DTl19J`DIcK9xc<+<=HnCQbx`fs2A%pY-f#Ut4RW5vL1 z+Q@N06Y$`Hgk19G6?KC*Zr<7o%V$hxZ|&6qS_~ zOoa5&?=jU%9`AP6{3biz01l_JtcY8ApalWfI9s&re!@Om%X>!o<}ohBODhY8D~T)r zAvU*;QCexL{TsaUw{uVc&S!oU^M*XJ?Ex)&K!3sV%NH_9jVf7n=j#!H&ho?xrh@oT zqd!;8pym*Sk#gXM(CyjnXRsFPF(N)HfCVLAg{X`=E_Yw_@bo_6hp1NyNQSdEhcFVj=^D! zAH?igO7gGuo90tdPqVuvqy(xep>8LUkYZ@CVam?gZxso>c~_%11Ja7^D-n@LG`MXp zS(5iTGTfUT!u{RIxwCoRyOd=IdXh8s;Fhcb`jsez8{aTVi0L$ifbL$$pwrk&3wNJ2 zrGFf8M$-ABPh0B9&Ck;(b)kDr2^LXL4ObU@B zmP&rq2+4k8NIJ$2u*+~+HA*e`6wh;dbIYF!3+ViU1S`arS|{!X4%Nnw?ynCG&(syK zYy3QU3i;6{ci}@aVXw{tEq#nCz zPr2}qpFk|m;bI2;SyijFuGO2no*Hfu3V7_tGSeF9+8meDKCTdn0Bwag^3FXAOp;gH z7xoGGWJmWVBgYPYV5HG(v}9bY3X3s+N3yG_tqGcqmX?OdE%EYlB@#eMRTx}~-@P=& z!1#z!ntb<0>C4+;JJ)W*w)H?kP@trX{9~9~I%-z5u$|`m!hbz`1(>}0_74O4`+ur5 zZS3jZq?Saa>eMu}kUmQkl2H@rXQcJQ3O>e0}#+`JY z*OJiE!+LJKLlAWPbNzr|w1w$^T}6^cP*(okt+cUqt}n zQaE(ww;4I^Tt>`K%}op1RHQm_NL)x<&(x$MCQX*GCZl8_vG`VOICq?Qw(h0;YamM! z!&S|4&@xdIl(dqSKMANXDS#s7?Q?*72T;*50U2==mnhxL64#FrAb*lytc1Q1px1F@ zE~7;LFY1kd1K>^mEjQK=4*Yij9`%0);K^D32LRsqvk}NYv36wt#M(9S|I20M-)W{J ze@k02|0iD$C_aOS!+YWxY}aW38)_gaw4=Xa%_-CcCi|*y{iNXu|K@br>lDv=n4PM+ zui=N!?13#zCaD8_nwRm2z#h8zFgY4zs^KJygi)D~`=nj{W-{TQ(1CM)R>E~IVNF&p z&X_D{4W#3l<=BRE) znvqTz@2lEGjq3$e#(i)`*OFHxO3kCVFtQkWra1}8hnLB*eE!hT+Nhf;s5g-c=0HS- zoUtlA5ug;>eY(>Dp^l|d| z89O$<0~N7v7WbVbdS0Hg!-jsKOqAerIaGC^aI4!WB!*whN5oJSOYG~n&MutLh}%5E zz87~_aEj|Jq}JWb{dEXjJa7B39>I1_ zk;%A~7h(O4cr}d^OO`|!l--1ap-PoXb^EQd*38p!)^aPp zX-q#0G(lS5KZG^aP*b7Y$Iu#n_a-%DxbXF9oy_UP{eYlJFk4_ZG+@9KoCc(Bs4MOv zWd>!&((bZM&zv%$N2Xq|Y$P}MxMdRo@_AEG22J#!eK~a*oj~#Z1E!1Xm*=vQKD}mD zByUu12om4NcQ}aX&$(w}y~)s@7ld5i(SH!ubn^g2BDPYgUQgbUxPc?($>ldn)?{Y$ zQieC>gZWxzVj49Rdno?GuwCUIm*4j+`$8BOveHhXD|S1H;DoLBoW)2*&Y(Gw+1d#D z@O8?z?HotQfOP6$O{8VLLeXhQ%7-hr_m{%<)pL2(cZ>P94W;tda=?_Z^Nk!MRF`v7 z4$m;2?y!;fzLeY7pPZt9B+*RWd!9w%p+*dCN(Vif$IlX(fv5q4$^A6vPd!S%8Pt_G z-H&Bken;5Zh7U#4vW+|`s{RxVE-l4`F4fe^I%<-T8^etkN*3-%S)iV>4>eDDTiu+kkV1a!`E)Z`Ke~1{4(1TX%ow5N<*ppoD9|GY+dNF&cR-=|$;E`G zY?tiDmiHF0-N+A&d31b54I%k~r>h$XO(G+%L`1($?O)1`sf+8Yn#hxh@lSqV(Dcw! z-Y$6}Az5jR_cB8Pjt<|96(FMMPWP`!Ei(F{%I~3Xt6-vc=p#j_t?zYq@0b`o#Xjszd(ruZwNQEX9E^zAMk8Nkt}JDfb;o*UtAr z8ZB(Ierhm(tS&mS{sqz9!KOLQ>I7sh1;&2h~TWG+Ot)b_G4J@9QS~$zl^flTGF40H^NGlyujip!@#E{Q+J%--7p35J9LR z`;NY?iMf|VonPfvWi(meL`s2E~fxF*7*9F&IU$ETIvTT$?!O_-@weYw$ zZ@b5dvRTRAatm*3c=9za%vJD7+puX z?!gOhb*9^^|H2S#-ES2_5cFn&kj_60z-xn)A#*{;i#@MhQd&J5okf^MW1AHd`x)Up z#tshA!x1NZFz>yuCvjX~TdFPrKOhR*p8!66Z8k@*GOg2lqxibMp{^mqXc?xSLe^Ir z=An^JgF7DzrDf$iHXokg6U}8&x+8Nn=9lYjud~f9B;Wo#6uySXs^~h~H_MFc1U!WFq z^r@!`;Aa5=-EXiVRBK3NkRFB0NaJ3pvA;@p^Kts<*te;k>E}x^f|d?6 zK`-Bzi;@pj4GrZBQ?L|J&GuU!Eb$JVwm(BLRU>{OoxQhYiJ2eM!fMe2zDT8wrYsS@ zw=_3aR*6DwY|lJRpR?v5IQ!#+nMmfDyG?lz^}+dvRVJNw?8!T*r{fGaJhAvvB37@X zSt-XbS7enK5|625?V~Q7Nl@lULs$pZI+UQ>ly9<5lk6a&b>2s};8@30k->SVrS?^C zeSQcVDW2ZO2I6%MaulBT7V$ls_*mwBo(VLaJHOtaM|vTB-$Wsr@5`-uwN;!rF(N+g z-S#JL*Y-}!X|Bpd8Tvb8C{|xPA2MmG~s%IsW6?eSwO-cT4!? zZ8M2RgAGvqi0!aj6@9qnbqdl3;qVfk|EO}mzFi1G9BNgjx!EX2b1HC>pS2_%nWJ^y z8be|za}SKqQ* zFJ(_sFGkeOkh1p=`Z-}d;tlI&`G$pDFU#j~$@>(>@ZK{oj9+}!;qEz`m8;V?K2};q%H#rz z2R!5kaBM2z9!eJ&S&!zPT<_8w6d5lkSZMDgZE$1A*;}o8?aHmJ{X!30b^LKz zj}Il~ZVEH49Ho5##Z0T0Ic${GnZ$N%(%vX>P378wQ==tibMOJx`yo|7Qao8AH+lHf zdJQnc4=68*kI14EPp9nhZ2p?3^QpXS+Gbeo=^~Csc}@Jc2PzoT+o|S@SzAgUY?)Xl zWpr{Eq4C{b*Gq-TKVLA;W}bX6m2CqKu!A7iCp?G0w@E)bL`=zv`f<#oz=EIL!PNT= z?W|$y5!tVUt~r}8_{HyY9^eeiNQZwbO-!Tzl%KoSB`XyLRKA^o%zi>Y{Um1OKuGkF zCOjp>687G!yU=*J*MRmi({xWgBog!}P2e?Vh#5sweeA;EnW!_6Ak(T;Wc#N*7#7Qc z9tO{VrrZZlPPY=J+Y}zBsPS8{pr&(QaNDBcc#8~lk_N{mrc6-m(#xI+B5X}1k8?; zrZRtF)KdSxoU}oZBG$v#U)RrOC?uZBD$}x}XO)QO?1%b2e(N;$H95M)=pCUFa6}!-BOlma!;63y#-|W%lb~9M_I#qrpLOB@1G{Uo#Y#UdJPq zWYl4+6dDM=dJSKPeAD$_?3u~TVR~=J#M#zi#66-XIvCS^)X&3QVkTs%(e3Tv8%KRpFfF`OS*oK<^zXnTNm4Q zmTBkZo;eYFABn|^yo@{Lq4l8)n|iJu^~VA3zG<#FSK~$zs8?_d!14v`a*v49-COuy z?>A5f?GTdLD;zk+=E;5Jywl-h0SyZiPnaY==Hh1H*8kUuXPx+5MrE3V8!5!|W!u^_aoTE&m9f0Z!^EVN5y$sMeNm+$y(qt2dh(NHU{7?(UQ0of5V5x4pT}y*}sC=q-`a zs;$Ct9QeE&>)Nz4Kl4^j5XJ9|*^f~2Gt83+vC_4@s`4fK<$sR%mG7>e%8vN=k5j?( zEg9_{i>m!g{fwo*H!a_dmi37GHU7!$ZaRn8sm%?`7F3>5JW*Ay%QcRE>YT46lT2Qb*rAAfYfxQBuOzH{JHx5qNPL2)!au=XYpMw+qv}%3Q zl&v6Oa{Ymf(hr9tVd?_( z#j_^cdHuNH;qiVV{+q>O5Tl#tRr9r_Cx*Fnx^q>(1}#7aj9K@JFg!-K3oyPR=BS*W zw8)VW?@--(oIGx;5NyE@8zx9+YvdeJl(_VG+Np9gYJ1q{)v~hIH%jjTR`zE$^6qpt zF=#0iJ<`kHtpIt{m(CRIYr{ZcVhmnadN|qZ3bM`2vnC|#5hh*eBWv229J<4fH^^j|U;mLnCVX&Dt5n8MD;Gp$^hBh5p0#ewodjW$`S>EUfpUjbTUorQnGx*j6qu*t93 zWw*5|Z&=j~UrABX(l8aB*6@2r9lqHg zRU1!EkNK$iz3{1Y*k>ndKfc3|>ax-cHnK2=AiG92r?A<0)!f!I7;bN6SRnoh#90mm z&3*-+ktk<17BBK(?D!5)E;6vb7+X9Td;Ua)^Fc-#uttFabrRkIT5iryKW_=@rg!&j zy3SD0;*N2%rT+{64xyeUm*n%%XyUKHMkq$PdksW5$Wg8$RWuRz4bkp~eqtqKDRVx} zUlX2H7i+Q}ZNXDp2ya2@8-wu^_Ue*x{NXD65>qKPd6tlglGsq;=Ds z)EBxJbX9y&1~_a_)H*wV0x4Z?e%!$9a2`!Lj$&_?Kmj$f?H%*A{<6g#c&W8ge&GDZ zX6!uBd*}W>TU=^5qfAqUM+8%y+* zu!YiF#Er;Zaq`@n{rJ$XW^_#;a%j&RHs8*Hl7sh$@%uTzNXQOS=!k9`j5U-UiszPg zD&Q;zAI8}2T*V&_IwI2N;g!*TLR+!K%ROtvvyNBg9B`qa>n``kAdMK^pk{L6GW=hM zcq|t>HjQynQMW}~&L@iSmQCt#zYj${QjBLYe*8IL2Qs8Rz+ob=CJHfg`hkJ$7`2E*vv?BOOYG zZ86l6{Uq+Gzq$#~LW}Q~W2uK1MYIAIw&vcYrB*=AHmM|Oymx*Qsb}7BLUP{Q!esfe zN%WZ-=%mpwD^JPWxi3CK$B!2YDMendjq%=0jW(QeeC?!vbZYTAT9vXsl$>fz+U@hG zG2EsX*vmV}JY?0C;LK5%fu!IAdX204OmE7b`oocdvcniv?V%z1(?q;chKiNd2dkPY zxvkwVkkjytUOBcVcz75JoO|dq`=eQSVQH>hD@! zU(0|5mQCCbQTGQ0Olm^JsZ*J$>ZwJn?zjipl`5wDQJl@#yi88o-w zvq==Q4T3-iA)e&CS*`?$O(~mC@Q>R!CFMs&DpGzOF~I902g_KObR&W{KcLC$5XZn_ zDWf~J!LF#Y@N&%4204*rUWJLn@{b$C^2LK5zx;i zZq+P+CWs!8OV<>xs<>^7Mz=lu{D`;h%?@W6LrfF`9G_j=jbdu6n{pS#1C%RG#wWx? zrYG_fmu;-`CNr$l8;K4-l{wP3leQZg3_)A&S=yw%#p1`(vhgLr9oDLkh=*n6ZFP_# znKuH1F0&~bf)Z!N?nd2Al9Z!Q=D+aI=!sj<^UkHXI3Whv23TVsR(%>#cf2ME4J31~ zjAkYgWsXP}s~b(OXtHf!{?Ph1RlGV#+koS(DtR|gt#gp_&NIDzWqt57k24OHf z>weaMtz-TE$NO%qcjMh-Z;s=>?)&;%nysRiTTl91BXt3J}Hpz@tU!xPBo zN5CiK1~fUFWThrPFO?zSwZl^{@!rWKLqgVd%AJ|#-p0@hDdvTxw>8bE+0)hms8rAV z@xmI{-iYhp@5pUywn@?Bq=*pS=5d76kBkc^O_21W(|cU|Ve{yxETJP9U=wSS zequha<<%&By<^=0EyL2=0P8sPl4Z$#oV)zYVU_x$#&gPGx_mA|zw$K~C64CCtn>YW zu2IE#Zxn+J{S;3^t>h@3ztKhG@A<;WK0XEYhyuWbhD*%N;z=k*R7fXIn|~1et_3M? z_bVOLX-O4Lm8yV*xARQ%l`n z)rz~~nt6_OBprB-ANJDz{EmErLwn?%SNDSr+pj1lj(eI>c-;(#V5Ks;-D(ugQpM22 z`Us6rqup!pxkF1Q#izNi*SBGl8rB2(FlP1172H)lCRMXen}E{eNPef~6OT#};Qqwm z`HBB4@hg7F8O%n96Osc(x+!R$>l6@j=a=TSf-47{g6t@cWFzIZJ>pXz-l9XRW}4o2 zvCd8vsGP;TnL+@DI|b2i1TKxASHqA?3zJ|sx(U+VADuL&R%g`1ANd8io;-fu%E0m^ z>&Q;$E8r3PE~oYaNWcT+Ok|wE?C90Ie-Cphpe%gu`HZ!#lPfRAni9Z6f9qU2_pL+h z+WfBoJeDPjP(b1&|9^lh>Hj5hT3J`_vX1)S0eDC8|9_(+12npft|q5Z447v(iWY06 zlukw4JUkUR?T^?vNF_(H#Mecz^Jw4=PXf*+pd+de;O(y-X?O%o+5 zylA(uwqXsVQf-$L+0c*^GObuBBf_@s#r?D)`XQP^$S#iPpwUv zg}vwczH9vUDW}(*isCI@MIAjgsRez&xP2`}>lcaf&BOwfy8)raDcDmf6}P0D(S81b zGzDB)cz;W}s*!9@E|&&aNEohreTkvMEm=1CRk|Cj}DrF zF6rtUT&}-0-EB$L7FxB=Oru_<(th&>jW~55gy-FFy#;G0(&4#Y$p!C3rSxN^#b;ff z@R?O?JT5Q-tr*a2Cdw3q6}45qJUWQUBUiYAkLt)!A}1t#Yp>WcQ8@FyUZcu!QLFNp zE`{;qVTyYHcEGJ>oY|Mni`psWjQrQ7*if!dPOO4|EmjzaG)uirQmg2sUzc9vU2+gH zfg(uFW!&osEj|~k0tFdnb-EWZv}~1JEUEaavI~x@iF4rD{v;S-1)^>9_d>e8nU_}{ zk6P7V+qH0~JNBurdo0+ay^%lmUG1-u-x2p#W1F0#_f%^o?qK)ng()H3^QQ7Wcge3N z{y7y(re+;ad+sD+15^&KO7R4z?SC1IxR;^q+d6b3-Be6lXu4(+``SOyxz|l(ilmc& zVy|rt)sB@Vc6J6JcK)zxemjiRNPL(ZkYg8f%UXj|U!%HdDi>+KnMSI6o~E4&$g1Em{~Hp15|UdaH+~=lsdFlg=#Cr>Drbnp1fVj% z`J14z+{R@}Xz^OQkF>v*@ChHBtrBy#WzUFSss4xLWr`7n%wxWnmwZ3QcYT^=eJ;fp z1+^`Fs5@`ou2y3bRRadl&yKHGnNY1L$0(5!0vtu*4wdF$=Os_xR0+*st{88wJO@K- zMf1Pq1541ho&3ZaCr>pv8RBYIE+ZB>2f9V1!R>%t%s*k#Q%A;w&H!jI2Kr6@gr79C z&>sCY1!dbhkL$@P2WRnA=C+kemzN3IRPFZ*X$uVvd`fusCZ3I2L+u9lmsBZ_@xs)y zqH|xCuPcpz47rmZsRDM-um8R`zTD>~f-4{vf(2$jLMEDMRjO7p)A`HkX#mUR3|1vQ zMSb`C9jP;B{LV=oAP&EL20Var&yp<}`wAw-{39u0HI*B_J)IG8$&E6%Kd~>$J6$s@ z{9^SoL7m+1SbfHl)%C@soEWsVccP88%~hL~VNZ#UpvP^}6t*9`V$Pvh*~myC+>Qlb zyOOvlQeNVCkDrcgWnX|*oe@EJWuqn}vIU4ir#L$wF0^P8`tl;`YnCg?E$Z7n5-8SX z?Ks{zBmDiOJ?+TYF|Jlw%}pzOl;(G{|mhsLj20TNYyG~xzE??W{h65(CPtSvX zbJ>_&-Sh@JqHI`%ZX8S@k>x1R8yQL@^*y^BytL!NZ9UJJ@^<->Y>wVi&JGmKSWIZZ zPnEyz9%kcI98#w=S(BnC!|H%MmnVyn*Q0KnTvUceL z&s$!aP2Ud{IqGF-bJD$2Qwtpq&b57_*l}ZbvJ5})hG2vn!5Ft;EVL`-wR5I563>U} zX zyQ9zV*~a))J1q{Ko~f(8ADC8r=+d;mG*Z&P7`4vWOS}H`3nH%cEHn+w-b~ydKEOk^?;-%|IU_wVro+uW4SdrcvL-_kG`13+#qZ zV`TYo(|e*T!JO*>!f=y(ur+7IL5~w8+c>2o2y(|i<-~8am!jsEK0IdMKMd%z-{!qE zsWcE!q{;&r8OFB%sbi8oh&H+693xUyZ7b3KvBm3FLrdnh9SU?j(qqbAMZZL67Mf@h z4}LPXzt$V-(Sb8Ams>p^!IDMTU1lo?;>p{^DII4OOulZTLyC$C>f;)ws|?ORT(~Zj zo_<>ClhYa)KqhW#BSTX3jTlYAdFcS*IufqU@M|PGw3a28YPt#@giWG@g`K{fv>D?K zeyl!)EJHF=f{_j?;5$EJR+3NqGsLt=H2+jbg*KLSR;piETo&6;p%i&mLj;gDwLgO5 z^rU>Xol%Mp)cO4dj_erJResptVf^`fWAFRp1(QGiO6(vK$hqR_Zc{GvpOPQpov-I- zAe2zZT7q=HJLSB_n%+Bw(xL5NcfZ_tTopjK+(vQ5O6VErXuVAkUU`ZN6+vS1Xw8Uw1{u$|7_>&{6pNSAvZdDykH*4}~(G|r~t6s3%ZqQAw^5dR$HBTPo*Qg7xZ9Z4lZkdE8ahZfeBU;A2;T~HMejF+mS2XA8MNA32(OM+KsjERao-s9RWr6F zq1&rl)3>tt>g@-x9O{N;FM(IU2B27TP=fELi8@6&VLko&>hXf= z3*W@}N7fu^9F6zqEh;BcEF@!SpC~h^<YeK z>K|`qgGK3N=xf`os(AC}7co0irBg&k@&M_}i0vI?%6;NsT<@N`H+b_wSmP8G~*4r_1|5=4(s0 z_mN)56%*bG@Znv9t#q;7pZrTH+OhONiF=zVr;uJkFVq2AzRlDz((6iUH7EDp$D8rRtvK6v!J#qrbWQ^j97k3bc;;|8;viS~S2%&GNO9v->8DOd3 z(0`(s{yU93MQVP=gzj8GO&Pq(pe*>8>Vq=PKD18CooXrSGT;3HQG=$-;i~r?sQ&v8 zYxQ?sv69}>iDN0^1GjmGM?rQ(I4%(W45(#7OLJZjoQ&{H?DtJ)O|^Z&rCTR{{t}gG z#LpYJ`VhU2r{5{sW61gL#VtH=IUjJVD3s}mtzN0$>#GI5w z2btY`d~bV0E9(UJgo4V79@D%zxMzWQF(<5H9$*9e2p?hjQ@>_2sS7!djn&UKzpnI( zuvP|)8LuAUq^hEd7PoSl5-GL!tRLY{qcoy@tsd_gEXrG0K;DF{&T075>a1G^=c=(8 zbopgIm>$X^3lHJgTqGYw*;NrNx&jlDBCe!%l!PXIvdcA#r`(PqnE5YLY>|n!DZF<>qeosFkq~<4io*p&*~+$)MY`CAfJrY3dj*Rf zUpg6I+$wXnpJ32yj1ke7EIq_)c{61k&O{uBH3wzvjuh@FQ%OQqmk(l4B4}d-=8SS; zk)t-!WL&{OWFclUWRgppZ*IdwXO)2lg&#;^(#+&`FLMScY6>kkXK}a66@mBa9}-r$ z7w$9`eg{iMuZ&Gaed+1dsE3&reqPj`Xtl}>82w9(nPh_zN~ zFdEpc2FolrB!qCl^sIAxbqOjZ1Z(e-Ee58dlc@48sADc;#hzU{UTG?t8lV9(%?qXp zHD2-qM|R#{S&|cH(uKGQXRRhQVv=sT>|sUk!PW76adn|&b7>Z5KJL`>i)dtBHT@iW zCUASe$f*QA30zBsYGXj}l_YR_UCP&qY*!;cC*aIMN;!D)F7){GG4m0u;=St``UAgW z84*b7nh9zX<}Ai&5UTU|du+&Llo$>euTfMXS}8+D&lRU5*Hcb==I4{t) zVUb3#Un`=l6M9urdZr8691!L+pA5O9@^xN=WAZ@Zae9h|=b@&^S~YcAsy`>HGjc?A zs>M1sLq2w6!&MrHFwwgkGK4nT2>ZKZhN4~(7N6_#lWR@#q?y$&A=v4wf2m78Gqlj~ z!9TK6AG-0<$Y|iLi4`7Xh|g*0Mo@$QY?)uBfdeqj%)x9I9oCEu6K=%kzfZmir|nmI zl1|Wj&S^h6%+G<2zNmRwE9*pk`CCoO&>~`F=wKGu1Wd`P#@Q#T~oTNUq^QC!l!M9@@t z8jP`cxYj&=1DtM9Uk-KR_7a|KY?ZlgpSZXTur+$5&t^j6^)>2PM}}qaGCdH)wH3I#eEvCX;_e!`t zp#)EU#qepW$tm{lo{ZV}6}#muJB?|3(L5}D=|x-C!JFFH$w##j^y`y4rLkDqRp^D| zSOOU~8e&6MupVt`(q4TqZ?_FcXq~p&gqkhci7NDB}fl z#XLQs9(|lm$T#tgS@iZs9AcCol{NXxHm0`jZLIx65_ilRq)pJn51fRw;H+CJ06UFt z12!&!`E|n>U(?uMZald>xWRinHVNX^(t?g1E$W|w{krWCu-+T{;hlCSiTa1(6LSJGPvFqB;gIX6-p==ptF-OaSC=k{oNh z{RP7btQFt-4TsQcCWIHvZ3cEOY;$)*-})3a)-$9A=lL$l&D|;*Y*Sf*_(CpU z(lXw_m%RShlcoKd)P4x{MAenR)tI?**9bYx-wHsLVnzTmoODre)s~4l^AgA@`juxls-34YPdLDmt^(sO@C`ukeSWW@3g)ekd!xkm zqxsKqP>vTMs$D#Xlz(1a9DZ75r}O+N$0fFVEgebDbz?2OUCSl_qel(rBDC;zvTAhZ zQjZA}ZRj?lB+FIHmYhu%IU5^tM-0+CezP_Vu$Yj0t_mf&o;v8-iTAaAl{7S@8yU)0 zCV{2)&O@c<(p3s;FR3-WHtksdi)#|HI3MH<1?O5Z8()Y-=wzY&ZPa$65~x zvdW!2%h>4&C76?ZJIIB&3MP+A>pD!MD;)w$PmfT~D9NMT_8W`2F1pWol*KXWPzxQ5T7tggk+;6-v z&l$Zb4ki2R5=&=X#nStW!Td|;J!EM76(v5elQO7BM)^KU#j_Or+H}j%#oRx}waTYi z(7Ce8-B_mX2epEp8y1g!qjscjR1>Uio%b3i+Iw)9P<+~Hjye~q#IO_8;g?K3P-9_v zeVLO(4Z7*s$<^5F@x6N@VGpRQlc(b^E!4C>SHT-E^uU3C^dfWR$LbPPEs!|AM5xrB z@rYJ^(A-f8GUD<>iVF0hxULPPEBRZzWPI!#UG`n?5H@Fqro25B{0%J6R8)X_;g0n! zoI`6)K&k0(SIZcrnMh@|xFC0O#m6(;7jc^WU)WY;L7q~~lh&v;ws71I)+s`P4;R{% zQQveDUPxfDAiTE`ZcQ#wD_a87qti>|oTrn)W2*AOx$+MnzRsKhc9E<1Z>m36>bcB9 z$%|wZ0+>**B-%(kD0*!&6Q%C}Db|w@PDd|P3GYJFn5Gy}Idgo80%)E6O_{Ke^nx$n z8wJIdwAnua0>KIe)dDy<;Q|MIoiQ6R|JEt=Ai{vjxSOkFz=5k&P_Ql7X}qeZsCIWi zDy>MzC|A0v!a-fn=5RS}{hOa}uU#a@T95hxCmE{zEB7hE0SIw9f#ao-m`Y=a-gQ`> z)ueAQyH>4S!c|-mM4AcZCtU`%=Lv}T*xXQW-(V&k(bq2k{NU~)yi6p@VrAq$oNo*c z0;*PqSkeSQt!Rkrhgj3%eJA|V|MYTMRygWNp>G?E87eL`JsUk6aa&nWJ$3=^-#8X0EH}b_#r-8J};I@QG z%#g{i5V~oU1lb1#0c;Mt;iPYl$ckE`V1mBzqq_0RE_{#3q{D|{$A%-0_~*@*XW`0z z`dYeuA|W6m6;3av%2nwufw|k0a5861@Nji(90zq~`9>xeESQ4F(65+{rK@=s>N+%H zbUux1Klvy@Qt-TW2cvf{)Rhpv;@(ch4s$n(?ClM#FDW(OzSRTv$=+jsJys#ia@k0` zi`V6$;hSAl5u34kgW%e266mj-V;4J9gaXJdjEFm-rM)pSXmCNyaZ@sN!D&WF+(RNWf;?t&aq$o}2S3(eG6ZdgS zlJy=twY5rVJCFkA#&IDvu`MN>k9ICV+kX&>7tg$8EyzP20zD5KD3Xm27Zq_uM?k2C z_n12-=M%EKn_3HMHqn0hRp1&z^1eeX5$rcQum15M{f+5zOqDREsj~q3>G5_O`Cq_* zbNBSkSX~mm%Mf-X-uf>7RzWN0Sf$UI+n%dP-Os9nRK0r5MfCLUNn^&IzM7z<+itd* zc1ZT<^NItHb)^8HuXa0MIw?--_RF%bp0S4Af-o;Um(`54h=c0#AtSY(T`SaF%lu}T zLiZ){PQ?g%qciI?_Ui7?HyA{(aZ)t9tCgyeeyX~z=1e+-bG(W#`1_r?2V$tipvNgN zy5k|bJn2#sCBCSxtfXJ;aZ3+G;VKvq?M@b`i_$~~e=8yYGsLuEny4Lp+-xNs#CX+L z!)#`>o357P$s&}Jl(!0ZBXSYMR+0$%S9kvq)v$W^VK=NBEcWz_s{e?%+Ru7dSZN3G zRE$}gTNUOxfa7fn(09mEZX>ETONOV~y{S6QrFx_4m?`NGj9RC8YuQBV$1o-qn zO}D%Gy1S(*C%NF9pRQ4j?)rbug#NGp{{P}@n;nA@~ z8nI{~7~r*u5$1pi7S%B|EgdNNr-C7gB~?SQPKJNvJ|{Cx`P+ATuS^8hD3}_jMpl*> zEFm6*$Q6CCXytOs6q#5L%|jkz^+egpn=VDB$Cjtt*NSIhN8RQj$@DQ!u|!n>Q0!)X;C9zmZeQfjshN)de-TCnT6~awKe~!9(Qv%5d;I5}-(4tJEoorMw9QL;wK{DwGjG!b1N3zhO-rcWs`Q zO!!=zCjzGW|BhqsvG^|>Gkyryd-W3ZABH~0|8D3TiHAPWw+`sBgD4+S{X_C2q2Wks zDlzT%fBW~-tN+I^^Z)wb@)!1fB}L?gJR-V>cb;Y?zF(fHkP_BVy+44k-j;znecSZZ z`B7js-}_*HI+ZJ&^o!=W(yHj%w{HzH0Kw&K!e_x-2j^HXNlE)6xe|b|sYP2>ewgdh zu_^2_P-~f7e9mcfhuh;-yBY82;GD*`8}LUHdkVmk<<5&-HmIz#UxWW51B++tOMw>5?We2LP21ITa0$Xw@bXWno3H$(yh>!x zsPUL~Q5K%dlncx~w-y-`NqO|ckvlmnyHlBx*=SUllaL@h^ta`MmixV=M@3aB$-naH zhUyGoIo+iAhonfGmr9YaV0lby)|Eh$I{&Gs)++eEY@ZVJ zNKi11ixfKLMD{%q`I;y`0XJQ8CX|)e*HX(z#@JUnedE}Oc|_sRyu5t2ZztQA;L?f& zLZbpzmBN>s1r$_+or^+7iuvj5`@^ry2g%ZyN?G22F(&H((ZG7KtUz!yQOlz~ODfY@ zsABIQ5`VX&P?p5r^^fXGueIiWroMZI$P2h)-l6WmTyDv4Basczy^{16DyYYaxUAL+ zL_|}4j;MRV-7r1e-<9{ESPt2fjALm3YO2&muJyg;^I>E*X7jd1Sgxr)O9pow%ri_z z9x*Sq_uPuCqsfv!Nw_M*#_6u=UCk{DeKnd0Bj)I9M$hQ*Jm%LhgE$2dZxxsF!r*5_=%V7kFMFn1J`~|?x2;w-?il-&HQ7+0jSGqLbLcRQZzKCV zXjyel ztVBalM4)@u+@4y+8|4`Hx@^~)kLnqbkgt=3bKR#%c@lZh%&Mj6#yDr^dHU1zN z;`+$*SYc@|=aT!u>A~DBpO<&3N`$|oQo~(zu-zowS?;TYB&aXmvFBaUpAhAK zlY72*MMV5eSHP7IGfb@JmB3107j94JTeS@}TsaMmeOR9W_w4PaG%KohhOmvJ1Pjca z}`U99QkJ`Z@~{9mczlW6o_A|1%6`>jB9SE_p(;(v{cW$JRYo1U%gQH z>G%)HJ1&!UB~ide83TWYA1;%LP`U~8+cBH)qIJs#3wNqpytCX5c)&Keb=QB9OzQAx z#AD2Tra@+{;p*ldd)FzB$e#Jea@CPDVvn^{)vZht*bT_8)vndoQtn(Ncc+tz+qyvNIJrs0SUA ziO=g!o!vS$$aJfC6j~?gH%c5^laYMvc?jR*AGjxPva{4VGTVmX>$IUb7l~tCAaanl zO?dix{A6$c=^D4iR9ZEdC-yDQpj_C%uf~6R=pT~g^q}NU!A}B4sopLp$hxh`7T>-4 z-oZUQ?MXRd9gc`<;=mb)i~X7qk$6z?;V%Pi@k!r5B)Rv4*;_nA?%ItO$O(l#b=0d$j+RONPn=#>rCN2sBJ)T zx+;<@@rhYx(p$g`IcS7ui^1<;k<;Dm(GB2Yq6{uP!0(9_YuIi+4Y#c_YDnNZ7$>X3 z;#6+(XRJq^+Ly=KF!3LfwNQz^&gVtoQiB9yN^@x09(xU0J1s_$_KMyqX72iI26m;N(yv%QdC`T@lxaJNRG$k3}g^~{%#yH`9&9%r4!Jj=* zKid6v<&w|NE?xj5Om(6fLWl3&KO|0?Y&`;>=jvPWcMuMJg7qB~;+%>_9;??50b&aW zf$@T#_>7QK8rlKEUte4&Ec`x+v1`ehwNGwzYH9X5kYJNwVoh5 zM8AJHhc~PAHV?x7A#niaf6h~Ppx6&druq!2C)5w)^i2EEc83~EmL96C zg`t!luL-IqxJ5vjy+^udgKv8eTu{nUGN(1WR!*Jb3fjKk7Bx%l50^i7L*=2LzFyE_ zj(F#h>k|W>nL})^hAw0)3v%m^wsu<610@f(Lo3cg^rdT@kDB2I#vq>NEojqz<{V7o z1U$OyXAK+M+?K$F{C0cg*B{LIGe8;tCs=SxN9N^t9YpfSSfy=keZ0-1h?~yJBw~bV z8Qev$oPU=ng#{tDXEErGwqnak4(x$7c=``(27Sik_Xyu-uDi&)M^p|79Yu*r zJp4=Pcax(ctIzsv-KY2jSurrzFO;%EdfE1KhRMw&w(fx>Mnd_@ts>qiT#f%2iv7O* zgn~=H+5QrbPJLuzMM`q`I_T#UjgF4mM!&Fi#0u4IIQ=+E5tsBU&>lSoN^CUL>o;4nsB2#P$QbD=V6r_ zgB~i;FLrUoKTU%4DYaI0y;ed(-SQVEP~16vCN?ypRS37(Pym7@=}t;QcH~?5UL`+j zZ4HBEa)&Lfrav&t(YkH^g1P$W9uhYI&SMPWB-r(~Q4sk&s|b;uZwT%{q3<7y0%1lm z!R~rfj(5|uye)-WJ~l_%Cuim|8`19pLL%@3k>rTUp5#;Za3wMLV?s=s)#l<&ykimq zWcGqDcS#Qwi#7Vt{DKGlA(b(iQKrhogX`&cbG=?rxcO-U55c#9FsIUrmlPjyJ2z_0 zr^v8{yr#h4o{SNH@sRPpL#pxe5r{3obAw`r3z-ZT!4EL6zx`QaEnJhfhmsOx^nu72OUu69_8CUdb2B7zAjO6SlEs(Zlsg^;I51D36t7XS=nY& zbhxEXxTQ}FDKZw zzJ^&lF33`s>vzmMA}}D2nT=FNGuO6qQXbzlPj)W?Hponj-pQE+~y5)8od& z8?Pe;T4xfgKLcJ3M9ZXyXZqV)T9u(JL_2~BZfu=gG@4ClOhM7p_hy5>TIr(34J3+N zC>3gZJA#~KjO9^^IAmE^uZteMj6kzvDuDIL5;Y`59ajvVu z1ous~B+g%uF{mN>aWP?l#B+(zd_^zv9$Tr}DRaVfSy9s7q?=u`%|?w|Xe|oB2JAuC z8R)0c-4hH?%zG)j3RQu=#mR_9i$AU5XTo=_y0E?r+Fo}0Rz?8%xr;=w6TWHUE)xqc zg!ZM#e=aAkg)vfnG9?n?8F;*|AHqu7x< z;)fl%ZqGYi$y#-5+^VO^?`*a#MPl%QW1)0JoiUVdy*XPFZXerjKPe*8@#19K9BxuG zr1sgF`nKlKt-;WyVAn|t>R64>#m?vWWH$(phRZllthGu z9>p%M-sd~C&su+o)@QnXsvg_h3s}vh@#`(V_}qh+xXb--HwYuYlsIC$ZD0Ei$*5cn zH?}n(k6!jl)L8VrCnp8p>fw5t|6E~M$WLQ-k&MuY>&03X?VY|;&@bG&=o*QGj^T0m5x`x034k1xRYq zbaYHR>kgKe(iY|Yv5RF;`yHlkJy(I^UrI}su@6u~5=JMcWqEM{)*08+p zz_j9|LhvZ#{sE#`JII;K8US-YFFnsi_H2bRUOj+VGfu)CieR;xjiZtR@En6Pk(DPi zzdt}5DD&p)XQ_V>&P>^&q`E`K{B!xMadc_Dk;iW)u}PNWjuUH4`qNc)fRN)T>uNy9 z$g!!pAw_nOQ&sX6d`*kOmX84HQo2ouT5%3_Zgdz^a6o_;ALBqD>h?sAtjAV7HWy=h`JnJ)uPnO+WyHflfnwy%df z)5-Y1m#Z^FkVa$j!<^>H43EC~+ryB)E6$L~C33jTzsHY^5cM1{6J1HvDS-JMY1B_( zWu*7Yw(FZ5I>n1mM8PLH2W;ZE@6LH=jo~-K-Bt;cIE2L?pZY{$2_3vhrf0DG9qQRR zOY}3FNDciD3B@sY1(s_lyacg*6-1y>AW@=+lV)HLF>CmecPOjnWQ1i7lU>Q2Qg+3h zR#16+X;ZWaw)stpagcw?+f@1-t~rr*6(82*^Y_@KhXj*$CKm{s*knbW#T}8iwHD=P zV~ez&URYVX#Z{3lmI(b^t?sul2JBL&Xw1~~qy6rCBcv?NITcb%*P`4c# zrLLue^N*tfK3C?S$b?xpy5|Emwct?t)FvlBPbE&kK z43?!fVcy;1BP&Vmd#XJ{xW(R{zz0_XW^2f+zQikflnnhQcRKY$*GxNgicRtU67Fjt zQE*_yQa3w0oW2$Z3R6(UND=&n_tx7)stfhL&29N5eOmwz6sbx^S6eG&cy%qCOa5_f zpvfe8a&VY*j}Y254!=k6z7X$SUI>}%1wICPQTu;`4T5=L$Dgy+CNUFIln%cBz>L!`;)ByEgWw94^Vf=}*~QRZ$5s}Vc4SkZjBaLc*p4YV(W zPXn^QMNFwP!=6*ATIEHvEm7d!isK_nosF(j1t%7}xr2B|gZwrZfvI$`qVT70o@Y#t1Vrkk-TZqFL_ zDfsV+;Vz7Edb>q!J3GIE&Mc zZK)Du*MsS;$aEyJ62eY9aw+hBag{rAK8_aI%;cLTKNF?A8NH&rKHa;U&Uo!7pCnNC zUeWF-iDzK;Q?YwY2VFlwfDYFVkl@+^)x)>qs*xo*)G4qo6x~8L`^N~eq{k`FbYRx@Yv~Xp7 zCT^o+Bz#de152}$dwZ&GuKXfMk7~wZOWHqBA=1p3YHzmkn?<(ZO0#DqR(l|NpOHIW zCYNSXHqAa5|2^c7@=YI$flGNK{P26Ie^JqK!_*WhtqBG%|avn^=DqcNO@8I z%T9Z$`9uwzQ*iR`l|1g#MpVnJqUXE>6S{Q zqTVik`2umzjHrp4ICdO&N4BxUfPuqM*1Ve38Y(5CKHKwJVSLy3>Uzx?5|+DX*v?-{ zV&lq=N$)ZO5s^swNkRZ(E9)ReL7uf-yHpDdrQ799A34zDN$bKb3cX}{ZgYzV{QSCC z=Nmz;JyyOIP=`)XM^;Iqk2`>^$YuYt2J_WXXP(Jg>@ht_*Ulh270RFZNZ@#)cn>1b z=A86iutd9pot@yl3nZ49t1eLL-ncy>lz;K!q`7lXLW62}H2kNiEFu;_W`Vju40Q)d zt#Y`A2&tcSqI3j76Rd09sPo-w35g<^n^C=dA9|BU>wUf02Ff|=V%09|=_5+6=D3qj zmw6ivf2uHq7y!Z3H9QKY5h-&s{yS#l*1^@5!e>K${4wHU-gx*Mo=XpR5UZdE!B!eR z8~0(S-1GyA$-`|@_e$HJDQoswCu9kBVbk~7AG?b+)b!o08f@sz6(oQv=ZP|xH9nW} z9n+LS*qsEeI@7W44_RfQcel2vk!KRh=k8hG4LxWNZfsDR0wN6Zl|AoQgo_h)s_p6V zoxB^wr$sYo(%vtpn?8wFWmdjLmkj;XlM~1DTEV;f&N3wW5MOtLr!ji*OLrA~vCK<% z2r}Jhk%o$`(ab7WA$QwctZew1*ctUf3_BSTFvAl|oN_y>d%N5=A+;k{3g>EGT+RD= zMJwnV*20jt@>cO|Lo-xsK6O=#r)MX8<8dEGdeyO zE@CwL>EU{!=HZ+_3j#f&jxR|JVN%6~|Ef(!8YIvw91KCd0_xh zxC|n&7p_tT)Ro1A)0L!$u;%vj6J#Nwt@Db#ddydmT(fcdRnpt(0ncI`xXMuuhV;1j-@0wuF2DA!e?*mFa0VAB5h^>IWef;=Tr~w zzxM2rqjEFz-PjFDz1vFwzM-vy)!hV%U;3b+hgp!fKqgt>PGYnA>S9m!pE`~sg{AiP z*AEZip9{4N7G8e#+~~5r!~DSyG__KFF8p=poITbD0xV!$uI7x!kPi*khfjv>a~H9U zw+u8_pBqg^afGQ<-Rk_eo-ye`;8t|-#Sz}v4_OfJ!tPM=#ekE3gyi!lv*It}8UHwZ zV)-aYwJbcHhy;BI^jTCKtt39J(&GJENs7!nanWKx7t^0c4h*JMayQ3041ScT?K-6M z{>eo6)|n*}ClW#q7rM;;hBJv4LIq<042j!@`9$%!$fGggwjW4-gp{zEZ=?#;L+W9Q zo@jsaK5tM;je4QpT1RX%Z|^2$LpQKxnhp`wi#h?Cnl-#+>Vk#H$BbmD(;WNQBg9AM z!CO2Ijw|mpDkXZ^A70TBC7bK33GcB(?41n^9$LN+%+pr=2B&aoX1ttzb2JkFYe4Xx zK!p*gqqM+AmX(4jOBQxQ6ebP~u%-%)qQa;+Q_QEQB){1v9w&V9c!uC4?AZB#CF)L~ z>@cE)SI5fK+e*w0<2pTg7$n{#lBmYoydZ^4SgX??^1Oi_@YwCrw&m7po9d%ORjWKT z6$)l$=n9wV-U?wZs^jfe5N3#;)~8)<$n=}KvL1Aup;J9r8V14XkdKahPekk5V$Z^ z=X6^Wo+WE4K{|;v;!BfGPp;(W!en~Ep7d?aJZQNNwC0*XDw|fIhidf+4=}yEvCxib z&bA8DO=o{t8cNld!9Va_paJp~dRsPIdV7qRd3Mb$3<)qzHktkompK(|)1QuSW<=>t z*oCQZnOjAF``pgY?xpgex^;Yb+VD>-@pm;r11~+UJ2j zG{!H1&}f~;*P2%jD1Rkzya?=CefZD7jF>A)A`cD}U4YAogM$jTm%V zKJ|CWt;~(KH;r*7x!5T|9fb~cg}KjFFQUoGxZEB@_8n)2NWpocdh9T(xuT;cUBzpz zp*2IhAQuLAhTQr!8Bck&i+08{VAaqKD=zV_f{Ct}bRN)ex3W+9QnCTtB?E#B_EhIb z_G<{MLC}JdY5G1t^;#sKQF4}_{sU{XBStU5wUKBK;v0P8dw)#iAEI8#jvvs?)>Wzl z2wV0DYz^*M+BlatY}duT42enz<(~T9Kr`U($6D+tdiQ3Ukr&^O-J~j^P?x31K&N<= zFGe(mX+H)-hC{^I{&CILpZFGWFlMFHb2K8zJ0f&P6kb*2^=*CNZ4gzWk}#l4fUthb zRl+N!eWlbMl(xOvmNj2~o@<{#liD~X$(-|!(*(G4qQ{L=F$W2u&e?i&aB;kP1ACGb zAu`Uhc$3D(?|j$5S=zW@aDb+!lSz*`TzEEiA|UEC(@c8g8yap(fVku4eknbPv#6F6 z?HpownbFls|Hq^&Ft?<#%C2=h_uL|=sJbEUcjU99t{8c(wjn)%_jHmo6-jkO6}&$t zD#AxmuxpV6ubXUF1nIt&79hMDq5~wUF=mDg{>qaVyZ#ReZ^$!?63I(#>`12~SNjRD z91(r6bsq+Kb0J$jnRUqJ^h8YQ`J27Ar_#W~xN?vJF!E$B~F#Gt%Ak_4UQ4N~28N)6(m>NKQDGp~k8c zaP0u>8K6eW`F~^2=>G?M#*zy72syKdvE9d09(*7guC!5YnfGMhuv|1<*nZNjh|;Fj zHGktss_d1(K^dm6eeJ!a-tHu3)~7|Vdy(rC?5j*HQG>Sv)J<>PWPeI|q7Cu;*-%~o z24d=X=<=BP!e@FmDkdq!-9s`P3psiZkIUihmRTx~cB}gSq#PisIe2MOzUO z5KtuNC`gnX1rf=TBxfZ<(*((}70EdW2nZ+{2~Ey9G$1)kY@%f7CfPvK-umsc$G&^- zbKZFO-0{Y}?~fXzt7}x~>Z)&jbFI1N{Ho%2<>42T<`(VCZ`BCaZ%`T=dD^HH0dIor z8BpJCx2m5OApug1wRej)%3XS{u%*DBT|s1%9*gC8s!cN?esPJSUndur%D*c^J{D{` zCBGuQe|MSXaJ%OWzy#`(()37h|3Z0q1V)M^yv~Jgq;%ou4hl@u9_zMFd%0E94CaX2 z9ya_YxF}tZ`mx3*#(ZL|SVZG+)c+%XycgYqY{GEZZ1kbbV*$CSUj?qIsecm^d%dLm zi#^hIxyCnvY(bg%gU%TF$2FH|8vZzGgCd31HoG1_L}=Z!yW4sV?bS2)=T6liUa7<5 zi}{MwJkv=q@h{|Qj!w)CB#Dq9YQ%o_!*DI^0LmPO7b)}9$Gg{H0-f`!uEw|gP-c*> zVX(;fd!~u}h3ip+fPz4xxzcm0M|-k#?eyqlc)JMDy|EfmSk*Wi1o-sHO?e8m6B>Gg z7eDtk(}pm%K-Yg@y5!!7=OsP)sb6)5_Yo@;z=8fywhZKRuzVAB%Nm0WMu)=JKa0{W zZzKUImsPyk2sycB3EA z)gPjw3;o0wP%rL8gWg`#5C86y0}Rjiu?WUq@d6}$!F0JDbZtcH`J_jfD8J>E$8VOE zr4^;e2QO3k-SF)<(mylBW;Ar|Ym%e+`w%2SjF@MW0XlALM522~KrGazn&kUyJKOBn;78suc{th6KlG?xQ9dwKfDgiBj z-S;~9BjR6lI3LR?YdmoX`4#*UusQmyVNYW~n(*cIlyPuoWOF_JZ)*EE z#+ks8|D6)3ri%RsC2$bgxxM}mN+2)yHSIqrfhd^#C_KQ*J~!%gRG!udXsw0bgg`pd zD{4I|)c$2P*9u?&*8J}%`P>>rAM2rr!&jHVM#$99&7(CoR&LM2vL}7P?rt=siK(ER z&sXpKh}DC9(K@|=#4pCG&?m3Y;$iDs7y{j)6s<80lU4!)0kNgOdL}=W)=c(g{nS?W z-pax+Io^DI(&S=7HNw9c!cmTDnezekYuwz?nZ6=pkA6~{&niXsReWO9 z`7BgOlEztUXnp6-s`H(5R@}?c2EVqf z(s4C^&RakbE!c~X8_9OxJ>eRLzv2`Bx_(NAWuMfHw%Df8jPVtziNhL`K=`RCqok8? zl#G|2(@oci`_Nj>0!}Z@IV?itnN>HI;(@W6BQKBBk>{Y6CeJ%5-suxVICUz!Ipp(w z?+WjA{vJlU9qfG+e{7iy3pz~;$QyoJ87p$W#w~zlImNn>3X7(?r79+ZY*|_)VwBA;5lO!W*HC=rHn)utM#g&-vAAt*ORl-SX)?wMA3r@i0dFIs zf$BdDnYY0Ziv)B%ABc#I2k4aSHuI!nnQ=_xe$44qw{T02uqp)D_?OzgP@g9V=lUA8 zm2>}%o8G4)+CgrkWo}-lBrgn!CVp>v97FQA@Dgi;ke7i=hmd-XJKB4-1CR?)<`=%< zqJQy3+d2vyNwY<7Xk#Q#AM$X3$-t#}XbpO6$H2J9#Khr3Uz-xj!WJ*PtVeLyDDHOL z=3Ih03aXEGC$P^Umln@pO>L-}6j7ISk?pw(9X<)nURXRNE_s|I)Q~D_#?qHYNH+D9 z$pb5ec7tIQK59&PX4y&+623HYwyb`i?B*RqaaWPqO2g|m)oJpmz*uBwKdxLW5!I2p}uK=VTvZIUFf20AIGRi$*`L zGxXy>e^Z8= z+2K3d6$*P3zY6V%`BxOi`tkK@EmC}5-PH=!oJ+y4;_ioj&ROeZ(2z^AB}?|)gHw7Z zHwfongNv4-I(tIH*KB>duR|q9pPE*x7k5ALQauTR)Qw+mzd{|y$uK}2eWLq~yBE=O zy=66EMoWR{P>xUaitO2(d27#k(wW@ebq$RZxCc*Mf6r-4&snal z+tfGMB&})KwlvuUkCI1jHh)T_&|~wsp`K~QL1tcfP4UcinNu~O@Zv;lQ+cUHRJ^4I zNnNs!_O@n{`Za4cSC&n=K&2rHNxm#mFVT3&qy0X=&*+{FvxSIjwH12DI%wZ*GG)GY@BPUvk}Bp3jar8R6x6_*Scs&O zT|Q$KTbvtJ)_~AJ|AYov&P$oP4L3y@ak_T%LG~y9RrQ$wOC93`=@xfVbj#@3*LfH6 z?9y!6p+4Ig!JS=oEr3>l2$uqKnoCM`$0i3}>4$eXwpnj>#jn@{Su4=dFOef39gS}e zL`8=%?&7973iO6oAbePo2sA#!CA5}X6CWd5N2>7lwh7-ipHQt7DqcEM3Lf8~RqHd6 zQ>8v2Vld33Z7|;J-k+8&Wam8wMMSx#)R{&tKZc#;F$zKSbUN`Kw>q_mg)xLm*Kif? z&Fs5`9eW|bnAS0Gfwk}RVS>+1=VVK4Wl>2loyDbItzms3_aR5Xb{Y7 zBr>A0r6v)7tmK>!{FH=LnQpUKmkTGUW$j=;DJ&kE^>1`U=Qt|!nJ!ZuVa*iJmyY-bV~q12 z?f%;MPzeH`kM*?Ejt8*kE$%STRsk=2xq-Fl><+02qug|MezwYH#x-7=hISNOGegaU zHyH!_eU#O3`qef}oEWc}U8v1wQy{%wKH z^0rEzs{ZWE^raYQTak-iZKXS4GS1?Nr{BNgYDs~_$wkPg)JQb4mdGmt3WXRW`qVO7 z7cptM^SHj@eHOTm415#3FlnK8^$bstHv(zQkS2ojr;M|H$65<5VzUddM#QD0rNq`Z4a zRbGV!CerIuF1x1X^9O{bFw4CRdW5pRm^J5#;#3Pve$65UrniZD$GSi|c^*~I`apGr z&Q;Y|YFTKFa8?c?0P_u*hd2@j=Bp1-7@tK_Xs4z01ntuWuBb;F5BU%6EH|F zPGI~`*3@6(`OJ|^`+>jSKW8@6WQsa7@O;UG0pYVDK@9nG2^fZJ;yj0SDAn#5-39hB zivIk-;NiRE9>*#N?A>MFJH!^ja^MF^faF_p1XoH{7&4yW=_y6o8rXR**DWYV|n67@o2Y(F2VCOeZWG z8>(kKAd1^+ZEE1QcFz`d2#aun@<5zb;9whh=l!p7A3J40$cCQ3xTs297vDSSwl$BkX)uwN9K#V=?r+{_>HE9&m*U^O+<FB(6)5|C zhCWOU`NM(2{PrA1!8do;uWhTasK~hMrWA7Vc_VIBHoeZ9`Od0)&S=5$+j`$LRqm;C z2<3~}gMcS6!#?m@@%dEo!U~%j&uo=u(JNMxJ504jqjdLlzchguR7x3<-;a*!7)cf# zepeSXMC3PzQH#*afC(e4Yt&Eh>JuBBlh6#9a1I+iZ<f~@Hc`U;ObOvj-lRQgG8d80mwc*& zjSPMdo51m?_>cn(heWlyDmZhXf~`JdVP8E*Bl)+{F!Hh>73}r4R`5%(+$LRc*Km5D zwgR(w+2U=$2`F>_vs2l(r1kZ+UacMi;Uwk532ib8tN!OCbZ2+l3a2id(R04eX*fOV zpdc?(vqdGQD_F))%>Gh`l`P@zoB;z1DrFeVei&1^n_AZSh;)c5!@vS4-{oKNH^HVj zrOEGHskcq;Ir1N!WyV_4^4HYU(CWMH*e=&f82QQ!=~HoTLmJq7 zm$N{+eX*%rI1hx6S~O|M)00WFT1;AnChN%0s?NQvyU5x{5QQTfx+VFb8lf}=t%W}O z?Ukla>27Et&s#TA^SLnC+I}l`?tAmo`$Y-9biwylqslb6k6?@P-B%uXJ=wwyu~zNP z*$}?nG|&jm%c{oU5T+9XBDR`Y{OdoFw3U*SqSSvf=IY_oEBc#`oQ3jxGBG z8kWU&iz0^Sj3o`&|7BHM00>z|e>0K)$H@NQ9AY;EEMPtPMqNdH#fuIL^>u8ilJaJX zr;2m!uafWgh8oR^ulq9o(yk*mQWCigfja#G(V}(wo5M2K@gKogaKW!a6;^<=P50n#268h^}-NEoU+Pm*Ox6cd3bzY?mX*;7wT!rTxY-j zV%GjQH(kxoSGHY(y=8j$mZ{&|z7}^Bc9^(GX+G!}*a@-B8)2R7u!cP_L74ai`E!4K z79JtPX#dVcXmyacKisZyiZ9p|r*DWJP>JEFt_?RF%Ab0YpR-%=A!%RqXrp&qi#jn{@*Sf}- zo?o}v1gRk@F{JMm@$XdN@8pGnAC$`LLFY8P`xIq<3(DF_$5O&qC=5MK)B=@MXAcYx zDH^oP#!XF@6$zEtoCul)>j@I%$WJw@J)!S2!qS1>TA32xKxFXBnsRI6f*Ooy+yAEkpnTnqRlO6wsXbxAg>Z9{u2xNYA(RWnY;A2`31fVnr< zHMBLPjvldP<4@$JJ|UA-j(hs!hYy!r7hW(o++}|H6GQQ~pJ-V5R_TvQw&F?YAjhw7 z4Ew)0<5Vo6vQzp4UZ8$uB7gTBmYbU_If}Wf)@RtJS(6`oN?m?9f$*lJ>kcyCN%b<^ zcs{8-NFx=0Z%Rk?Ce7uD_dGBaL3pf3F=UuE$Uu3b8&SJo8@v2FU1F;^2BO1;Zn?muU^ITLRq4~tR54rM1p$Mr?NVB&yi;5vf`n1so_;RpUowUmSoQ7 zZHD)Aec2Dtk2YYG;vF*v*DRCzg3tQ)a%5ij^9&Ko+eC8k8K7X}Ps$JD)O_rD-Q6?4mYdsJD^2HY71=lAStax? z4Je3~;*#|yvW<2VPs(+T-rJL@3-zohh^xDs?oAa%nCVayx0Qq6zVwj|l5jhRx1nT= z+2XpXBBa8N9+!Mw<}o_*ZAE82lxU*`B~xzaPKFZwB=m+Yw9{w1{atEQSwZ5o@(HKJ zJwt+xy0Iw6hXJx1rT&@^m2!78?xuWo1kze-4T396CO_wk<7Q|Mhwmks{;+;Su?%1I z1qFrd(g@nTtJ&ctF`}u9nS1>;wEU>z(AuoGShPm^<>rSTTp~19WF0GWlNa>RN62jQ zOs#{~fpNihH)tl$*pwGr#9kY*+vIc@GRI+EK$W7|OuK7p5z=8ROMos?tVc1zqhrBv zn%M?teor$ogPDr_@%6@5t&_$6{9fcws&DIT{5TT2xbt69WfgriJA?3%3|SP3tFbt0 z<2>KA5*K$ZsOMzY;GGB4DPWJS%S#B2k5-Xb?H!ds`$iA+q+v%xBmK;1!FB!_Uk1sS9ni zaMch+n?t!zu2f9q8o)xY3w*coM)6+K%GHrQy{4;GUm(d}?ww%rl)v0N7jyf_1elaJ zV(*gc830}DogfgdQEqjX(b$GJd&_?vhsz*dd+W0!xOw-svVC}GUx+!KeqnZEzz1#O z!2PCW=V`)k?!utQ(Joj4-K4!vL~bRtT7=|^$ovloL4m+n#vjDWV?P>n{O)T2(r!gR zTH@vXqPnmH)3Q4vfJknD2^1A2`!9RM=`9J16_+vo%Z_>1tXh9SUuTYQP>??$IOmpG z&;JjPv+1eqsm{_3(RlWHeRTnr@ivQjo&}~S#iB?}e@~jxJY{lO{leeD4t~r_kNRR~ z&vEs7>wsm1njGy7xwZ_NkYQ?wwutW&*sa=AZg877cBqFC)w;*-64W9GSugEhq}j3$ z@P>{~h+#xr4ypfuzG`8gdTGxn6YRL&%muk)dST7^m5wReI4R?Sd zjSByOPIwuSGaa>dH^h^GKV=O-X4o`_p~HM(r}D>8Ohj8P6oz)cxMqoo!pH%#zU4Q0 zfN5?TKu5}O`2%8^0K_g$t`(u%c@sg&-z? ze6Ek3$T^cz17;;7K#xSC{eOA52V){w`@myhI|+mls5#xV59G0QJb77?=l={L&$=L7Z%jX*OPfyZxC zeo^TPXi@!NzhkoN)W14LNZNq=$$Xf11MSIam?yI~SSR`SzvNTUOiry46SNz`!GZmd z;r$21`uYzj!r?!z8!Pwsoofx^Ft<>n4Jhu_(nFH3GQl@FwI(DF)ixlsdiQ4yj5V?wxV{@@ zlQ(8%f#{O<2v*%k++{c|B4t=mW!b{@<0AelR@od=Gfstf7YMDe@l>>TMT>`sw?2D_ z{A$){E8h`Par@>-Dd|yNtimv>ADN}Qd6!G^xpchhGBE7NqVTX`5EB5qvHtB;LFZE*HYEyzC+JiV8Nt!z5u3d=>Vz0|WfMD`K z4hSY84EHJqFpB69=r21!ZW1YIf#qs!qRv`Sp{kLhu(e7uic?`b2juIQCaqM;;RfDo zFfw~Tm+(4SBJ@Yq#_4iT+ESC&MYEg4i9>l@>YtZ*UYe?FoMm05*?C|T3qoVYBW?2R ztzEwTg~9AoqkdoJMx58oMU9j;-sKZaz9ajvPUp#!Cudu7`U zN5;|ip<|xE>HBK7s>-F9Chhm2KHn52IX3@T6A4Q zMjQV05Zr&Ik(+Vx&E{LCx=Zgx(!8UXy3dpej{&XBIAoQRKzQ-4w*da=(&qMXNx8z0 z7z6pAb+D*ZzqsIc~KxFDq@B zvBFcm9IGAlMN=OysNkz?G<-PRyx%3K&86&zQ@eT^!zfu;$6O3tHzk7rvb-V8q}v!T z%$WY!xtf`(UR#HM>SvR0F`Zl51aKXK0*$pHx~gJ~(njVpogM+Sfm%&l)P#!y_C`}X zStpg^;pbk_5tfoDI=aLp6S}y<)?ZPytSPupzfA2(4%>|*YWm@{vZ2{bt#xy~;qtQ~ zFV>YmwJau}A%;GxYu&ze6~toYTxv@Pt`+ zgiMh*crid^DY~-#!FI|j=cUry49xQ<)L2|hDA)IIOHpK3?{AgK)~qd|7{kbbE+O@z z_Jte;V7R9`2zmmZHHL->{#^ev^JNP8-RV(6XG=xVv})W9e1GSKesu#v|UbfkcsJK9XF_8|06D=!3Iof@@Mc~gy$;6bVGcE=>~AMLAwecoKB zAy(qD`!3^C>7~N1j5SK#5SLY0H$Ce&%A8^kdL0jl8vSpp`+%sT^V8;q_~lW|Ks5n3K2nFPc)D%$S_9%;hDo8U6_W=_ROBu?9W;T>np^2O zOD0{R&txXJ6k2v#s)JHaUBZKIVW?*V#27k|d)GQx_>9wf)5P8Qb#)Dda>IvDgHBG& zwav!X_TpoNlr?n35`=lg(+7Z+q;7i>d!r@hrdxGs)>&?yX-&KmiK-OUQ91O&0W?KsE zYcBaOyl41wgJs1W<`a$z!Vav7m3Pep-=Y>(=E}aMb*<2$C?lQo!=BJc(Tl2qZ5+tx zJ0Km`?0JweDI2ReS8#uab)amItG#zKU&-2y%vfKuNN)ndJTOsVc}Rg(@yOP7O8oSe z4bL{g9`~UWK~!a|gm@iv|7!1X(l|=<-U7xjx!3zDwWw$Z%P@YS4Q-u;Iam6R8** zbEVrCgOUj&$++Lf1e*eVjtX63pqVU)_?k*x z$MPEd3DG6$l?%?5xO^+k5KbvK;W35s8k3uNb1f5%T|P7s9#LnT|we#*Mih6l$1vGwR7GoqPA_hTIrWc zu{~w+BmF86x72Yc#k%+$?Gf+Voehy=-59a^G{q`#1Nm2g7;svI)lIUjJ?>PJFP}8g zdU=i9yL^$>3^T+rq)>kO8~dn#aq{&Z_r-1M+{Q?b53|afT0491%E|=qu?FAUG}s1o zc7sb`KCH%Q=v#c6_+a_{6$<-lYPNAcMvvJ<)R4n(oQGeptI8W?1Lm}^i7~D&)My1P zH9F1)yNFyMuV0!MGJ1S>h9mVvjc;m&GUj~5?{l%gpK7bOvFs_fL*Ajn{*?9Dk2AM5 z8So$D{PzVX8%22)Eqi?rpa<@3RfKp{Kzl9rc>aJ6nC$?|uhiySlO+e?-`!6WRv&>q)M0<; z-c*ye(Gd@HXi-9C!-L3{9sI(BrEis^q1{tEiS`-wU*E=SH3Dv%QXQn4@9M`9FP%S@ zHy8AT;{T%iA-Y#mSP@lq<(uH=mD|CI!2w=D8jC}Bl+vnQNKjwC1;BI$P5+wn>~-LY zP0jhX`@)~_-pt0eVu>KpAhoCAR}uk|N>X`iF?ty!oeFvadK{=}`NeNWc_WH=6?4 zA1ty+&tZ+2=`|#yaI6bmUX9_iR9+I5(?i{1YS%|;z zOUH8VR)tSHd*%@DKQ*fB3-QKNYs(niieZEMyGRX^RK6N{$Sz+mM!h+CpuZQWOT`fK zdTv8D{0w?0;2to${*CgN8@HPgISyxhP=2O)Pu{=Ok;Kl@6U-|!$)07rmQrq&rj=x* zR$5)CdQuwi4Jf8PM9r-(r}aVaq1#V;05Ji^5E*)sPI(CeI3HGFO&` z?)Z4;=UShVCDxLQXr$@F*Mkx!ENBCsqfr~0L>R^K0FM0FXJzM_VKQu}ka9L&wvSqq zp+)l-iA)S~r-*kOydT1-Bo1V4;wb~H(DBF~d2|lS_`2sre*F+napr7@h`4)w=AeDX z<=4pe$g|;YD`pQHUFBXw?sRd-a6;~={wZN?1?4zsAM}LJ(c=7&5lyc%`Ic&G|b0}j{TUNEBtbYV@B>Hf(@rD=UqYS(Y2uW_K>NKP%nJE;Rr93%b#Z`i`K;jwZ2_77eb0 z%RBGHh?Pv^lw{5fR(_531W}B)OZ>zrBBxyuCZf^a-}}CrN2^PkfYXN->Jn0n%HfBT zKMXN_QAj*Gv7WJD1_G3AN}+?_l9;4ML&Z+RLf@C)elxWO8kMmV&nl8>q?6}U*0$60 zT;1wiJLCDJ)f8Unadj0J)=jLSUPHiu1%1tl-oeVi<=tR`u8sY^K*|yy_tkBnevOeu z;YHMTJaF{uk3ORk@!hEH2wNGYQx4WnlYeX~pa&v1Ym&}rxHehxvDA!S7|D*dbF(Sw zOzqchOx>~xvk)9z>YR8%M)iV&D9O8$BkJJW7p|WX6QL4Dr~V5j%MLOPbt}MQS+7B1 zAY*sRI=Z}{;FXxz;};m%JXLxorH*1oxm-YdT<)wmG}B-E1Q=@qhTIv{4Z$ZbL$i)} zk7iygdV`vqtfs{Ayridk7;j_gNeFzNqo?%LB>`FL=9de}j$)F_b(s#MN=K~fG767T za^0iXUHY>84fn+}zUW*H(^9pRd3F^MYgG@GY)LH50%@urE@zy`^!vcrIa6VE+kM(x@<0v^E6|UerQ5CoL zaPH5Un`LOj`+g)j&iYlv+s*mQ3aIju6cr&XiVJn7j$zXVxhmIs*UZqtMjsAr>yhl) zcfTu*cBh+!j?E=$K#jyajqytFSs;hS5Ox3c4HPv5*w5Md%>$VLbJy;FBZ>Swcjf=c zdegEu7BCFDx^cPT$Y|#J7ainAXOSkqD9%DAATHtj8UHJ90sf1MA^O*af7Wp5T~F6x z0(k2Ack6(!9?NM@4fY8JzsM^R5e=TK)b%)Vd-e4-u>ISS@@(M*pr`x7P3;wjFzA!E zx+4g}EM5SR^FaXef<lDFA@a;opJJD%$K1i2Z*epVX9__`f3`#=nq{^pXV}I5A9m zOQ0_2GW-wdr{dye#=es3=D)5!ehMU9{+50DD+BZ2TXY|d5!LcP>y0L}7d+bJDn4gJ za?%(~Ji694Wz z3nao=I@QmVW~I2n$zO3 z^!q`NCipFSLdIGkjXJdw|)J$lm#|j}9_}FFrOd_`cCYK31KXHDssUo{+Ysh=3ihqE+zZHVgxfU{khOgYI zvLHoo9pX;z2I~+N=G+M>GmtEp%nu&Lvtbda+s*`E3aC`S_;OUf4&>M|nzJGi0 z5ImKs$H|&A7&|u3gEY6KWaAy=tFko8r*vfvf_cVW90L^V3aR3aBlyg-yvJB_>{zl& z{w{@>4nW`OmujDPyEvEP%dKr}I)&DXycw$YFKPW*ZVG`4>e}l#dL+$4=U|saeA^N- z;cn|Dum=GwwbLDId?>pJ+bQ7xvj(pt1|~h)Bwh$Pxc0U6YCbFRIXnnS8Y0zjb~e3? zvb{FblG>faI2#VRZC3F+-&= zB}2v9@@Tj>W8aZ$`qv}7(Twv10pOK$oo8igbHstNm zVK*ufoF=rVjb2EOt2Yn(6sAN(9TFcnwZ}Aeuh(zWAnZ%4|IM? zjyBD=pgxt*&4u*t&ngzhZ+g0cQsw&@vSDYXS>C;3vkT5yHni&Q-rihYcLZSizI35l z&s1QejaW`tSFDl+Q0o!SlI^WF9~55DjFMJ?%A~K;D^6@ChPFxuq`KGDrBolp+G^Iw ziCs-lsCci0*OlZ#7Eyd+{$$eB--9MrSkSRxl=~W@he%$tcIM3ANQ9P=+VSBIMfcUZ zh<|95u*qUAA*;;EY-v;Q!_LR;aKHyYJCcW3+syEK&;^+0KcIu}2U+GDaS5@My`cT}Rr?3_16xIj21# zHCMcaTg`j%UX@yq`|#S#W!2(PeNAeNWN35W%~*}PZSt5kQ)9Lk+}qQ8d?%RpQ1VD9 zJW7i-QG=fLTRG~}Hbsh|$pjWUNs#EU7yoq!mXhCs?n816Ct)lwuaWn;4At*gT2Ssj zblDz`6|Jaop<$@{Zh`w;)NEig{!J~Q1a_>04lE9MJ?Xh9g}A?)+TiW&Jw8D2Je6R? zHR)qml(LuLAZ@6}8@=~TQL7%yH_OUf2W}6Q0jr5i=~9mL0*ug9K=9W*Mb8^I3Z>;P zkJK>@-F_ygb_u)~M-1_3`P!k$`kn96V>Doc=H6FSm0(aOzecpt)wH&s~`)@eHaAi+_+)C~eIRi2awNfPa zcZ>n1YH_bVAmdM=Kk?yx!s6Fh5W|n$y6=Lu~v{qN78kVR)(ZT!C7&V#;0CdpFTXKa61ZBSu2Fh$4rI4a$~ zl*3L{o)LP$wmJ9ARfq+sU`l+woSLcr<~dJVgq)rG)l0Z=t6Y(V=U+VsIM5qnhb& zq@f(!k^Q7EH)`Okr6k&BfkE=vUPfwLq(Rh?%mZ}x8a(T}YGJp^AcNTyQPrdDY(Lni z%l_j;4Z-s(l;MW!Xs8lH7Jdn_!5bh3CA|m?D=9UhkVT*P(2Nf32_CslS6$m9Mtdr`V7htJ7)a;y6#l;3Rm9 zg4M5uFo0qUX~2uLo|ZbJx_fnzxz{#7r)*~4a9T~XO}*^yJJy1SnAYBXqo;B39=yU? zG{(2)KGe<}K!f&2DIO~WItE1}BG}-Q`kX);f6u~|=MA(0=+M4T34!7 z95=R8Ea^=qme@x~Wv&(?CMP!TlRNCt+_Uf9;J4g&7+jjWpypOQ;wDh9kl5YRF=W>J zAxYgoh0OhF(`j00hxPIMcH(JDg9&K~rfEvWHsnrA%k=TF9d@9D%cka(&)M3A338il zlo>a~1V=QmrrVr+Jb-8|kfSS`ypBRrG}OkW$l>Dq=sKZ^?!!JRJ6kV;sJljy;+q*e z_Jx}(2Yf);>;D;)+5HD7gZ>97ON3{6{sEcV`~i)tgEf7wVz5qsiTJY=M*ac4S(LpY zO=&Zfd9>Y~!Auu_uqXpPjMB%Fe1q*PHEp-`!nBYsaF01bD5}5IHrxWA$D*gSkN{v?W1@tZ%gzi2uw~N}%R~g=&3;lYUpvDsVPb6T% zx|FhH-qNF+{*3YT``nEwuhujK#tq`$T+sk$b06dB8Z(-RUd-Li-JP%xA08R8>TMqF zDA>v1D;Lim>uH8wm}fHdT0EYTI2qI;Jdrs~`gv?(&X11YkY$+Poi*p5hSpB0#^%=h zz6rJc`GYKy{iQ+LmKNS;Lu_5|>fcV{Tv@9Vtz{5a#!>c>}4qw+E0yWxhb2K2}NbD8-%sWl7xAf*_0nZtTMP?Kvt91 zC%NO#OCWA+5FXB(?#hck-#C(Qd3fVE|aR_0U+%Uis(C1cOtf%8#f{m^I`UgS~fTC9uNwL)r5QF~TE z;p9BSug6+nhge=#OT7mnT3o4dN?`0=XTreUo7h4t$=dHKW&CbSy#nv&&JE%T$t0t5 zu2s+-a52Bo@G$2J;T)1ZNzaNL-u%kNz~X$jJ6X8h+{%?ddf0JJ$8gvTMm!p2!eSWZ z)o|bUtUbBrk=8ZX-n;4$eZ1&x`8R;1;~GdLaciZOA-CmD&`i*P#fdWm{vQxbE&hfp zyFD2Ol!UGMFU3gi`~l4s^kY-hEmRFo;BMGIAPda9KcLBU1bu?G0{Qm+zXHbp?d88o zUZ21;6z`6x!)j&TTdB}N_vsB}SC~AmCaH6E!V+(t@!Z0C&Y(^Du7K%SMFk(`nXv1S zCu!f4qRqCqUPG>dvIfwHe^YMZ7-XnVCrTa~rV9A#7`J@|*RivDky4!I{{f}?YjjOSh?9@}-0@2}XfT1; z_|y(X`*;$?L?JJKGuqyhhU1L*;;;}0xs8D`c3?-#AflzQg+gd0^gv_#fsDexSY zyKvMP8ME7&e00_8j(j^manE4e_DGCA2BREo&>r(IoVNlaeatI zVLdl~$@ZFuXGWvp6TnOGrBD<|nmzpky1usv6*9BmHBJ53^_OrUDA@jm*Z+Bz@xS!B zLJHnoOJf^l)dU1=mUb(9WJPZTPw~9aATvIlAr+7NAn3Mo1w4u;JIO#nQG-{7K?ph5 z+id#41g*d?3qp4N<&EmA zGauK%`Az70oDn&V?Gu_BklA~l7jfI5FT|Z0@mkHI`j1wuyb~V{HOyJ2_V1c{G|mJu z%i$S%&_64ByLc#epe;)tC5B;KY3Wz+Gq}xcO`qJDmxwLU&2ye$5sxdZt>80? zRuiD~M_ubeTwhRR|Ae@-co)w$k7thCuD}66_u9n>!RqclBSU$bk#~ACAyOK97a3?B zI0L8#XjBj4383uoiu(=6w?W}`PcBJ*9$BudrGYHz?$%+w@P^p?@ zyT~%9FB>*shYoo|qUqlGCh{fw%^tSgX6A;EMb~$#9z(cQ8k3YaKI7CmAKgmSVjx$6 zNuy1!xdSY2a_ek>ashr3!0aqh=z_>)_*S_3ysMC3YM0r4SII#uzpBrF&;wcH#kq(! zAz`$CuxF6w{ltdWk!g@G%Z*Q;skr~m!?8z-2K0tcH{Gu*zjEGE1g(;&UbuN;i&G>8 zX39q+hvu)Vlu`o(&?2k+AqLj^xw0pxjeL=Yzu?EnZiwZEj3VSMm%HJkUSg;pI~z;BHzn6s)2lSp!91S z;7hGa{rRP)<7KRpmlyN%bCzNsB|swh%-ZZFP>WcG@h`oj`Q_f!DZ8xk@EQ4YSZ4O) zyow}m|Ax!J;}fe`{-qza2oruY#326&qXY?g&^RNm$sjtku%S;A?*$1)H;AGBfltyX z8=dI4yrQFHukTyiQ$GfVpPMiVI-oG3Xu|8~qd|`YWM*IS`+MI;2fGk2MLaT6ld!U@ zoINB+N$gKzfl7)rN8%_}M2!~hYt*gD$lT;$7&qu0S|MMTEdZF^!dmTotab2phKyQ${u8H2QwEV(OFwqX4*{XuF>tY~Pha(hC5ab9eS|R5g%j!6d zKOpJ3*Q%fCAy+8#MRPUe#u~hC?U|Y}N;W0{P;JF1l}DTSx@3&f-g{G3MRMV9&lFNW zV~}cOmOh_tWQZw#_-M9NqAu6$PInY%@!u3P445~}i1$q)(dk@Su&v~->Tik=tHM*-Ai<2zV3+nL;8fvr}9#N>;8`S>P5 z8Jp+C`dU3euV_lpFoL?gT@WK)H@%(3KI^d+xA=Oo|8t*Q)SA+7JI%~-nJp~MFuDf` zC!yY@nS0+|W@S!NX0P+~5>nSzMRwBoWgp^@h7Gz$MX~)dY#W$GT4x01h#orsm zc~TZW{)!D#9&11TfWG-QTIjG(BWnU*f-T+z4KmgR#vc-azuW)ru$Ekj!5QL>lzBO^ z4Ym=JP2qvO|3UxpHnpaf^wm7X&-Eh7m|8U^sYPZQK&kHs{&}8N1hsN0F>cG6Jc@f| z?f)@B$rZ4-d&ivvI1cLbUt$3=U}tGOR?5tVTvgo(j{{KaDYH1e3H$^4V8Dp+`XB9m zcT`jB_H9rBrT1P0B0ZuA(yLMe(xo>MK`;iSDM*Q+fb=Gy^j@TwfPjEXlP10Q-b<(f zLU>z`cf8{r@AvLKx4d`X@0~vwgT1r&&d!(Y?^|oGIp+#PE8IT=C9iE^2!Kdr4mqf$ zk#ws@Oy<|!<%lnQv=|`dLrm+o0PV30O9RE`X&?UWiz!L^tj`008+8yCQB=RpI|tZd z0&LA+ZlSu3dnw#BAsNG7g6P^m#NwJDP@^)xoHAsnz_deH7WMNp)&2ZTO23@4#+{xd z_tX)w9oTdRk{OypQ#+i2S^$3Mk8$|RIi^-rPG7Hn)AHc5F}-t0D{?WPwLNaumMmI~ zUO(c^^zK*T0rDhb2sNbgLs%@JFS1M?ImR9@o?--xrTTl-SKw}L@QZE+Wzm6*uR=tw zgMBpxq3@@*o2JSRPYHJb@@hN41)hI@TpGAH==L_#$_#;~JOc^3Sq>j*VCiZOynr79 z(1Mfx5i2HI33L6~`so=+9#fAN?3X#>t;BnZ(0X-E?Fj%_^h?MsKm?Vy+QyBY=%`<2|M7O$7Q!qSWYG7wMozH4 zM~H2!9K?<;>;LK|Wh$KnjxQ!-f$+XV?C-tDu#NF{tPk+*d&}&S7#v9J036z@fP{Y8 zJoXHPXXFnQ1+)OGBhwQZM0dRamIz6TRVm80N2-aa2CL@kB>ndh4bL0Or#gv+^Spn7CFOR^`Vx+TY~4EiA!rh6h@ELE&pe16Ew_6%faZR+sb zX#2CTdvpq{+nz{%@`IMsbI1+E-|eR&ZJfCO0YQQ7tS{5>FPMp8C2sfV>zv1DKw|X5 z6Z6Lk?c%1J2s~=!#P}PzFT|awOOdLEG-lz($n`?YZU9Vkb)Z{RPw>-~KpOYATm^3R zCvJeRkYh{9>?Dn+hTQgIe2S~e*cT)9sH`z1n5~tqC%9Pdf-EoCiY-9?g(wazqvxa6 zEdBoSUWf`ag|d|);xBXe72U}-0@bm?t*+vrATdgaDqtMX> zjP9zi+dCWgL#eUrHe_D11iRT<&?@0PKKUjpErWkb)%N@O=b!oi59VvVn6lrPx#D32 z=$b|>S@nnNZDhN#8jzJ;H_&$MN##!`2@9r?40c(p{3wIEH7np>-qgFtEU%p33w?0c zSUD4C;r`Yx-P@fG^&8EuvsLxPK;z;%vJW3>w!fuvCJXn&sJa-Mn|dx;;ddx8Q7AWy z4>kt@eHcmoALGTQ!J53H0IbTA8==^}HrZ*rQEal>cf5A99Pwa@-S!xP=`bo+#YJXoQ?oJU`lQW$_~i(G$g5QpKnQ4I&nx#e zcg_b9-38r<+nIH^lQutM)RHl7Vk1uKvtLha6W2)lOnc4fX{x0I%pS~Ff$R8ykUgY` zG8)WM&?j6Alzr&Y_L^!p)o_!Re6l!@C;S;4L)LDKb&Ko>7jxG zX|mC^C^@jviGs@vvGkJYMAi-P?loTMggrgX#jC?%@}qjbBBu3 zV#U&M#>}%yNN9GHyv2jpUJ0JS?>GSTYW91}QC?Z@w77oID0c=I6{w9n3kmvOQGNHn z$qyN)2t&O%(LeITGtl=0v6SZb31V^(Ivj8+`?&k2c@VM4dIqv!v|of3F!KSGs^4vL zzXf8X{6-*0{D(R7)~j)fiTTE-vD)5T!OZP7eu~WWbQTf**4h`>VKfr(hYc|lgg2{( z2CVT!?XHB_S-uF>vbvXMt#jxxsK>FTtihF^7H3)Io#7e<9UN8WU*K~A;kiTm8=Od< z+XsAlLTde44@;pSVLX`DomN?09WXiw?WJEbfmaxc8iJWUYSDTen@bK~eB|<7os@=R zZsasn8(g|(qS#5@NaWrmNY2h`nsH84jC$9NVBs0`aWp1UJdlroZ{pG7B?E&i<$-PN#sLlZ__@-Wo*&l5 zx{$)`D88aD2TO9Pr=P)Zk12W2K)mZE3kFj~g6R0|yoO{d=XOzH!@|8zeWed4PXh{V z9fJUqm)cRCu8KGQ=I`h-B9x1WdZL(emYXyl@C!c^i`C&pqGRG#2hFdOIx_|W; zi7xUO5$Tjv6bfhO4geLE*x41V7tB}JxCGK^Wkf1T=<4D@!3UrR16mnCy@K)1(!f$U zP`Bux%UB5xVI2LkJe|jP`JUYBMKOF~mq%@xRY?twwS^wO2-MPad6JN7>Z};R%#U;a zSdGMX*4WJVL;Asjc}MO~;SJZ8&4etbWXxBpLqdxz;O}kAAWfO$P)SO*wpOMWg2mFW z7<`3HZ;DXx6V@6(xepa%nO_Q1f3pVR9lH|%-y5LW<^jv5A6hzqH&`1Yq0@6xd7YnU z9x8OUK_{jZ><3OKYr8bAH+L5?IAqdP=^|~hP|xGNb=w|YyQ{P10ohe;3Jft1SKq%E zgzjN-2Zx>x6&EyRf-r~vlOHu6*OIfQdC zS&8VUqqjIoALmjF7-l3PXCO*7V`J0}$Ea~)>3)DHUhDk;jHs1R@oeU+$+x-d!tw23 zWur2vH6Of9?Y zW+YuSb%DpSoC^)09VgP&UUWTlLmq532>9u-lH}XZ!zu=Z3+$FQ;wmz>o8Sily7CH4 zn(}!}GzTagD)Or;DdSt<0&v)J#Z$dF&wM>SvKD*$a~Eg*z~n6q0yw&NK`A6Jh;-uu z(eL`v?*yYP6sYvCvnf1me{ayZ$iZ!kk0}cilsVl=iF<8k21JZ32f;xjg>;IfJ&KE% zPucf`AMs@S;ZEJihfTcoWqtSl{@~`V_@GGqLkrE9yI10O*b`aaSurKq1Q=-?EuVoT zfRIfsO7X=Lz}P*6Bq;ZD`iSwTU6b3TnS+_mLTh;AO&4sRpjsE(n^hF^<-;|!4EtP9 z8gF(Z8%xl}?Q$_^pum9G^QViYgh$i*h2r2qtxr}`a`gDS`Dh_H=ctDGWZNWU!l2%esPR!fp;P8+%yuHWr+1-^;&6^D^ zIT>(jxe0qWw@XVI3oX*UTdbLUY|C&h1H}fzuv5h>R%{&vNXhmLgHRb$v&sRd6VYD} z+%C&R7%HtP_%!cR14H^~wZy?8Lw#73bJE}etNFV*``%>M*Zc?2E91{-REgmHVJ?IU z47~fC@{)Bjlj+gEA)|ckU1mMPOvEyp$f~bjce0h{u;jp)O>k0$%dJ^7S^zV<%eSWm|;e1uY<)?esFOSGgBlgMECV0{1tJOKen zr&*P~mOw7lqb@UfelmlFE^hjK9*iMm>ODB^oAd;3aX?86O6+?sJtbS^YcZ2}{tiOC z`O72^VyQBQL1#arbO|L~6Udzlul*hpd}ngK_>cPgg^aeG_p5Wz`0Xw9is=byAdNp({s2{dU;u zaY`>2;N(vRW!fNYldLo(%*(;?ZkE~&JZjgfG=`{SKVPyctF1xm+2vR4O3EfXQgTg3 zzsk@_3tTQYCw%mLBXKhO!XV8}8UZGK+Ums7k>a*3BgQ6OsKHMMq?Y7 zaj40Iha8d8DK5+kG(tv!{Xkf1P4#Lv=B@f8x=RYcv-G`&^%uV1&x*!xuiLQIBu;&q zI^wDOt)_7X`cc#f_*v9otS3awXZ;eia{dfjtyzJp28qDzEt|B!X)z-BL#)La=zzQe zYhB&bTLt-LGawiUojd-PBN@)$a4f@7mX#!rGvdZMmqQ04FaijSf6cxuE|iqYZogqV z=3iRvW#q26lNgrgy#odGl6urN3PPj9BwmZ2&%e!N1WrQa`{yn(x`}X0%(?B%FD2Kq zW(%DNkgdc<1xan#KSeBzF5J1nYWf~MDb-zkSTLIFZef-430^cEI?K@t)f8VE!mqED zC`>UvemPND80xqL8=q=dL&L_+#`VjNk3%*y?d?_%yA8(Z zXRDIN$>D6=#xRAdQf0>C`U&cJ>$k(*fhL3Y8dA>nUk@E6v$6!?&BQrt3t1nFFsgei zPMZMfE=aB?zuZ-Qq0F0Y{CN%c(c6=fR_VnG*piGtD^lR|RzUT*8C|!F1zwr-Z9NfL zC86My5?zz14`mg z-4gU2HG9o72`TFCFvjUX>A58q8)e53u)h zVK#){-49at)!ZF!7l~_GeeYL&1gUDVOt1ckEb#@r2175#ZbA88$?aQz0!j%jYE=@> zHg+!7>yKw302EuXRZ5ES$~Sh^kgI%Wm(*`+QpE0F0n7D1a8r#2JU6EGl>*IHi3vpO zBf73Pu-X;QyYFctw%(VP+_M<2Is?Hlc(`f`%CFOWxM?47=TvbKq$+9@=i2-i6Yh5p zIzjt#W=fq4kBmGE1{FyY&p{(rcF!9mZ@)kr($yxW4^w~u81F+|7wGv#u-vh}rGj?6 z@%8aJjaQp#SMnuq<&DlS!BnZ+rUA|s)K4d@MS8C%3q3iENMC!Z&jFs@(qIcqnIJ-W z?+?Su(~>0!69mTU*o}hQGi~+T#2~nsiXB!9rkKt81fP^@R8~Qjp@!Rgw2pypWk{xd z$!Xk)tER#0ULMS#WiZY{a1vj)P5L_*Ij3e1J|H0{^HA=a8S>yMaD6_d_U_q*%85La zB2gYb@F1#*mmJw=xp7aQi@q=z?cU-Kb}f2^@<{R+ENe zGffHSNEz4637y?O-kO8J8ivGON;fSeZbrCpx?UnVvg3$*D8q02YI2^NL#)uRy~#@m zg_}Ve$K^Yw;j;*i1`pZwj%r47-&3ot9{=!|MXTd6iQMNLNwIC!8Ln4Its+z-HE>*AUVCbbAs;eD<&LYmR_&92ZN9RC;l_RHtmoBhda256w0E?P4L3vU zGsT{AKYLh;CN7XEc>gi(@*m|o|BH_Q#gN@u_ZM;elW~~iK9$y;@6$Q{SwE)ihv7PG zJzo07zPZ1O`R6IByG)cbV{%=!jRTeW9^7T!`w(NV)GPhsS8HZYC7V(2J<}jY1{dN3 zli$4mD%+y9Wn%sUqm}9EvR@!!Uh$!-*W=bbp_8eS(t?ghp=M$nQ#+BF@t61U$MDBp z%mWb@k!~)~Ldr&77r2s2|KcU$IvP{9bQ@jArFl!Tsf4H~9|_{|w)Dg)p5A36tI&YF zvE}0j@`Mrs0h4#g&nYW6y(FswM+F}ig}H1U(YX|z5I#a2>kE5IIiP}OJoEb=RnRF{Zq&NP?L${L+)a0`3=b@i(@Ft8E&54Mn(n)P+Y1%e zDvnC*Nb&eej;Gk;^NdC2bwbpBm)Kg8?IkWRsI;}nj@M&H5rjK_MA926g;uAP__bsz zrJ1hRNz~gWLj*$glvRG;I&OF2#a@f=;ttJt`|*oYaP;yAI%;!Mf2017xE{T7?y0t; zPrdC{>?})bx&>%JzQn<(WNC@2=SBR_9ymO?>p~a>p>KPv>+#dd z0K7u)ZpyX6pqIYBk`z4LX<4_(5_EVv)pCFgK;A)?m`mu5Hf10Ppp~SBCup9Bc3z>< zHGrD+0qTPXYCqKn6KKFI;flx)-8BNxT?6Wa2$A1( z*R0n7^?_&!f&yqFppWy_5+<_?V6w#_mAk@&q0z0sY`(bzB$RqT>@5G?!L?*x%Nd9e zBR02zccNJ9N2j)}Ar>re?4As1c)bM)FxcD}4=Gi+dMlOV@^lyl!kaccg2Gj&p)@UQ zKh6u8V}qiQsj-3B4PMjO4p64vZ=w$6AihOT&7>wQR8d_UilMO$`f_s{X~lQ|_fl#) zG%vGG{oZ$4SdFhCiJ`=2RcyYtBx%=R=&7Pp#kb=b2wpNra&%Ux7^}s-8Yq!;P4Au* zBD0q989HSjU{-}**5gjOK}5f$n1+cS-Dz)!TPuJgB=V;(eF;~+#b)I003-2 zyup+3`EP}H{~cccL!B*3xv1K-ouKCTC%RGy01TP!dbyUu1>#3=z-1uihagAjK4qZQ z_bq?GKvwuYonH@NBg^w@F+rW@4M@i*QL7sVP~!lII}i)=6vz?5skAf?$tOJkkSQ|$ zhwGsX;CcwOw)h(V)Ag`syArEn|HJhVuy#%adRwsnv^`X}z$h#`+{c0eB)jl@_`e&4 z{$~*E|IX+BF(;ZqOc7A;S|?2*2rYM>kUrG!hdURDb4X3hw_YIk!EpnNYDIlIK42O` zt|a52smSnw36=Ryhu z1Ts&gd<&Y!8y~hIeN+Rki6=(z-NY}vF5Ab~OBv|i0@fDN;b>uJE{x<+(qq2G2WnG# zBFp|dHEB_Uca(=S3b*2R2#19tbTlOar&S6xkCIah@6qPJAw=w0qTHR1Yb$>}#IQ=! zoKeoAn=?>03NCZu$%;5nE3G;&>bc%kQek1t|WYa*Gl61V`2F}xRU(4SE~QG>;Dm`Y3Tc7 zBky2-&l6{@9=BYL&k%KYh;~QWZZC)845U^bxbk>%XOjnqJRspkD(FJkEb+@`xjkZz z1_yMM7AoxZmIpmv{jA(9xH4Hba^5)8H-EYA!Q2IWdwnL#Nbv;BO3Laro8!&+yz$W% zcV^#tS~YuaT=0&GbYJ)r*XaXM;VpzMS{KEr*}nhiLi2 z5w?FXDfyOy zmKVMx=%jkzUZsTNMf6to0LTISgvFN9?K!Cm-><)In98~b!d zIz*(;cqW9bZ`6DP)7Xd8G{clWUqj2NqMGBK(ps_~k>)PP<&8IFt(KXM4x1P&aa&N0 z>1G(e{d#213CXryF%$AY%pMGB1h8s7th>3`9TUiL2`RI)d2eLFO=cb5f~f5jv}Z<_ z!X3LB5u?P^2MKkiQMZ7l1ckda9{XH^Wi=Eq8mumQXqffzC^q6TTAQ+fk4U$Ki;V6%SWu2n=R$jB~)-P zN4mYIbggWp`0NCSjJR$Itx0h{(Q-U^N?d($HyGoe=efA4rgURdgKznHNcJm9j(n44 zFE&$YnA*(~*}?swPF}()bLUZhAI?Dfsl)eCw8X2a>f)$)n#Aoj-R&ViNkgaX_SBJ8 zmMih<18SM`hb2MEa3k$|0x_BfS9fr%j!L@q1!m0YIx|;C!PP*Mo2Sp2^t(suk{1e^ za_b}}`jv0qk?f!ey^|-v(vpGFZ)^{$6_GFLM)I}Vm3u0BY6(n!o6<1Ij1*vFudE1q z&i^R$UC@%#^>2!@=GT#Yql*F|dvL)ajgrA~Rlv z^Pc;b?Z-4HB{`9oJ%lkWLdVcSTny7rgv-iHjK_>`!3a9$U@F>Fnh&g|OIlmbgA#W7 z1EHBYKZ2ucKx&%)yU^$dMlR9iTfd{@!3YqylmH&m-iodH2&L!283^cgA&wRC`Y+Ro zwho!swIuxJjX)Ge{mGI3I5DCgxudNZc-uLKhn617A@OGS^HRxlDDR7?rfJKrQqir0 zhX8wHzg|I@k7N-)es=3<19-S!0OgXF8jM6X1uXzQEVSN79MU-U1O+Nj4WfuFO`Xyv6_B;>?vKAb3FYOS%{bgTzC+ZpI zpcG(}{k&Nwten&NUv}=f)m=RUB@LRRiOxV6ugc~0WWbr`*PUS^O;fw00No5H8PF>X zo>Dm-;dYSzva@FqU4wNuL`(ymC)Dv&S}5XjmG>|Ee*gK6_q6^T64ddZL-OaZt|-`Wi00pOOAg;+{X!1q4H1+rs5+YbMB z;N2gcy}mmreOHoxFI<3NI^Rpjp-BLeo74={7k(Uq^N&HddcQ)q0NLXIy3YFlhkH2d z!Q=zgDJ}DR?)kjpPC7PZzmdbadD*o30O_zYH&C&<`!ynCF*1->7QjbymO%hty!?xk z>?O5FE=qup6;Ro_6yECuRiG9G149=69aZ~RC8+;TRGR;=o7can!u>CNU)Hl;Ox_O^ z{z+)~US@_AHxCg&31%1$1^7uZfS_E*sEiDt_P=209|e9Spqy2e(7*f-02FckH@??> V?!5T(`~T1TZvUQVi1lpbe*g=D|etME9Yh(S^f_i9ezyL_?uV ze}RABJJwX&l!&7@$n_@01n2(`Q8ifiR0`KiCGb?^i$o7yQOL zG<4iYSH_;mA38AS&LQ*ax^_EH5rP&Wnd9T{x(-@k0`Mu71}^TWUdJb&Y-k2PAwN_E zM^Gk8P!wJSv$w=>a%%*dp}NRa>u;*m2Hmxa7MAgXQGYD?BCWcZV+;X}J%hqT;*4?8 zolU~w&n28fgqJg6VkATAirW3tPd@JLMJ$^GcF5cHP~0)6i$Qohe=g0jZPT5Z^KD4r z$D7ij7Q@J(*C4eXye;n!^zzbyUlG8>8DevLgiDYreMte#8dm=5*x`+p{v7s3ezZW% zkaLt=&(-DO6AG`?BdRZz>QpLC$9%!KGfOp+_bItgfaSB zBcB;N7VY#K z7zUn89dMnGXua&YI`O%pg@9|J!l((sYhrzUWAB?=+MI>=q8ud(CJ^n9PYh9pJG%B| z+82$+lhRNB3|5r%8%_!~4-+kfnBuFOWHGSG@5px|+xMN@8gmacG459P>X5JcB#8~p z8rrnv%epq0!Dz4?`;7ttthqiL?lv(%#^gsVj{F-kaWt|J`34%o0N6F=vv&}wuw#AC zFgee|8E0RA$h!(PNbeCZrIFLbcw-FX`~bfvV|!=fmCkI9!rgkV$cI`bVw@J53h`+P z@nLd4ixY3G?6LVcx=SBDRU2BWy& zX59kBDuIdx#AS{WT5qN{rJCXH}d;$r2aVsz9^e_oEM5173etfGB@O8Z) zj@lx6xx>x;E={{+zTC7VVAdy;WvY>7?r%pmoIgy#y&;SR3xpP>&ro5~=Nj%F?Ir;G z$tm`n;y#Lhr%F6h?Y%F(0)|R`bb2aymBa{hvj4o=ZS`^oNbg3w<6(kWb8Hl%0Vp5Z z{`3c1h2gQ4NCrdv42iENPS^np<%5cfEbh-04K>*zs%FBhHEz#@IRbSlL_-ZL(@9%_ zWeJtq>0E($1dX(Y$^|3u=decFfMDHyJq4fPPk4rPMFJ-*yaxx#{GJ|-w+H%MXigFp zJ+g-wUJ^Gpbc+(ibuLh^nkpT$|8ngkZ=pmo=07p zk>pdfOLSB;ASN^Vk-F(EZ-5K69y>9rKUo#}hoIPP&JXa+y1_o0BZ2(hK?v92%_0l*jDp^7RG5 zKc@BruX?X=AM76ZA3UsrZs4pk>J&X9ofDi}ZzztjdEOH65=4%Prt7C8qyPpGBF)J{X@}E%DZRC4n@U zV`_K0=UYp=ez({B87GzvAkTVWwW&6upFXy>4X6z8aH@ulFMq zBdsGABT?cz;`n4S6T&$>IWpp>UxMES&pE;0jpxU`YzK*eS z#mZ|o$h^C5uuk1nH?8wr4{_JAbIU8w{p}5ki-k3(?$mYuzDL+otkZFUHUaxgo=iqv%~jb| zr?%O7m?PI4(i<~DKi$Gr{B{u_(UaE`;`8mp>$^4FXzU8IwSDSfrEDclasD?o$Xl@1 z2uE=G&_*!NZ>P~LF-K6!kb$WB7^H9JaW4Wkdj_|Uwp!qv5EFt4;k^2r;xv^Vm06U{l~?kD@)#A4aX9UlO6+zgWv9r^BKC8y z;;%~gTQ|G=%W+qe*VC0!?5zB{1I#eSWZBZc3Z9>lr%OFaJ+id{#L#jn{gbp2+7@lDWYYZ3%reJ)nCM}S`r!ND|;tjF2u}O_ejd%{L z+r8UX!-wMvqpR9Nj05ys)IXDUq%^5CWivP$wRcGA5}ahuGpo#{qxdx1KKfEqQsW{b zt*t+|Oe)>CUI3L8l|D{97SVjTm77YXOm_x0U0wxFWxkbo`^pEIN%D1qWy*Y~CHdCG z&e$p?Vq`33nWf)&?1?+wfo#`0QzAWy^RynlK6abJrcLI#%&hJHsqvBsNObRIRpeaM za`k`$E@-Lc1Bj+K)!b{e9qj@bbyZbwTW@1-XJWx)r9V$R_YV<0Vw(W0H8-jayOlST z_a`le{gSM7%j#QP@4GP#RHw@gOX)T5jeq8TG@)&w8z2(W^iSFE4#G`R1J5|jcqRnpjh@T&E4>NVcj$sUcW&$Z;f zW_{dEDb3d$t_QAAF3(i*>v>p2*vO3{R};vXPiPof&5nIZ$94%kHZO4~U93rMZ1zN% z%UQZSN*d8EJC0actcq$aw{Bm4ae~Ex9Xg14*uUmS+6ap5tLeM(&q1kUgJvVRbLuHy zL{=yG&SUB7I*4`6_vS> z#^cU&c9q5YVuGAulxfAa>rnR6a(fTi?)K{ZZM2~D#qTt*FC2)Sx*$C zn5z7&EUg*WqxMt@hQ>^~Mdc0Mn;e+$1TkBr_YLB1oyw7dT z-36Ox&lQimMC1Yu&x&Vf_hh{}3h9?bQ$(NmDm|4ir#JVr%0kM*$NK~iJsCY#X0;!J zSBMUExZ37kO$IV|J^HR4+v3}gyleMr2M?`mT2^YV`fgV|G|%czwdXzJZWjeB1k)bA zKAcOfPAlXpBxI%waC(Kl*cY^aYuD{dx`d5{z_B!S<^U_N0~b<&^sz(BAnGeV^@Q{* zJS~ERd!j07!$uB40duPOKrq`l3U=f>3S`_u1{ZQtQ9uAMEZ9|?3L#yb5*Zcq=OpZU ze0iDO0gFxnyQ4onJ=I)YeSNp0RGA9Krl7RS{!uu<#XnP6W$$~XE#sZ|^zDyw`=>hC z?{F<0_0R2KQbQrBGjNF(pqL}TNKMLEP7aI~l!gO?0fzyD1f{^iAV5Fpf26@dX${2(Ge|;oDUl8>l{}A6G{!;>K?HlBO(vW1oilUz> z2ZH|KZ6(zmz`zhOetp5gQqpk1z#tmTRMZ^RtVNl=PRNKR^H0)5z8AFGBeWWRF$P4=&P{aYO0FJ?T7X0Aq-YNBRVM%E4>)dX1BxHex4y^+JeH2hEb z-{1YcyrQX%qYcQ#_GSiB){aK@AmTryvHT(J|1R-&Udl!eHkMAmRQ+ge<|yzV27i0~ z2NfUSmv4Xb^}id^zutmck^ll9;LlbmfH0jVJp~3P1STc=Ud0vsC>_>QMQpZ@2wfUI zRtSOoDqzLqw3WIwr;r*!@?+)aM%AYDQm!^<02>TNTUzcZi)mw;07aS#=I z2AS$k27<2?AOhplTVG8DAn_*gHoUfd9(Kfi56>qHF%iQI$Ad;MRt0DBaNJ$upP2Vg z^McDi{<64tI9RyN(cDEuFQ)>)WmrTvL5PR6<2m-x0NKFjjFW!RKQ7HZ*XhIO8fL+E|-?4A?3DWyO=sC56WJ@Bei06CS7Xg`1tbK3S+7608Z9u%Vr1deNT4@5~@Adst z72j8MU$#s?bNWRr1})l+#kJX$&T^T=9Qo2693D$J4y&aL-HjqErN4EZ-#f@4Ty7DV z$&3qc#Ve}#8zLEK6N$w-hVz~{x%24{1bL)!RL_1te$cUq{p?Xt75Qb^e|E(`_z~(s zm{E2l7Zuc7FZY!sU)nv5sJ6VW92Tk-wXB&h@4&N}|G=6uk?k15Ebax^MFmOV6sT(d zKdeJe6>SWWMq_+i)_QlAGeM27h@{=*9DTjAvAG$;tHAgM=Pp|mkJA}lKAlHox2T| zOg^pv@yO|}uZvl6FCFnZnjd1@_toM=O`YUbMLR8&-454-kPh-9_Y76Q_1o$$FW zugY!SXZY-azl#*oKwCTiVCe~A-QPFpji3H{S*hu#GCSe$4b$Gcv{GSw_vZ8z02`4o z12w|V-0zXlZ#Nf0*~V%BK=*3@!8LDU;;R@y(( zSaN%!eJT?tArU}MW;O1J`-qq=b-nTWZDHmzGiSF0){TX2UmexX@dbtUE-JP!P7Zv6R8-!sxa|^@Xf>jH+#Ge*SuJjPF4UOKH9Amv zdU~RwqDIrx$qz>!8hcw4(d4z$j0+&IdhWomAGEsJ5Gjl&bmYkTJObzPiqFo6Upi3W z`%yCcPGvX^wzK8nc$^63$KFMEk5j!v9uquItXWp5gL5oaF6_2-h)QYLS;6o=#H#n( zOY4rr=ksm+kd$M&y>XFObX!7lyUO(v2Ygs1{#N>*`Rwc#t|B27gP-o%ZI4f0J51<$ z1L$h>Q_r<`xo`f5q-V`KPE+DAq%I%|HeOAg=%W`3Q zUaj7k_4{lgx#!W8Ef?=&P1@|&a;lAi7z1jBAR4K4N}Y=b$pDEhqt2(i8jdI7cv|f@ z>eWs24>ETN#dkZ0@M;f-wD-ET`UH`L{FGV_+ZPz;7nVQVzC2mthhYMs6cmaTa$Bs; z0)5L-l6w32i&aZ=1a=BD!NUjd3JnK0aF{+v(>EKH)pBdhvg|)lgm78>T)6U$w_-8U zMQRU1%k-2RcD?URdT{c@SBIr^wunn~kWOA1($<~A@Kpf~m5fcr#fT3rOBlmRrNTm= z1-{%nlV_Md(I?VtP#*8PK4lGKnYD0e{S1pZo8KkUUz`#A5P_1^NvipHb9}xTC8$4{ zEA^GfiI!3!LstK@z#Ad~d@A|0=!+xRrF^zyZt5EVPzM`cf=jVPX8`tdtsp|{)$r&aI}^%aJ*jdjesYL54C7 zxh<%*-+zL?oR`H!(x*NggM}1p9gP`_wE29z^=q=-Y)p6m`H_S6`N5jNT%}h%1AG*U z;L{!hzJUGoj!DMh+-6?{-rl(|r>KO4^c|<}tB>(0Ugt0sUXzoJl>U7;Q`|wF-fg0#{&w?@N+GSUO#AU( zWuxE?=Ximt`pli(Z5bq&-BWz76hi$_bLvO@egjAxtWfLKw)CUSXRa@se3m9dEw&^$ z#|yW8KTuXW7TEEutTyA|&_z~pS-|S8SHB_Q$z;0@3UgJwQh!%14tUo-64yXNqIYN7 zgBlQ|C6%bUl6#J*tLeNNnH*v~in}r~?tHvNw=Ncr)z{J(Zd#{}j-EmM|&o7OI0mQEhE)7l^|_NO%=Cs{(InRU{9((2xoFsDViUU96Zg z;Xnjx#cw{j+fDXVD9Ff(MWqD_nL)+Hbka$Ta_x%o_0Q(rMDEQlr+vPVuv^{bhJ&%w z`S!LhE(!@8Qbt!|@O*wycQ1O?4-s@O-!$TsUCV4>&BTs_KE`l%5aA`B3XQraL?;to z%xNPdi<|`xU(hN0`nhd61d6e|bTzqcVvS|A38CoDuBUe6xm`TU;J!@qxa^Qtd3X#x zW7+Q`1l|wsq9Foz{TRErb6797uKguAT%_Vi{4w}imTWI~7}5mszU&nq4x|bud3H)e zdHuE~=`axW$-_-V7z-3#yGWoGU2cdVb*mzQ;K*tT!HYud#f26ZV$Q=l&8Xw(MSOS^~}T?M%2@T-)wxj)pCtz1z*Q z*0xhw{dFIiRZg3gKBcM*Q#Az0)3}r+7ae1G5U1%BdMTMX`gl zc1GS+8Z9e%zHY+0W*cE>YQcNL0rH8gmM^GilK|m2={ns#=d3@zJ0WV~u~N#Y+X0iAa+1XIB7yfN^ql{vfzWUZ+da7%4 zh!fFlO!@Kz8I>s8aB5VEsFzpaX-2_|irN)?+Ya!BTS~D_>iGbwrOHHNP`Q`Ws$n4jB|_*s zyzLG|)!j`uN?eSfw@!^~HjNh?ch2Wdu$J2wya5G*(`_Ii+p0NfPs9;Iqu#A+MiJ{E z<6r?J&Koxvivc&sA?arN(6ZC}vB!~dOenv2VlAE5R!9hJD3JjXYvS$`&W&c1BTY~X zI}{Qw2XWjk=~rGCM$ix!JTCAk3&k;ZxHTBZQhNPxeORd7%#qwr*qfva44u{SKpN-2 zP20L02DGmombYUK^VW5ET#j-oRqBg*o^`^W-Q3KKz0{ZIQ$7Ju*K|)j%|NFEkniCT z;e%254J$0>vMIm+Eb{r1TmqP3ICRz@>q!{UWTGn5iuCaY+VD*kFz{7-tWEYRKHdG) zT513ys%x>VEC0Z(Ih{wnPEkqHeaZK#M=i5fC+E8ohSGVw<90`F46P&@4@i~3x)*Md zL!s36s1@43=*@l7y!y=j94rRch!gpBFI9hG`EXR8T5bCL3Q8&$@LRNa7lp>O*+lkU zZ|`=BLn|*Cp)AC|z(F`W@Fzn9F=6rm%DXf)mrFidC-{vV|Me|auy;$+sAy!Z5ri9rK%uamyzH8Rv6x$bc%yjjvzSY!&Db;@ z{S^WXvMcPA3BAa%`Ns;oMf?Qms7U~%XBJVp)j>Q^Tp2us zvaW2iW?RhEvzJA*@@7N0j}zaLN{DYBKx_=t+U=02K9V*AZf?HSf7iG6j|?Uo&#YgJ_4J}>qsF~=A> z(x#c$dnziE_-G`2vc2GQ)BE#uvTCMl8!is|q12qZZlH5Il!~)v-4jXT*OnJP-CG*L z(GCaxCXyr%?Yk}e_gVUG6}E!{RU4X&ec}pEKxp5XQ5e&1*XE?YCDS9r7~%@bY%t;Nc`;auZI@PoRS%^)FO* z$RXmpb>&k$mL6MO)if1RQJgvlKSeeo2`+OAn+ywS(k1vltOs7Q67jV3foXOJ1_uuZ zKLsLUGZ~NIv@G2kp)Eb!o&vfwLeVJ(Xl)RlFKj=UGntIxb60irbuAPs+@3`2PZh+GYWo3~L*xThO|hicCMY_HE{+b^ONU&@f>552 zs|)CRUzR0$4(N-Uimfj$GYlI(8FkcnNV6Yh3CF&wJx80Eo;Lj4Rw9PX)9g(UOYQH^=^i-dW zFGTe@4I0M^=hJbym>jfyOB;i78j;N>ar6Eq`$dhA(7NFqxD;Odn?iLB}w&! z&tI*|o^C%Gtx?+)i5?xROnmj5chyT1u0Mtz=+pt>?3*3oMtU^rZopk(dT1b5T`tqO zU$e_)O)HefV<~y*;m3fnOTDQ+hB|~qI^D3Iu*^N!=|w|=K4I(%yKZN#b|54+BTSA^ z8IL|qKWjQrlOIQ)K#+>cY9Krc?foj}_kZ?v8Rx|&Wi}{+z{R&F1c{HH-)2&|j z%)H8u>J`x)x_o6X8oz}=s~`Hdmd3hSbfJ~H6*JQq7{sJn6IctkAOKqI?09-dI9aaKH%$ccV3{x<>kh% zTBhbtV$&YW<&ME(Z?pR~ZeK(?9MQP`KqehgQ9b0@Lh=b=h5V$9QdAd|Mi&s&tcGEBeE#1*jQHiZK#+Is#WagJT zhlgc)AO!^lEmzyLFE%5HT@fr++q{gV>8PZOIivzXOT%0Ph^5>6jA5}ULEU#Vkjt?A zp%$M=nO~|K@3yW_D-Gz%f4-k0@bg=bWye?=DB;^h3Du11hIqdZJIaB1@y#o*Wlw{hXhD@G1p0X>yW!QSM@&~d$klzU zS!zlIBJ&0RufMj=u6ch$Bx9&<|%QQeu}6^w;=VrsiU?u5~NXa>Rk*J{?c!?at}AdoztuYPeOfvnEeb$Oj@* z2J^{v$tIRJhf8@#`7dlTFZXE#{T_1$iXT?Owu{fTZh_PvhZY!apR@eWDBo2C1P011 zZw&I#W!f-Yd7fxjL0E>^i)l{c0>x0pED(XbCkCMyGIlQvCJUfBnj!f4OF?W^by+Vv zHwpp|okYfVf8?Xvt1n=!Cs~d~b^W}5%*y0!tRl%2*Fhk3>Kn;zmc8NnJJ8YHb(h71 z)A4jF$890~1Og^<53h}Pz_IsHmOJ?@p7SKGQ~OJkA4k7d#HzQh#PHb`shusCm8)K; zQ$EUaF&~l)KSU7+bV6|t9^(_+HLs)P>l^nem^Th488Ir8=!FI-W(rZ~W#F0(XH5_?&n|t%8XHh31o5uPkPlzV8p1PYLzw;EnAV zI7b(E*q4vAom0ZSj^>yjSVGVcIj}bDw}&W{WKBjB8B#;+DVM*!_h-`Uf&8lyG*J`Dw{X|Cxu~;Q`$mDiK`u3hg(OIjLsz9p0h2+O@`KY4cxaieJXi#cxx}Y^;>g)#gP2iJ6kW@P zA!oH+OEX^?(r;n&b-%ze@pvO6Fu$ELF9w!*h%0eq$E?^mE`c!NuRYi^HB`xOyJS=; z$T)A^FaXmd!MnJVb2J%9bfy90IiBtr!}05E8`f$0AKZh&!oR_?WU!0sA*Z4F`uUB; zRa|h()#EW7cAPtCnX2L3;A;eR2SI3o@7j@Q zrnL(1tCsTl`hJgHO)s`f`{A z&+D8!DTX&naBM27pAYF~a+@icWx(v-Ek4ug`N_*@f$|ZwRJ-=bJJ&NUu@RrZ#04P8gUXshybRw7%)elqwU>15bz z-#1;3mEW9rntlnW&io0xsZ{bUN;al0YIiT~k$-p8fDr3)&M0SD5AcJYw0k9YlcFno ze`VbcRnzW*g-@uVht=-t?hKARg5%XVc?Tj>fI!sz#U(zx{m6K#!H)lJju?x9=_nZ1 zw(H3)XycdE2kZOQ%}w^Q^@HB?0s&jOH`Mo!<)ny)_Bt(2r_J3DSqiHeY)%dwrM;>l z^lD2ddy*&`+GDBdMS$_2JGztzShUnHPrjIFXf$159<~KLc!4ev=hx>64y;xQv)-(B zuF+$5XaZ(bNk_NWQ zcXL)S5+-UAt}Qm#pZhD_?gcc6x>ydjPxpE>b@tp{jT3a=<>ZuTH_eHr&BiP~_k$1m zuci_x9s`0sXNSXE%QJpEZd+@YBPK(dcJOG_U+%=IVsj8HMQ1}AHzUxu>4}vT9aldm zXX;t*I_7%FV)F&Ak&_UwJ9Du#M2pD>d7v=6y$3osJL7kjBXWj^MAM-lYUfFrY5*Y8 zl3Y00EOp>tIW3tUZV8056Nt>G3x%=tKGI~++25n&kePnp1$wf0zG-{Mi{EJfIQX@c zOU{hoN<)FoY!X!|W^-*jU3=pq{QApRAyt=|sN%khQBl{*{#4iOk5=^R9CGvtk%Zh* zypG7R4v}Q~!R#e9u^~5THnB3`N4*9z&dFvlb0^xc@Cts@5zoj(Jo1R=u%tN-;<$%c z9a)h5bDCXl2s>rzuoG2IkZy^`my@V$W~z|wj4oP4Ql_{1p|+~L^QoD^a@t4PdG|$b zC#$U{L|yvzlMXJ>Z(iFguezP_pBy}LWY5LbxV($tY-g?pEZF23Ls^Vu$cyp9WBDix zR6}07f%Lm}0=F^z9;Qv_73HT3<8zZS!}>>j&&qQs1hjhy*3ldH{4uAil! z-C}0w?ZnA)v&>8jA-;l~!NeEN&ujZtN3I&?MU#1kmr$IXoXO%tK&yqC%47E?gMQ?e z>lw|ebK%dQiIE9-0zkVq15Ka-4(~K}=!4>XCMQs_0E$ooVrRvH!h+@HB8|x&Ipbt8 zcE;o~Ha&NyY!0S;>7?osLt;P@%Z6?rTOMm(7@*q;*fa~yI-vNG`;lOtA|a4(!e+SSU`7-H4vLJJ%|E zvaFCdev+;^!A*;uY=>6}=~K$Y^M{(YclU$x49tFS6w>h?ZaCSF?ceBlm1goa+u@AI zrf|A2&-oqC6Kb0wdBwkVl2(f<+c>=xYK=l|LXM{0cqu;;z11S~z^F~0C zsXQJMA+LKHhba!JmDAXsC=kiizl%z#T~7{uJ8W>l^pImr!s+Xv)a!x49><+pYN)BXS*HqJx`)s4owtXywtCdR(i22fJeK_mhm$GyFQ%b95Id}yYGu7=(tT<5K%SJR zW1VO9 zkEQc&dcQtqUTr+xUreRFKI3rPlY{oFVRTj_w8OC&&L(95B*esEAHS<)q1-Xarm(@k zyu84@c>`s$(}876CjLd}a%XgVHi6&cW?;dNulHj*x@#Kz0KXK98vlb!$A#D-v&kev zqlC>Q+Z3NK_m9)o0!u6#K>HMQHRW@VNV9y5kPBY#Fzh$+=dg>wCzaDg7HFr_Is@DB zov@B<%Li|z3;nivuO+JwijA^BxV?pH3S$MGuv39dlBti+7k6viRTT#P>+=q-YVGD> zC~|HTXe)HV%{_8glm5RQ-M(BxjX1U|2iof$FP7R0T)|x2#|=2s#m>0ptdk+_ur|b# zqD4YsR0Rx2mtwwaje*w8x3nEHhevUt77Uf{OrA2a`}&4ZgKt7K8z(C;>*B#g$Zdh- z@++JzCS5|-ZGvJJ=;FxQ;bBD5qe~X^g5K8P@wk*BfALh!`>q1Awk)xi`3gUVMaH$) z6}*79XOAHVgCSc zHrEm0W&@9%J0$+JYIk&iaf4MHN4Q0yb_ z2gu$v{c3611ukYK7il)nBH}}6dv~%g=WZH2jKPa>sSk_G59*n1<1(0PYu~k7*+-w6 zBk;MsOrN}=%G)2nr4wnxtkWNUqy#^oUt>F1){8&$7!_rbGdOh5HtSVqPnsy#g(3wC zH9s5Yzx0iz(u?-;L}5@g9o4)G5R}uE9}FtxNKY$y(X2HWn=aSYRQ`HsIC*%!jyfQ; z_CZX1hbCPnk-q;@d$rREzwhzXE5K#NYnj8wV`WL~DqI|o@AYUH=eZq?&4fGEamQ|x za*|^Ru+GbKbMOpNyP!cFoAAP^<4v?lTVMh3O$~*R6V};=?h&A zvUYBKzh7EZR8-0EOog6EO5CZ5lMb#A$abGW$MaX~&F`K0om^a!kg(^xYa}5|uYP}anPLG=zVvPR zz1Ly~jb`KHcQC=lbJrnRaQ4uVO9IWaGgkcYcQe&$mf3guy<4Y_IwqqfhZd7|US<71 zj^NzKE^})uM%*>)Y(Jn9xZNa@c>}GtyvtTG7l=F3ot2z&2y`0dpS}zV&e>}S*gwzN zdFdP2P+3HI;i-KY6gq6G4AeEtzx^I%7%#8e zfV2eE$sRh)YwnyXNPs z3G=)e)j!rELI)UYMc(k_#Or-#J?Y-TDloWbQ*6@#npA6Pk6!3&W8H%}d}(|#ae{KA zBcGq|k{{R`JtAE^GMZCgmmR7CBI7svJbGW7_42KETp2DimLBuwEGy@T+U5!jLMiyV~}%#yElyX3fM z_jz^|3CtpDlQMBT8>ueW@4s0-Vwh6mb*jwwc$QAIZ(*fv1_4Yq=1ok^=hF5Km7LX| zMr5{WF$YyHwJlfb@WZhgF+bkF7erOZ-0{ZhIC^b-^OzcV$$qRq%vtxvfxOKQ|7BO# z%GJZNE?d*&NBM%eH@;p>oB%VfMlRE?M@%Dr=JFUz2m1TTa#MPLD2R9CmUItJ8r+QZc}tiN zJhB>MmUv`(H1x)_CgSAJz$^3qSpOL6B53#WJ1CDnb=OZ?~noqtoQ8p5X zeAfG)yFY3kgghUlP~PCo$z&(jP>w$1%VoA^HsDe{qu*&lq?wH!tj_Aq1=~#RAh7n3 zPv6ylgQgUG{UX-zxkR&GsicFeM7j6ERHdEW_@xCu2@ovlh{AGQsuC)fXtPPI-d(vV zKN1dIWkjH$$)NQOH>l+X$@z4JYTdh_Te|BlfW`*vGUJl-HLd3^)d4t8RC62FZTBH) zakqQ@00c^_I4Sp7#>026-!1USYsS;0YtOw#KfzLX{%y158&oVDms|Y%J_!Gqq5(-m zMjnJ@gf_7c3UuUR4dc}w{Ox(3J08(g9G72Q%Ae#g<+v$d z-O4N4r5`_Szof3yG_I5~-eQ~rH{6?53H}5U-G0e`{Og)J44qJ8ay4?SKK|K zt==(W?7lxRdN}gWooLvP>VQPFrKhzEhUam>+H6agWf%%M8F$W4hprA=>-hk18)E^K zBtug$9VUr!$%R{0U5>8%FE|yG-3<}q3py)5ah0Da?;MR%}p&ZIrs` z=4%Th8$66xqsrk4*mBL1m8N|JPHsd+4y~hTV2mqqJwAWDTb?ZX7tHi`5TG=%7YMF~ zjYO1gw(k0Zz1UEL7nfIFXJHlJ;g81D1V5g}YEk>H9d=mC;57-3uL7(;8@(BmPSs$! zj{@gqovH@URP20{shV29Qa_N{RTA5BwKc_=q_&3xYX<~SAhGlJ^V=E#tgO^nAU8%2 z>#g;|MX-`;9&#vrvq;)yei%lZtL#phG~d`$`YoFIa~etUA=3m%0L`>fMs?wHy&=Ro z_2jw-ruzWTvpN=ERiOygd^W?*rb5-5!U9~3h1;-zu|-iel`G)saBa5 z&>k1VLBu&?opZ*Ts*H_+J>D5Q>$n7i0I%^}MFju=s1#WybDl0Y>k8Li;!1-cJO5GO zzaWp3c;GV(D*5s@pSD+vqiVe`AQQ(EE$&VSZzK27o`zx+kjtyh zVZ!f@?e6SQ0zp`&&iQW+w%Jzs<&$;8Vu(rEayY`EWxZADdSE!V|M~IP^P0syq@{d@ z;M)^^;(Y{6MrsN6)wgdR{tmJIYyU5L3?AeUlYsIu?FEC=4F9hJ2Dt3ZgXRow9?RQS zu6G}0V#tifxN~aRuQwfA$o7j(^u2kTu zeXrj8P`Efr6St!OcuCeN|1u-<-%jCUgkp*Qc2h4wnU$sY`H&+6=+4=%H(zZe()Q#= zfnbwu8^mFYD#mEX&yBoh&c(}3MocWIrKN4k(13>yVB|o4m&P){HoL@@_p`S*aN`07 zHa5Kt1oJ)vpofHq_fNE%D1smzJw;ou`bIUT6t>t9PyCLKHmKKA5Yq~;Ged|jgX*pS z)vN#Ipj(MGUxqc=I{L5o4-W(F=gpZ0stXLYOiF9~)J>?;)?e*g`U`f)Jt4Q!~1!fP_Bfe|SC@%eS4OqY}}+D1o9HkYA)n_qcb>*H%iY{w*x}H`6r$ zTp`#kwhx;csGU5LbtHGq=nNq=s?$0$6I{ew)btfbc^?&~|Y9 zWb1&s6(0_G`poU;7Pgyi3J|_}{bFYF?^-v+`5@T3uqYAzlhL1QMVmvVDKk)w{=XpB z)V{nRon2tjum6L%{A-5&>uy1jgb;MYv_TO!2(u-1VBqOdH((WP-_c#C;VR~g z0S)t+g638e548Ww1FkCYhST8pIqv&4E7EH(@P()@uO)2xf3}3*eC9h%8O>bFI{gHa zD=7%|<;*z1*+Ev2eLCeYcmHOAyHgBB#D>=w_8BbNUmiyNKbuOlF_a@x1Di${AZHF1r-;MdZW@eJ0F8sf)u1S7 z=a;|Ch+w+_`zOgiDjP3^i$3sG)s2dr+~<|maDezVAOFT-iz@@uFpt?z){}0@P9xHz z-uA}CBs0pDyzMJb{#CWN&6u3dQ^r(s4b8Khr$Y@2C-6o>!pULFWHR^7=Izt?_EKrd zuchdX1V-@l(IxZC4G^Cyuib52uW!EKzSuUducunUqU-7}Oz?kK(^monv;(a=Gb(KL zUyx8eyf>3BOwEiEKO1))iQ$04I%{vow;5Ghmn--Ld3IYSLzN098}9@o4W48{>O>hl zjZEZ{IL5DBumdS0pC<%HwhjkQt<8>}kH?QM@94Zgoapv$+G5Nqy-<#9b)y&OxKe6G z{bjQMZl<6fpZgum1dy-Q;tH>qr8f{Wg$)F9TV+dwmP=ajh!TCWsuO8_^Mml9byfHE z-r<^~FEnDu{JgrFP9u6`@%ksF3Ps{OzO*qAaKO`(FHN#kzq9Y>PiWAk050zrQtPD# zlJ&He{zb$S!jstXq7No(J3F*a%-1b$msp^KPts3}f(^}@=Uf+!4%p;GWB%6_T(raf z7lX;H!8MzpTL-a>pxXx^R6e);o%FjW(&HR=;}O$ZfF_56>j!={6_)J<(kb}*&8vOl zhQ_9@%mck8(86vYo+j?jj^}09xf(H>X-v??+Ix_bg#}@EEJNZK3>4rkAf4o>E|>hN zTt`Gwk{aRdK-5SwYqI{9>4vD77-Dyen**7JDyOCwH$yebn>XJsVxib0z4s@LprE#r z4vj!ZgWL)(w*Mek&Bc4++X9_fuJ5VM)-q1f2iRHyY;&mS&88_M!sz2Ti3E+7nkfILBloasc16-4GD z@6OlJTE#A2k)W{K6!t^(C$I4NgQ+a9`T&D|c}bikqapPg+sYnp&%43^=D7G1gYQ(c zx0mDMRDG2P4WMfi=c`TEQHC!fuQm;Lac7h-qbYT9w>Pubn^6LC4M2WM5|00ms<(=Y zD{8uSg9HffPH=Y!Zo%E%-Q68RaBJKh0tBaVcXxMhB+$4!hxfDbpUWPjZ+i4zwW?;# z`D{+k-BE0!#L$-~YExNAU7PN zmps196I-aOO;3>X{s^nz+ntv8$NJm>dce)0JWsW5JH&d^TjXR`v&s0O{pIcLuWz>N zO|UB_vHE&?m4wzxK}}~mCI@5NpXL>e(F-z(09Jg8pT@VE{kz$-c*@ENR&#%`n(Q|L zlUYqBm$q*+#kSPt!^$0;USEnM2d3vOr2=44zDslm__G{l0cpgR+)LgGy+A|mKkPT) zD*_Fp-NBqn85LKDy1^qlj1V6W@8Rh@zH}`Du=m7$>!Mqt&857iM*#gqX5Ag&OU~T+ z3Xp(8a4*Mmd!TN+@?Mst6W6whQZ_Ye8K6%PLey;xZfd(L2Q`}`{Olu=>gg+y*NqS- zWYU8hYD~xYt6qw~0$C#*?DJQxk;3DAgZwUs?*ga6_Krd75*^Gvnr$!=rl0@x%+Z?&k*5Nj?)gFO|ZH% zlO*JIgO-f@KKxJlqrd$EiIkIXP=x8TS&AiS92i2L^J=e-4ZLwO=VEm zyFMyQCnZf&ZgwC#U2ium>38{Zb8ugWfQa}rfh^Q)>_{B_-*0C9wqV9)S-rhpAJIO& zy)Wm}LQP4_jB;7LP@8$jQD^I(`Q{bW6!^G zL;SoLFJeW3&99%wK%~(|-R>?~>N$}KPU{UX0ua?36-uB~<-oH)b!6GD!DZrLvij=& zSFHl^8f(P-2FLhUJMBPYiGrKhXTs4t#`qRlwEt83GDimPFNno3VSRq7b4jHG6{c!oL& zk8IFxr7a3qR<{6-l)SUxd|8Jd*-y=QIu9b-O-GSsuuqaoGNvJNJyEQ;mwX7x-I_t z_6O2J(xY^bI&BG)VU( zS4~iQM({4AuBy_de@-3Yu0KMz+RTfy-E)9v^-qZ7{q2@E0%b1m&SIn`p0_+)a z7#veqiDNY#8hiP4dd~KcTeFPj1}2USR@=8Pc^zgrr1RL~|3@MW$jx2-v=W{2)E%x< z9c7J_Uwq~rTyh24aXS1vF1wkBjV786$MD^2Ij!W1(&^lMMjQhOHv0qnxxHQb=5F;FCRW`X;-0*!7{j2^k>GDC}es&}(Bl7Pq7 z)~a%`i@XlhMPnkUO>_GA{(6=+3D=5g@#IQPI{d&B&2SiiqX?Qd_Sl^ZKkMVJzG5HVzv3Bs<594@ zZqbFu2sk#O(U^RKa`?_Pa+snnR-bayY;^mQgo;i`_2xR=RAd4i^#(RF@GnBz|m0kerE^BTU7Q zQ~_$tt{<*>YwZVKg|Fn&sNX%1U_Ejg7IQ!@d@4<(WoOvb7!GR=V{HEOA-csIFN@0F z4+_G0A6fS%@1Ee=e`y>PCWdLeuJ}zp1}xUGmwOL~nU_56`SUm|A204sg^fRoq!$Pu zj@>FVyRp2XUgI~1q2`BQ!)QT=!C##eY*D}`DR2xK4d49S_FE=P_$3J|S=xD>@2TYX z1neuTo_x)>mp}{O!IC@%FRCY|nzhol)fZJ+%|J^KtC+ZiECUA9LFQ|cJAeDce$CKWnew}&rU(9&o!(Kma#^s(g5cU^PecemQ4-@@ zOZ88UiM(#OQfpp^c230vTy89gpeLmY38=^UA?#C_&N&ptCOalobLv+XEW?1iuRfg% zdC(KgA+Wm0=p>Qj%o4aeU{pmD+~&K1D~xomKp2b3Z1U_ZE?c@KOHm;&&6B>qFYR4# zKBhB0z5g~^p@srp1ng7MemM@sq=JXUYil)%RfrG+=GzWstuxR6NDIY(-GimkE)S8P zsVA;rm(A4~Kko?&zQvFJw706{DtMVn5hDh?VRdXYYt~J&Q`B|+A%OHF_Bpt&jhwdl zqTqsD_tL6LTrXyQ{=onB`E}I@&&cxTTI{?-njkJDG-SMU;)=q=is${r*UW$bqAs3}g!%0w=GKA4TKg4H%kSB&#cA)!3 ztyg?|Jc^Eom09#$t+>43)j9O(N)z$q`huv2B94jCwA!8kJY?;+^^%t3(<3%AtRAH86{L*{iCW|&!Nix}s?wq#v)RN08W z=E>m86H2kyPFuyd^)wMnr~-Q`8F2LyYJJ)FT|F-vVhVL1lVeLfFshPBQ7UvZ)_qJA z={9}pkpHV!#NhQ@m8RHawxnyvgCneAs8@<0oVIhErOvQh=j$!i{>VPT-k#OK^XLcX zKea*ip*H|nlT2aDyO=nVv1+k>&&>I)`dD#V35Gu$G6+|`f}#8JXj!5>hyYPom`=(V)A@6ChcwBTZ~Wu z$B?K9eM%0i08fnbj7FY~i$w#b_V-`T`*eqS!Tl%OBFNK8;U7vz$?7s@;pHHU+iw?Q~w6FaKQmeH8Dj1V$ zmgQnf2*Dprq`0A2OdgUwd^BE4tK2=3nx}u^c-9;(A@ZnwyQElM=vrKew%( zOTII-==vwxR9XK2rGlMVl6afXjpF&azONJbo^hdoHvRR(WqZqNVdq;6!2`LxwVw)1 zy5Ntm?mImJRFP*^13cJ&o^Ow13q-g3N0iBx8eQyPh_9>}61X#KiyL49It;W*0h`u2 z&7WSI=CBgi#GX{#6j-^_a*Zm6VPqnmapW=!63X1$KB$qA5h?!d;HB^vj|Rlg)zY3Y zlOn9S=i`hr&-J+Zns%~&5Ty6Ph;0oJL}cWBG(+|SDXnVHD}Ka0;~GHB2f$-5kTw(*#ScH3W%OKz*_u z*nI9!Nk4>MSt=NiJPgLW$BoL~rPgQ;qO`Y_t2S2# z7<}adEnuJ5OHS{<6>E$&Pb*3Di)Jz^K$|rba&nClG7(=B&d1(hRP>kT&+#ppMq8xh z%zP|;v>4raJYW7ee|9+Jn`d7|pN_Hnh7w_Kq_Sm62)glKCtaU7Nw zIvT^JSHkArGX>cfGApX*@SSm;u6sak@d%*$?Bbs^RYs%|5y)gVjyD@`6A$m4ueA+-jD{FEjLPFU!_AYbh$yQ=NOgJH+s zo&#r)o}`_!FAo^>xG~^S&@(=RnLneM8fX5BGt%1jPScO7oP@zy4twMdgURzSf)3N1 z$K%`cQL530|6bxY_>~}&^%d3nzmaaVITO5p^}Bribx-lnJK-<-=cGSH-Ni~)qK6PY zF#o1g==Nmt&~fB)cs+QzB@}^0%&z!~+rsB-BJ~oq0`1vf_p@L_tKBRdj!`JE8_v8O z6H9pBtifprej}nQG@D|m`oo@&-@ne}Fr=7lspEY%n(V}xkJ_IdHjO!i{KN*)?^WQc zkDh2((tY2y{bV^-OVAggVkn@^u12fj(|3OlC3>~LIx^3tzMPtwOzrA>!>F2F zoc2BolED@ne;$iq%Q`+L)1u5hMxnd?wyyQf&x<~5;7+L{HdV!Rbd9H2FWJ+@D%aV1 z$P)^B(f+NFCIR(ADSnvQ)~+?$u8EO0;qKmnR%||*2b}1V63CIu%+@T% zNOTkC2S}*dIoak$8hM=5UWMMeI($`}BGQPU#?ckLgy}!dZZV`_G!F)iRTMhc{Y&xf zG}v8`VpxIR6B~^hixOwnP74D+&=ic|p+Mn;RpP$d^?FTk>-|Kz@K;-(;Yx0E*>Q#D zYUN~NeqI&2ZLZ=PMwz7`t!sT zNhb}Np-F<*{W)X2+UCNrbtz*Q(N1%KChK(>CD38e@8jf5eymSCDdQemKcI25YO60$k@XAUr zr?*x5B;{Hw!Q?U}J(w*t&7xUTCEb0LiRj`R4bu%@*I8>LQAA=ssmdh5@7&)HDu~1v zbq;{un+k+$-tdlbCzMO<9o1`GqLw7JPJ%Ld>$_iaz+)zEFQu8|m|c!SxqyHR{!l${ zSKb)M6DCO+*>;NYBLoD1U1NjorZPWQOG<Po30X{!S=90Csk`#0)unpJ z`_&Cus{M8y4k&CA4dVCu=!2e=6L(wp2D||5ET$NG2&XG8nppx<)$AV*%%awRHmFh6zkq);PxY{z}7 z>&+`ut3=>Ug&>>T2d3Mv5fV!9I0{}}CQ^Jg?c)JMgLz%#Ek6S;qTr~8)R8an_TP3; zgt_d!3b}?P7a%e8Hxn*nt~zQ79cwTGr#aWw;?e<^mtkgdXNm{acI?NJ(4Bx z7OhhT5DH#ik5Q4~Dmt1AThg9UjM?^mdIlvvO<)<)elGiu%g9s1^Zoj3y}@wb2WmmW z@E2BN2iHI3JaVhQ0-btIGB`&s>SuYaRyPn<=G+S8zZ>|wbK5(x5ak8j1O4J}FoB;t zfD(P3ZIRLeKW_U$87#41rsM2eUilV`w()}mytTGVm8^pAUbthaw2T+BDNMrl>rydW zN%HtB^*)PXD|O}s*N2TIXPH6jhhk_|FYJoaIsv1*`Vl8TFxNdDdPZi!=C1G<>4TIA z_)L{?Nz@8`{hRt7lWC}*e7hKy;XMfUF~xZc%P9kyEC#J5BtpvxuI*6^Z2rmQ<*66* zPdr6T<)rXmjbezyDSeVG&C25AvD43H?NckMD${xm*#9S$$+i*dq4y>P4gGf!ie1_f zaDjXdg)&P&4f58oasiF@aG##8NG?`{f?L~ml4!#{8|EUY1Ga^hakJlXMIOQE>L!o`)_cn`(hP7vk;Y7&| zdAFt^R*Y{^#rb?I<)>7ko%ULhf(8-EXya`|srx7v-vUxl74aUU*=FZQTG%M6c34VQ z$~753J0PaIfA_|eUsK1qiUq4ATu!_8fr;bfB?8z-Y7dxM;)lwMK*Y3>kt~6Pv!TH)1KWGBL6L-u8ZK#>D*=VS*or&w^phnn8#!jOun}3|XX->)GxKO}U6Z7{7gziY{XqI{8_nvA%a zgAxiftXlP8#~T)K;hAD5o5~o)@7C#c6Z&k1H&kd-u=n&Ypp8M*eigk+yEM~`!yDav z3`b>Kws)4@P`DJ@GtgL`ddjH^UPhVhTWoTNZpjp}Ia<-7` z!vFeRq!1u2yt5ld`1JRsr)h5o9n=Tk`SsP#Nj3JI9bQBSvbUmrRvvsmSuNL23OVUj zL(eE)c%KA1LV+I1abHh#rwM^~l^PtHQ#`zXD~2%)+I2nKLey0Un3So`ghLu?WoNHF^k8RuDIY$z?x)WYG4-vv&Q)W>ul<|H~b=+15vl;%4mkW!hc%Xzp5Vp&L-~Mp8Cq0c4Aj$KKN93b3FzCFW0QY5Zm1i^2@E;CSv6X5G(Z0`*GRnF-3Q~ zzJLGT0RSupR5zFTCJl6?hklBMOq*-t?t4Dz!eqM0bxu7RQK9fSavCTYrOHJxoPkre zbBf!b;nAg@q-|Gz_JfpZY6bl8Z$f}ZeH1|da!$@-lhy7}9}-^|41-dW9hUSJ!%((_ z{xez6G6mZ!FYm3DjED|v24KwA|4PS_xRY~=b2Aq9I`_w25|N>)!tgxz>fQ)9&IyWz zKAQn-d}&c;BdIp`_+F;=68gUD7RCMq5Fwq-BPhbAqbo&Ip^1v)ZF@h{Z9ib-EsF65 zdqRszMC(jKJ&|nVAZEU`#iB2X2s~8!qvAny!!v4<}W-YyAunn@-J{KKdzpp&p zfjBBqCnLf%1H~hs6skWi!||WK2rNQ#Qw^mYg}Vt}^E$jbW?vmy$Gu*R0NpczN+72I zXvO2Vlu>xe03vI0UcjGOp?>zCa&m9UW zfd+0?%#**ix`?&$sP3wGR09X^-NUbjB95$Qy=-$>B(LOo&r2AtM;4So z8K)yD2b{VZJVJonXkJFTLh-C;GP_H+bsm>#%(8(sPWE&n1NfQf`!B|5~tkN4Lwy6v1rs=ok}mRQwmqPr2~Ri+Z&- z42HyH!5w5;LVP-!xfLTXh&zru^WC=;G(`Ef({o1orjjjrU)ds}s*e|U>{;-`KJCpO zuqG8ax@NuG5Nr``=X}(5`Ru#x$DdL%V4x-D+^Z48W-NuZ?l36kDuPHj%c$+oq|Y6Hn!D@vpJ>2;xyD|p;r{sj+mjfDlA&v4 zV*QBdr*=x>R2!Sk$0tLceKOa9Df-Sxx%bzv8uDp9*Zv&+D99!q-@Rt6hEo5G5 zQZzYfjfBV;4L!B>c+={i&SM$q@w(MAaP(>xKs6zl+i58Ck$k~ZO)iua{;gY=a2^?% z>tkqo-#9O|UydKcVXXGk8KyeaI6bb+`|?W3C@!O&m+YOzCbxBHwU<%U+5Oh~?Wm|z zD6jPOh`U6Pw*OHed^OzlH5mXZlkJB7R~{{%0n`C%J0)Nt)CgEj_>8MF0vZuKc6M@2 zBcfUqqQ@@=dKo_r*Jk-Y09A99{FUIzW&PJvCZX_~XWLV+&Wg`3&*|8eiiNC5w;Kg=*ai?aC)_kM2d~>~5zyy@mmPOD zGNM0;NJ!f6W=&PXqe3JhInnv4>nx8GrTAKF5m`7Kz&{`8^yoDQZ+i*CMU1y zPG)c3n{w$Bk5=E`CMlx_{eV{2S9d?o$LF>14-T+*?uUmK;~lAa$7s&J#;}2?s zNDXl+>6f#*VGB+0Nt^UB$nre$hktp92|nq#Q>Fz95zAmJE2QeIN3h7GG_s=&oR1&& zu_}CgwgYrxlLy?MKwiPV%al@f;@_!VbwAh-{D-3Tc|j=D zdnATC+(xtCCu(cP&%(A}X3f}=8 zcUa}L+30B<`mj!?MUK`;E;P0Y;a|YURk7+`;tGO*jwh`05rm)c%j;B}u`J8d#I{+j zxzwD*S@(^=ZDtt~rW-=NXdimaMn7Q}c|tvxlnT zqw@Jt9Ua@#BOdc%+4=%u#+?b&#Rn1JCVTfg$A4|?i~4sJw(qKqi;Ko?I~bZP6>)1yZJbRA`cT;DpE_PmEho5ghz zh3-F{K_l9-#Ym;Qch`RiTczT#rE4UgmtfRv}R5 zFq*;;b!sxQN*`{p8ok%ek?27wi7ZEaY7y|Zz3RyB^O!gOCMB zV>NoI{9UN^>U=i+ZB}um&4$=`Cv4=Ok_&ZJr0!y&IikeIf+RY!*OQOYT3|^8!k_Tw z3au`>)!?uPY@AI+gEv4e$+9Y$ou#D-7O8g6AMeL`qhf2a=WXm+8*HD6G|6&ScD-&JR_sI^$F>`oBj(%-!YNfD zgZ6BtTJUKV(lzvX@rHj|Z;^&R_p*Zwc(uV>Vq6b08QWP6RI~hR*XsAi2CzXkauwO0K>0&;jL(!d2 zk@us)58c@-j-dyJWuTpd<60f-;j{tO)y_Xe(=jNJoitf>yE~?Z9}Dq?AfIeC=o83A z-e#Y!1%KT}y}_xK=-~CT{4Xg48=^g{qx5drz_iVTg9YU0n3@{rjNK+OT&-l6a#Pjz^ z`<(yq--^4Z^~&b5_D|?i{Lin!LAS(mv|=W{E4 z*(K7`lY%CX;+LnH(UOoifKJ>u@)xGGYao<9_erWC*u9+KsS@@C0v{r_M;h)``vF7u z!OX%!hLbuV^3dc(@tA^fs_XY16El637?4qVPLy=Uf3#oZ0 z&ldq=`o4V??f$C>PkF)?C6<2hrU`jf_6xky{;mHpl%=Gq zaqa|o91#D)$N}%v(nPAP47Sj~{t?a?cN3fH0P2JNUzc)l0n^jG(4%nWTFHj5yZ)pJ zmUuT#f9%Fmg`!f4e4Pg<|Gj+VsjkA*4#6tc5840Unri4U{?QWu`#$etcXid1-r{2Q z$>Z|@EC~RrJeOxdt844Y&xKGdAi~5}wo3!kc$Ccx$Oi+2g<1rv32BA9W*b`e?9wfo>W*Ux2prG5*-f zLqRcc|Dhi|Vf+>+bOjctp-!A!+(sE}2axPU<-!pQep$6`BD=c@buvQm8vAh}FSK+} zx$#@34%hYST4Fy3G>FdRxQXojg=Whcx66N>++@Otd+wv3C(DC0nqlt=qCd}MEG*I2 z8cTpc?GUS{NI4w{{oMVuawOCfnTv(5*a7)1F96okr)mF9g$zd3f|<;PiMR_B`OojV zF-ZgWujR6`3GK$zuk8)ud&ApF?Ka4IG}^|GcbYvSC>XT+;=AkJM8+}#%TV8b)DyPX8ZTHqf3R)!V?KiS#@42`nG>q`xP!sr4MlA(fMlowY zc*5iG!OL%=3C-px@EUfKJtGDYxXySV&-8nEX;2T{VI_(iFw+vdBL>Y#8Lolhwjk6N zrM3JQ`ukigG=^)<0-W>uCjdu?8+IkN1=(#FsgGEJ?Cc$uW!sW zh1}gtx38F-#&8{35;F7-iG!EFqY9`VGN#y0WSBU79PlEYA~WBwD5G=?VMR<}W&Oh+6H))3&@6Tc z12~PXCG}6>wk3U~G0t?Xu$W7l{+2iG#CvhiR#}K|c2l}}ac5;&oC`iyR!s6qFdMwf z8~SMobrgVfXf_LgP#1Y;q0%qcRd$ySetJnmu#_|dV~<*u(Us*I?oAFrd>jok zzeo9jfEy0vS(Vq1#X0PTY#9U0ca}O+FpgAQ4)|KVa zr+n6!0ZNNZYu9U2e=hGTM(8-iVh_MM7|$cj=@c>36&aszaO-ez z|GwyD0Q-=1gM&`;5TTRRsW2pPz_fD3Ve$^@@_VV(rMJ{JM~rc`FdFy4doZ1Jr+BDL z@dI6*lpq(`eL{jqSzGhk5$HeCF;35o>nr=b^Wi*=UQSp;x z=AHr71$|9Y-z7G)q;?am!ApVng`}Md6PN zwgTlA8ypcPau+}%DOS~5tPz=G3!$$mjDQ$#!D#1l!L1ivoq-NC!rK>pVQ7OT&u#=D zrqt@#Dmue$X2GSytk_UW6}d}PZhw*27LxD4U@8Ip(m9p?%^#H3mVBc-ri6o^)A=dB zsu4fOC6d~!gUAPKT9Ts8O4K=JQ~{QKt{mj6WZ zTG#J;8m-gg9S6TjbHC3}!)0*8k@owLgTci#e`fIX5-k`>G*?v`{O&IkEaOT3C%PMoG#p%VYY5K-mE@A)kGdj)*jdm{+6x? z(XN`v{)peP-}6Mi@(+j~#4h~nBaieQKjGGPeC1p4EE&_GT$sL-|6_E*vWelu-6x{v z*E}4)>M%(X>W!CbBhZ$pd_SRKevD6gNLy{80%3gjL$i{1wC!JdRYQzB{&w8`xOs-2 zTIU-fe4bF7gm3Fm<GzNm3IBVJJTzA<^{lU@^JXf@oJ#?T}AyWmCt3iVb*CE^gRU`afKe`LWRKlZJ zLF`%j-c(?d*TnJgTb=1nK-yFJ7s0=2os)UVyII}O8}Yw8IXwnAHP!6Jd;-}1Zc}>Y z)sJdn8vf)jAIMcZXv<;@g&n4*ev7-f^vw4U>O{r$pA&_@Hu9mZ zGz#eHhD2f!C2`ANbYTPb&G&GY5zjB)RHfL@^Xjds`FRI=7)OY$yH!%JrWO>$zF`=o zB|IvQ&4A*n zuyvT71vy2-3$N^Kk#U_jz6_q#(+Db8c99JsQTp?vdY?H_@PA}zjk28`$u zJ-S&_f>y5?{fF4H)A@t8wNQP=;U42ticn1ASKE17p{U8-exd;TT;l-0s0YQGX4rvH zl=jgr4k4%wh!U46Pzi50IvM0Q%kFSp0W8_0Ed~7au#~zeq}M0AzcUEl{u<<{yM1>f z+jPLEItmBvt0z)Y3gNavKNYSDQO$C=L-u}rSFO)|kqibQN&xUfZat3*`1x?m&G7#H z{Ej2+rtg~YnFvb#6D}9vvCsJN&li|lPqnkqhjK0yB^{g>tjRqXSlA-o2+3+#X=T;P z0eJ)g(R8`ibV$?XZHrXG?2GAa=2LNAf0IAOBVT6Fat6DsUSrU9_Oj%zx9s&2U`ak5 zaJovEr-6fEP2zH#{t>KRTzz%#em~4%YP2z0LK!f1Ye~AzOY1_p^zGyoG7t`qMCe6$KCW=z|PlTGr0@we9GOVnW zM+P3aP?1Su!Pb>jP-zNMldbRNcH-bwaFV*iP->BkH>SThU^Xk@1R5SsvAG0j$BmR} zjyazzf>FIIfYUd;N*k;m<_CSy*t&LCesXsk6RClfrR3hIS~Q1@X(D9v447?0-S*jpH*nN08R~-x zM+aSEn7m38`!?{C%5nq5pzX)IbvObpHDxIbDx8Ck86T)opV_m}_5^X~gF1_Mm~LeO zw2cb(<3o4=So6~h{*UNx0y8t_)@=2JG_o2t?WYjIkPD;MGU-KdNNl!m#cv4xPuSVZ z!N{XMBi)|r?BmevTwm++K#(H2 zrPzeX#;Uy1n^9vJvt`lO*NS z^$s3eTF94ESUEfF) zi6GbA<;=SB3jst}9GMBR7rhnqNs-8|It@qR{S;A(bFIY!xnMIBwh+MrY|#+4 zM6`SPB823^w$Kgb!w$#IpML0+0R%W7A+h!HNnxK)@ z4vf@7HsApLN+5JKM8IWCl-OKq(T-ekE@t=nKi}laNU1ETC{IoAAEFE;kZq0R(OpEJ zM4|+4Y%1mq`6QD?St2yFQkf+cm-&v4aA7u;VoNI)mF^rs-KZ&Llm7j0^}W3@F@oVb z*P@AAv_I6k{|*ws)Vf=&tU4Ll^xTgF99ZKbRJ=uwcySvZKq;?B@(>g-^`9i1!QTic z(zr@}(Q~GwBK&NN8c)j8hdoWY~yO>NisYX%JY zbH} z_#mhKUQbkybt^BWk`>eGKw*a-w7+9xqL2OAL>j+5#iDK3M_2h z<4t62g6aDX2eI#Y%`$Cm+V0qRrb?5d#^6lm{UScmarSqAUl_VXw%yszujacPOTCfw z8z$sCn@J-aGE2SYAMgDw_SZ#TXH|iqLCfvI{O zL>t-}s^L5y&!1TTucGlk{Tn3Q-=jmA>EAYkhtTHTW*(BQMs&@p>#T36)4)aUFG9Kl ztaxh5YS5a7#D5qK>755N<%r^3#`=yGphE`K>&Ffswe2Ve9U|mBa2;}x#rUzvckgOu zUbma!%dkJjaIBtp%%o|0L>1$)44xAg6P0?B5(Scr&39*tE(#ZI=SQN(($LY8doxA^ z&5t#-^&lmwS|gk=Jk=bE`j&JUqTP?W7L!-Alek;Zl&M39rB~z{Pda(W7(at zVsd)Zz(DiOAHRm#1ntf=F%$ua*WB&&tsZS(pVt{yy_l#PwU~5cfGPMG$ucNg(|V0~ z#ga)g`>D=z;jDZ6u;R%AKmI!6L={VXmlmoKyE-Sgy6VAH&NyIMBJ7{cV2jH{0QInC zkCsQ@?YB5)=On+BtH`gY$B&oO@6tRg1#4@bTLw~EW8ni2=XUI2h1W@UmKm&@RW9Je-IH{RpmQSLS>fd3T~r5>CJw7DQ-5qL2; zi9<_Yjt6@;D6lIGn|Z_3?7Wy%eNo*cdr#!3F{*Y)%r+$@C0Qv3!(TfCoJ7TU6D9N# zP$Qd!|J+%<^n8LSQa?0T59oq~2Z{V*KeW_IkExBLwKN>g*m;Dkzwj(^U0AM>aMb8* z+Pn8zpf0WEq-?LA2ynk^u6Zc}ogEy55TGE|)h*UrS#IZa{!je+??>f7ACZE;v?pXn zlWqM0Z1H9M+!J!2&@h$j!W+JIkl9Bcwz`2sDLd}>6_a35Hm4^Wk2pRQ0qOF4gtyf4 zCh}QC4`2L%`x$VN@99qEB@*GfrKPyC9?+PQ==Oo2O`;aY5mdy>gK z!kFUS;YV{xuDJFklv#_~64tq*iptQ_@)^?Ey>utKq2{o5`OL1we6xa1F+Y=ucWB=Z zA+Dy9M94{}1|iNd-8`=fzwIOM*B3*uxg7+KJhl_D4MK|$gbAa{|LxKKM+#A5hCJ#g zJERDG+|=m2bt$@QDQ{8J6CUgv>xw%WUgsThX(VehGxWcFp>U;am|S=NLK#Ub784>< zqUfBo@7)6RpghRmjPGb$M6{T;uEhd2Jukf%=X_{JR=VSliS}<-)>U<^NwY}<-WJ@( zn^t^pe8zQG|0+JR+Juu`uoTDE>BC9tsqI>(h*He=P*agtUZJRYqi2&hyb7XH)l$k3 z#rDR;P#j@c{7}>72-Nq@;J7E%))@Z@O{`IocaSS7#9iFNE-$apc8;VHe$SEN7J& zF4g5ex?*>(=lcWHV~Jk0<32lL7KV6b*F~80d*yMZLadZ0yoR`oQ|%NBRFCIsdUZ|KvPVAVA)f z%@`I9<-h!-eeiDCadLJs5Kk^Es1zK;0Ca2ZTN%^1(}_J)qEjw7wzn$ZANnmCZ27c# zEKF(h&Qea2d;do5>~J($nepSFD6qWDDJ5{eFE6iZx@(L1!`1H0JtbEy%qHSgAMMJre0M1_akQi{ystgYd`oFQV?55>({Hvcpsf z8tn-;P5Hm;4Au$ZC;>ESl61skD zEx5g{v@89v(m*YPRk~mL7xwYD^RWdCnJcML5|l1!>)Q(c%-P1`7XwBs#2Dp$43@Gb3N*3ckc#>}7Oq z4;zosE zhk-R_de0$GX8X5{;((ihQcu5=v2(Juyje{x8+1JW!~Hi#TA{BTtkXG z{{s(3Pmi%fHcjm!>w(@wS+1Nrhprz|PcV`RM(zlGJ3POGh41O6@o2uf{E6X`DChL> zlO3OPixUjB8k-?m-*6bQ_rb>6{!WS{?k9iY#pUBxAg&E|kSXD7=tvEfgUY1vYL`gI z^~RQxh`_ba$EMjz8+Uxd9P?=e_;Mrpk6oZ4@B*~Dt|z!Z_4ts@jkTaK^G0~-r=`NA zgp{E}M3Jw&kuawC$7a#q>qh4x0L%oNWGAND*Z0d{qWS)0ifxZGXAB0vL=Jr z?nnqE+kIPQz$J13z_=NWCDW-bq^XQCr5)_fy4aTi)z_3|Xm`72h>VUO*4d8On*k!P z=D>m0M8;R5QU&?nSLC0t;ad_E8`jt1Kt&T}Y#i~R@DFWHd`g2k!hd=J^r)({g|w%X zYYe^LK795qZGnPg@3&lrSuzDfHPL6dh3YG`NfKdQ|TUWPipNNvX)bpjNf|L$w)8XlQA+Dlqg00>lX3%6cU71_BMd>nBH7;?Ozq&n_o?EtT!zZiV(Bs6m!D z4p*RXXV>LP1tRquu4}F|P%6ugfa$Lk&-81;$a(gkSkynK_V1@sF0$DSmfb-Tj}pYL z|Cs~d%LIPvGhjTm{>hl{erzMu1~X7t)H8xytC;{X4t>45)@M=;4sRW|`=bRuX7iCD z%)TeTwY$J|3)24eK4SyEL{>#x%p*DIN(wKn$vEN4U64$gB^zT3-~&=F9KX}vH8-4c{Mwc!13>z?jQ zPxOS44q=ZEIu^hx+hCU{IEp$$N?oE{=ZUo3$qiqyjt^&(?FMPWkF_21NW52+p^Z7n zxTwCXSzbNEr{AC37pHoOd#IoxPLf;WYb3G$bW^W8>USrs;LXv#5Ogty3t8q8no3f> zf1A<&D?IwQI~j-=;Y@%;tM}|BIz;d(S?6(CGHA3~kv7?`NZJ%`jKZ^mA{!%dl1bcPZ0hhr#;KgVhq)cV47vsrhK{vM*+-i1&!n$`%N4tT_4@l( z4_e6%50jo)06J-Zp(T8G5}!MD;Dm^c?$^3}6diHK(&b=b7-?*#kWD#tnvwls_}Cl{ zY#l0^8?%ogh0VvYZe)5382?LCZ?1mlOt~%Q6Xes*Oj8OHDlUbCxAZV`B6U$iOT3Pn ztlgGq!c~s?MZJkNcx$Ixm}*v@I>`h5WX~_@$!#V`yGN$osrw8xpw>3pY%#xfq+`G7 zI@RM)HLxGLcX(kC9iL}dX01(?*Y0+J*6ycsaRn`SSoD7-68|=V zKnTqY3@7pzV1oE7+7>-6s~*NW9|Mf6DWl{~@8EK#6P|RKqoSBJ>Ky7VmESK?gfqeL zOVdx0WQ#5;+R|JNJ0UHDs(~28?wPT0nF{SV|7cx*vb?XXp5%l3%a4{2T8Pk`elnv_ zBau-FDBsl;o0Lfg-Sl9rWn{;VIqCS2ZnrkWubR3NXL?0ZxPC`gETExIP4iCa9mIG3wxQXL_W;14Kr>ZuLD=8BaI!-5GH@6I`>Mp{y) zK-blwGCb)rJlg0EXt19P>O5865&P`x^H&l#D&ih5cbfYbUHKn7@UQ)eNd^Kh(NimH z^qo==SmXr}iNlNKy6#!o;)Ah=2{>o|Bx{~xqDy_n?RtJj%H~a%!mwi&(?D0u4=ixI zi1OUtJB!piw8?Wb7oX^kYd52O+ajf2t_M&l$Fl}~$K|z0(o9hW%xsbo_oY@C5Nb)9 zT>k!J)W{CS#W8W(6N;}ERTtr@zmV+>m@o|?*?V7YeWH8?-620-FGPQn zh(u`?+L|)@7es(6NAHKOo&4(MzZ#i$-3e$m)n9xaXWCf>Jz8(1C+9QslPu{ZUJ+Nw zSmc*1F+Q!{k+xQ zL6sSzLM<^l~kJjc6azQy1PIS zr18s=jv&sdgJ3@QM(9u3;g^MWJ16yEBQbpM{hu9z@6dClc+ZLC3nHggROS8|DK5gD zUoNRDfDSr``35ecCU3CJEPP~NDp38n4>1c>X}RWN`hKzxEt=M5p82;a2Ki76 z41ZAG_!(CzPp8X`uY&I_D95EMTurQqw~O8Wg@tHxXIF$yxJy!X4RxwoJ~q_IZqa7* z;1L_{`qqc!%Y_Z@P7Vck-Fsb-whDh=QMC%&&Z;e&ob)|k$%$z5=}IYF>1ggJ469OB zT3T3cE)j8&CR4)Hzf?^BI)B;!g8gD+kyy%@I*Kf`?z8{Gs;P9sBR{UTKZ^8*R6pVIoRu}XNuQO{x&V6#JBwdI46*hwI z8ssW8y8P&l(hEd~7gM?4B|C2S_}EUdND2w(W92rph%6gH(o5 z<|@nPL@XUp`1?7 zflUp=J_psWZ{7)egMAMTppu z5|$eFMM86PjOmj^#&m|&0D8}CMlUM)rZ{IrUs$Cnz|ipR^(bmnA9lSNCq1tDe1zqGDba@kS`~_L zPkS990^LS=TC2;ME95(|Uhd;^#_lV*iB41@j;Mv-|a|cXS-WL{q2vlv?R*#1Q z_1WVr%Kn(?XiEZN3C(tMdL2qjF7VQ!!mQTRL#CzE_Xy0dr{_lNikO!y4F`XV7XEgc z{PFAIMzxb8v6ridO@|{<3mB~(G5N4FL#Xqim6U40Y%PCTrQ15`5mPq@`)~kz5{Q2d z!`A)(iAP!rk+>*9rqb#nf`cJ;p7P`zZknP_uXKK0eRnKYots&RN|t?tptME8 zoQG9ZublfN0Fi68&+O0dP;RY$`j`{{-@qD>+p$F6W|DqW*VKgON93e#8xdgNVGvNzos%)-uK!6B7}&vRXlV8X9`EnpWm8<_ zH5HSBGdM5$IQ8fy=C0*3#M2&fRgR7-C31bh(7J~n#ushrubN`2{TG)1IlcCsLg)1@xOiRpU;?r@PnxR#hU>=U0m%gM;Cx(px#*@ z=Wu;rX}NLOKX&Cc;eMS(Uuo|RwG3IcZ&}uLI=24l@(v}f?Jq2gN$N+ z!F?ov+^dlFcy~70;HHf#0B}Q<`i9@GTKw#{G>9}0Is}=+uE;eZ5MWFew9aN#6nFiv zIV5~=54ic)k{`hfus>8)8;x?67{}q8Uh2`ltEu^+E|_LRmsC`AU|`#=9#@cksZP-2 zqopl33hmoz04U7+87C*z$(J0PSx=4A$9|YDYCq0FWk!B6O=12lwS3*nmWcA+QUSt_ zKjPT$N4EuZG!QRL*R>(2HB?NI1f3_9^s?MHWuv@QQn62~bHpkU3s}urr+__v1;h4u zQTd$+|GvO~DRhNMXJVn=%rWfV@?UQ|l19cEdRk6{d;76gii5_ft{mX5!l@56@ ze462QqC{pYT|EmajJF@japQ7Ss2In-0dVwtY6$Ee?dnmqgV}ZLm8iQuEue!VPl6=A z^%YINp_uv{b6nPg92hn-hR;UiEPKrGXkaA#su#$N8JD;ds&Aoa94Za^eZAgY*n(Cs zs2RG03X!Yy9Sb>>ZrJUb^RXOz+&b2sqiQo+Hv@6B7S=fJe6@t0$H}^=ZBdJN9Oav) zCe1_LXXD-&jCZ%Qta|4VX~#N zt~RW07>2qs6wvz2LyD*F>@SNITV@M6@P0z#;^Yq(8!=^LGCa-EPS)zg6cjl6`oxXX z1GBl@CR|ZT$q(pcmup&GWg0o1#t?s~-SQJUs~^BN;D11G zz+`c^kI5fx+UB#N@Smq|ixaY$9f*8qO%b`N!SE{R9gA*Q!3N4~lVL^f(b--ksV7Qr zVOmOa$e&r>6eLos>qgI8WHC-#vSbrS0o};d7AasaTE8Dwv^8F{9);wlfP?m`L`;_K z2`D*^>6CJL%oasY`iF<5b565soHNVwK{le;WP*YM9GwQHH@76_{zi`0oxVOsIdKo=C zJt#g;Q~hYDH49QZ0-aw5@25s?m8ABqcymHxVz_p(j-*G(tR7GCI{^CbXhro<&`4Y|Tlcqk;2&5`k6yIUq_!QXLZ|64af8_sm>;pv zvOI=-_%B#kME~-3*g6&mU`bP;al}$y;7H4?I--P)i$LblAU_`q820fB6$2G|M03wi z!C3|}x-V;-=cr3^>UD7S=pL^ww|3mr2k{=NpusJK& zqm-8JDI=N}>pG51qJ9#ewl>N(7pOFILd5EWKN^z2qs$| zZOT``x5gP;>vrRYT_1;9ac&fjOPWn% zz9iUMU2|U!53;qOzuZ|#sHv!mNwjX?9@`qO2DldJwl5l}j(VdDp8x<+r&R0Iu1=M<2!vF)PqVj|UR0P6k$*l)Y z;sPuB)dBdzQ+G0lx`hA&-yRlsM3?{7Rhaspmka{wEz0=*lq3XNJOiwgPIF<-0= zAp6&*!NtLi%?NOb>)`m|9dwVqm~GM;5be&wTB^P-*H9C5b%{-IZrA;BW&akyab9p7 z5`lV08VOFX#X-_?=k3n?gH_A)Kd(AqWYIX8Zqb}|A6G}W%VoH>gfA3gV=so&I5g`$ zIwHkdq2=|~v9q@u=>I0-F1^)yO!Q#IPg00Ej0bR~_pN(_fw~LutwB7PeukH$VO~K& z!3fkZc#UHZ4D+hD7$r;UKq@oj*-N=qp4-1|_7RddA>es13xXq=IhcA9_o&StKd|j7 z(`(9Aa>ANZsk_?eb*w#F+d{^{4n!fbH}P(ek|Lvk$qXgadR^lnM!*>i+znw&(FdgC zlhE!+v2=NPcD1ZRgh2jWsMc1@)T2@3T-RTegtgxjBH?kemF7wEt9;eqTvS4a0e2Vw zGw%n*7QptqX(;1#rJA%Vjb&Y;%lrBu#?IbR0uNdCG}(H1mryMffqTXMX=mP8z0+*1H7M4xUhoaty)}6J zl2NciTt>NVWV6l%vFmeJ-M%s^EDCMiN3ZV3s!aGe(I46k}% z4f;8$LuD9J!j{(?>%%!0iFN5HcIw9zAF%2IC7AiidefsqvrBXJPirjbyZs^*)mt<< z-teidPmEe^o>&v+95*ehK{$AoZm00xVyx*9TNMMt?uR?o2UFaXklHhZk&%&9LHsx* zpZxoEtpzPLb?=Vo^>4c7?U4_xkA?~jaA3*W?% zyu{_EJ5?+IA`w$NzFR5>JZWrDmQ8i+Gp|qiT2#2_+*f;BZ4Wt@W!glqqZU!o>eB*r zL@~~E|IZtJ z1}YN~%%YyyR|C{X$w86kIl#CQI zEj^~50$F?z1}g1Wv9@asNJvxSETB!8KaktQn4_xFh4Y99M{74p*Lyip*6w_(6W>@6 z`@tTKkYXceLI3vRN&*^AE{}$)DLQ;7ahp7AWQ`oyjwcLFQr5O|i2&aXV!qtA6^zx1S*0_WE5@DQ{ zP+!pUXL6+xOA{@DzRWzZA_y8>yrs4g0kdhuz(1V+M5IzpZ;kUpR40T&M9d+l=cljN z^P*R{?@|a|q|OfENfh%E0>vqTUY(+4ge!^(3NeO)O-I&@tsUnC7nfdB_7Ab1Sy|6& zzpRl}Dxsm^U`SZ|bP2E|-(QHDC+;v3`4I`A9`F`1y`-;K#G1|SK(9l!otxVCV=qdS zJf&z_>P14-Bqe5Kx5HM=pR)V_ov$e|r%?~O7Q4&W&IWp^+eW7&9@E2)UIKH-OU2k( zA@WefneH1EuTAW)gLU!K&t3GA_VZiAxvc}Ipe!nmqjOU&>&=y05gfYdao|4{lzRK; z;crdpC4t4q;>n#qUY^d7ms{*%;a3qArl}lo8HHrjm^HJ&iI>}HO{P*~EUR;VMop@r zmc$r-aXIT-j58Oj!#$*7Wi4OaldCEuD=8>zgCQms2Ij#H8-iiODmC#VdkA7}7wZZB z$hDnjKK+y4(-+=PFKaO~mACt1XemSj)ERVl7zQIVem|Sty6|#5iJ_+jUm-M)=|wLI zzRmD72@1H`w%svLtH=^N3q4XN2!_+e>n^wiYk$ZCF8$i*n9rdl1voGbBfYbpACque zPul0{5{yd?9oyZb)4luquD^RY2sS3CGY@5#9bQ5^Dh)^C0!EhlO21>Z+EuofW`mn3eql9=e+2r3%%>H zTB=TKPq;44kR&I>Zi!FM=nn^yKnt*K$qcO~sr5IMZ7g_2VLr~b7x{7xo7`HnMuw?6 zT|2qlSsO_=)%CJ1S)1?ZWLH>gvs*Rv!V-3{51{?-4SsrJ8~#f zAge+nu<9%>PsZyqrV;J+-G(3$4}f7nCadqSG5U%S1MLEBY{bgAbBs#!4C<+25t92E zTk*ED3`v=1$!;5LX-Hc6iAD&sH*Nfp)$1}U=xuQI32~5#Y?9Z9)Py=rn%)dSqVyaz zV}iEmFhdd4dUt}237TJ&Q6LG%>y{m&D%HB4-za;-Pie=?M;vOz zptxLuj9s-EIymm@=+TQ2eXb8`?{g429TwPkow?VJr__X^#n9@Ui<-M3TUj92LVsac zrxS&(E43W{=j(obpyVnb zjXs+k%H27iX|?3#d;Wuav{DHgXXIGxxztS+>&u9{2y+{17tJhzyh7%ZFX&>m6~b&N zxeAr$F8C1$je40&u;cb~6|3WF4)q4V-_XIq@#vPx%S&s{MUcnkgA(~IxY5ey2ZJlJ z!DY|vyW8E4@6WR&(n5LfhEVI^k{tI?s20K+8vsG+rYn@xH+KShgD6k=d+Vc0EkQ%K zqiy}OEnlc%lz1f#4Y4i#Dzh~XjBn{|#RCZTH>ANQ(;in?@?YX4E%z?NQ;V6+{!pQ4 zH(L!qShvTerIFg~S+5S|c|I~+Jv^Y?bLaIX)34Q-E`6@tn&GgJZ9P77d@%JZ?99wIL%f9%G+x zFh^^1It@HJ8u}?a5+81nX?19IH1J3ryC&N_N+#lb3%S4I;^Qn%*RT{E49KrYfUI9^XSwur8~CHD@2p zGC+v|XeY&?V`2JS8{U+L(j9Oa(rWvAUk}BkG8sedj>K0Hbz|vuu&YMr{v;intrz5gp}U^YYf!OGPsXXH%AA2UnCYTW;nD_!elX&Mii)M}xK3lAMb9fJ z5=d$nLT#M7g`B>`{nQA1qmM#0a2{KC0=0Bk^L{W;J?-Z`iq~gcM`kA-#*B+g0YR0D zm(&_6#!9rm^g2W;+*3sKdQjgMIZ0^1ydj;@^F!znusNG>_6({EzMsU*ll&y^R_Yo; zKyts^K+MTke?->kHfJ7+&X6$Dwk6pnAnr(ueHg6nu0R5j*9E}b0+|R4TZI*lX8}t& zuxVjwp}t3~VX3#>Tieo2MEuofz`{~?@42g-h>k3Pmz0`0ZS^PVo>rrc@QYN^K=K}c zzszI;R0&F}T590IsqDKrySbRrA`404oH#;zyQH{yI8spoaqW(PyG?SIxY&xetxuq7 zw&yZUW~IwYQF`?_TdC*ON6A%B_l2;TS%11GqAjnsdq8_`R*{(_TcSTdG(GFx0953Wn6t}*Zok4+g`1? z1gMDlII}?5aiMe9?PB>2AhaZdGBcfCzcOoH;&lLW^y z0i9{UgyH1P0+(Z!x1J;6D+j?a&?jV=Pi;~u1#Y3Z8Hlff|MjAw5kZb@%%=TFrrco7 z4yC4a-`P(Y0M}zI`t=MM_zRZUl8Qo@uXCgK_03^&6j>RCWkk83NH}#p{o_Ss{mFM> z_e0v1@!_0@3@nmRQxALa!G%(fK=ZiOsPlll5T?808S*L2IMwzSW_|{HF)_kVk?4R% zS$&5Py8Os$p@K0tVa|u=c{5HArqL$zdj|Vjqb$zqRqG{v$=OoRvL9vM<4j}nl%IVD3N(B8E_>loas zlxX%z{N*>|U!3TqPd!*^xy6kjyvNf9H1+L`-;jC+&&D(q7dN`~`18U=4RY%A^HE6} zXayf+;4D?uXNBDCzQM3pj5)%`mm0>WI`OJAtc;CY6=Q}MzCIxmZmv$l<;W6#pEzJJ z(I~pt!DKFB@kg^IJq(v&{m|(!;1IxQO2L)pW`$un$6qg1h1k?&csdwW?)q~Ey^}0@ zqsjRdd5uBqzhCYQ1YfC9rXr zxK50NT8$HNb*0!^TnOsjV2(=Zd-62BUKWD#5&iVa9}}B#7IL)YiH2}KF62Srt;ca3 zPC6VzI?>IW-VD=A`{^A{#}0cvv^E{VUYnNzUb)6zeA(#(g>XB_GM4{#jyUd4e%G9G z)Eo_LV?n>M)U*CvKj3kW_1;r!Lpoe-B-;ok7W61$1YmGd&*@1l@NVBEMIT2BF~Fk)UOkHo2_r-t|LqlzD+;%tKLypUB^jibJV^~!TwJLh-$z0+e+W%zzn4RCte zZ(Ww-PTjh= zpDWlq2vlOL$$=v05ECP2H9GslfKo@lQYRZMFA<8K`MQLkR5AE-PrGm2UzN_1?9h1SuLpMBqSTD)mx-+vn3`CLhWz zYK@6RTCR}CZ>Y7lc($M@?MGjB>5wo_uZP9rx-S^dEk^HV;8UKqrCl<{x;X=D(L+NK zK)SD*&9F)B*96?pwa4O*ge@P1?Z`BvH118moEka?yIMV z(Ag9{IF?FNoL8x1zU>FUy17RZv3@Jet1~&M1ye}SX@dFAyuaL6zJ;DuyIV53+_+Cv zmBxp%0ojy9hMsxlPk$wX3%Lx%8{J>jg$E8vD_;SH`n&34${=e%(^67rBPL$?4WgUK zcJB}^Z@A|n-kpuHM0rH=LQh@4Svz?$2zqEf3z0&2<(-a&25tkQ0Yg?KJHZ(-0tSsF zcwfi&kcuv~9*^)MGa%Q_SBxDI(;@m$zkIBrP|iz28ib2kTv~}cSmDT0oAz;b{|rfS z$=1b%q3g|xAf4kvbPL?P#o>-@poxj@55*7maHy6?>QO1W2Lc`875U~hD6acofQyS@ z4F~Y|C<9uFVF|<2X!gD0R1&cDiw#fdQc|Z*Hd2t}%5NDvDde>F`z^C~8!A!nkO;j2 zbhSVnD~zm7&Zt~f&%75cxBNA(EQZui5J*!cGS-fm=^0&4_LF{g5o~xk4a5(21NvjS3)!1R z+ts|OghwHsAg&*6kbd}{yNF2y>mR5K8VDFmnmE*JCJ4BFq&?1**eVe3PMq#v2FN%d zp3iV3?w;ZIEr*fXKVL~w+sg{*b7#ft6)JfR5rMfo_gYr_1TyIIgrnn(bGcnX>3=Zs zIAf6<+Hz{jMB}qVG5!#Y>e?!2a(wY3BSR-5n~SKx=YH-R4bqKmK6``CT1BL|u_h*H z`GnT-?H6MUkL-yfz24J$LwUI1l23D$gqh_u*i&>mS^ps=m`7iM-wPQ-8d1>e!@>gop90(>*oiaI)Ue7yDy zeHivhrdi2&{jZFrqFn~RX45ssV5>ls>cfn+3LfL z;1G(RChmsCkLe-r;*!&&S<-V30fN51g4$T93n`+hcHN;Pc4785jFjZ$QGDGu$YPFx zfnaL~rV5FXcXYGkGhuMNMNG&2b9+wgmrX7NJ^5e}#tYEi{7zhdN031* zTeBrfhhjg~AVhN{OZwqCfKG!Bjd#qY!i8pxmTqs+VsvVv5h<;x%+lH&AzAmedO)Oh ztB`Pd6aWN_#dGH3SztAdN4t)`TOSqfQN6n}J*s-lr9@T)RH)KvVsm4Jds5si;J9aG zWSQnw6ev%hD%G__)g>;jP-Gp8j_w%N$ro@tSX*xMIPx0PG#V9~qEeu*lLg%y;ZFwH zb3E=eDW8a97&Y0rbA$Uc=a2$AuufSPZC0DBQXp@h4bCQbYUS#dQ701Z*4Doz%X znZNVYSFrLBQt(f-v2J<+tH&RrJn7dZF5Fob7-7}452m#8i<9V$H!7V8EZKjEK%#}r z#3v_HXfO>OI4&xV?{T-#y<3B4$Z5XZW7Dry7f;uI6RrxtkaVhT2*Z`KuB2C?{LBe5 zz?Eq~5mHO#VUxj;zs-P#Ob zq4fO|l48M|9BX8bwj6SBX?pE=V$o`_ym04jvK~Dj4UAkT9Y***1<%8UaMwoQCFG^Ajb%v)>v*aX=SUl`D;CW;VfrfdL&1L7uwL#9 zlGY_r#4P2^&F$`%70Z$E1dIJTS_ChTW}6ER1q+Ams*NRQ&FN3`m5%Nr!!_bR7gp}? zjgOYzlqwKfvcrq&8u@*mS{_cFB1RQI8mA}%oDDXpVdty5qam0@^NcMd{RdUDJF(v$Xy-Q%Unl1*mt&MMU zw&WZ+d+WM;GMv`%aB81;xafmFU9x5yg(`VRTD#ulf2AK!rcVL%heWTc)&A@iDdqKG z6Fzx)?Cf)xTxg!*t+=jwzu+ZYHmdn?+5I>xJzenz$8Y}z-}vI*%GNlM%DnbqGv24? z^Xzi;nxlGuKjlX``$rh%hvBHybfV9A3hpH=3~r-tqeW#y4(tPqB2bXb z0P;VgV;el`Gl|l0gO%sh%J>QEOvN6ZWs$Mb(McV0Ilf^I!w7CwC>31KsuMSYdMnjw z?Tcv)>rDFZ=+WcF;qE%R4i@+KOp8PIgWs)~i(*z^AQz9u7Ws6(YYX991B)eZ-pZ;u zHIY0raLln6U6>t+)i=`B*n=xKzT@$+{~<7~a&4{>y}vGqEGbKU%~-P8JnZu7npmzy zI2#)C)k&0pIMl`YMtD{=0j!0)ZWcTckU=Ehs%Y=a@Ga78vjgqJB^3G8-ylogUe$Bm zPG4g%MK&lM^;l?OSvsP{zZ=#h?Mc1m*1WlOz`>=ye&i~~gnT~~`HYJ%QU&|Cucp1; z9j{J6*FyAq7(8^_?)98W*AZ~16U?qrwYXiz!Y&YqkDnvEJvP;=AWNCB3;$G?Pm`st zmE;OgEQz4W`Tg3T#{oO3yGPdqW`UYqZA1`aP= zPfW#)sL5R2A&7JL>(q+}y@~gGoZS1weD&^yXK^@sYTIU_JbdH6Wv1-sN9U~f56m#t zVP?42tIRtgiIuzvp+W(1nNypns3o}9NBp>_m`qhIbk6Y3p=3Ygk51~|0jbi1C%eoi zleeeYr)gHigrEvkmy3~s7G^^xv#T%1{oOYZDiXk?wVPn;^NIVtja%&`A|gs7QAWV_ zxt%SA4vx18KT?}Qk8!cw%f=mlQhQ*#w&b#S*%p8_ZxsnAD?1%aKODVQf5>#+EY$es z@0qBhYb*982zvWk$3Fnn{%|8kYzuKfGA~W7K_{B_gnt>^>Yi8d`GZ| z17LqZP>2*Q1Sla;r~H_enp>4}BI}jZrqjBP zY_!ebi3tW*nb?Bw=1S#B|ANlL=Ux&h7NRL1i!wDRk7xc?Q2XUL)Z?z! zS2}0N=swww?uSR2DYXC*N`;!PyEry^ISmSJ6TNoRZno!T-e8o zJm(Kt0$RK^%%_Kp%j@cp;+@V%0g;@|&Ki?Rtu)uADbR*Z>?X>NX@RWh#Y*k`j(icm zB(28Cglic{?ioU0UJU04LAm|JzxpEYj`ID!(cbjc#rgIc76Vg2%~=`fI_Sc@^ydV~ zIb{!bOb49us#%+8$`CfPHRNhFUGD0i(VD|vZe#~KdEiNJg55Qs)<4K2Hw{D zQuU>rxlEAIk-51ZL55QFFg?Z8QP9xnTmgtGZ}}kH)@s$K&wEXf?N)xKhDKSsNb&Jg zoKwgX_^X|3jSK)wbL-@Nb)_ZWl^8+15U_j^CO&V~Tu)lMomq$3+Qe!d$KxHfI!EEN|+iT z8$CvNtzDd_kb>Q`p=4!400jY|6)i-ij(YXcqD}28Tjwn4Lx>ke9uFkusp7ZSrprD7 zneMiXx&#wrW27qc<)#NL5Zv~e{xD{0&Bn1x3$@;$s?$GD209#d?1Oo1K6Z*^WQ39s zcX<_qNxwxHTAw-4Q4)q}9l~{CTYmqJBi~#6skbct>86E4p~ISJ$Fl2u)2fQ-`7L8; zB-UXpe1f5>{aDy?SL~yTi&(4_lU!y*hF0uxsvjBEutoRxv-{8617@scUpRyd=^$Pu zy91G-3xknv3VA$E%Y^L|2DU#_RHe$z7lBb1DKf7wHe0HS zdV|O3029~@)(^oM_vX5=oiApNmx_w%ES;vU?g*Ta0}L;G!{t=5{z@*D;Ww&clRv|v zeJnY*vn%oX?s`jQHO92=a%%Kay9kcY+bB64jXz+VY+P!m0K|L6$`>JyhwgRIqKD!> zfYufsP;6XZO*;=y#mc%k2<*ySZc~J_{7><;MZaLzSw>IZrangbG@3Fsm%qQ%1wtm^a(N4?&?3jVGTQ z0t!$UXmZ-qFa|R7vRB^nbWEN@UeL>zr{gO$QLRsyoecP%$`$=yfshTuWl0&a>FItH z$o%$v&Y;0DZfSJuS}KRiY!N2`?vB2_y&Q5qjg)m=0e6wZK+OF5Wn51m)fnIA+x6jyc#^@8cW4GhR6z(KDY3Aq9_tBlz`~31 zC`-r3R!r?)bG5kSYYc|)`|q)tZU+9As(36OU@QAJ+sN0xwzxuczr2gPahhSaQlwMW z1<6Ukk(tIk^X#Cwe$lGC<+?1|cz{6~)rwBFk^AcvsE%h?+~~@;`Z|ZbjvG(|V$GXp zuofcHM!2jt_U6H06+=yggxHTnqY|RS7X0@iN8XWu14co{qEt6R{r&V-zJaPI(vjLu zbc%kK>8b#MKmSfkU6l|ks;LEgzq;<0l@G0);dmWA|JK{;l?qizbYEay1bq|~na=Yq zXleJ}8$JM$i7kNUXUwG+p_)0={)^Xkw3NyImb&}_*MFd{f;76 zN;Q@w+}~1EU0i+eVs)wUy}e0wwsAXLgNg*ipGe#T@;ER(J9g94_~SOq{n7Xa3M&2g zQD-bCYjdXO1*hZTq}S!TBZ2qcCCU+Ep|*@nc<3)*BeFNC6C-VCBy4Qy_ZPS#d%%!l zj7>o5Q+t3!6pl1z(FX6s9 zv)MlMb!oDFJ2tI{T8U}F2SK0TZeh1V5IfTi;U_bz4O1}ifY7WAjJciunE6~`C>D_2 z5@b}SF00wa^vWX+l|vUlr`;p!Xf8a39sHGD8unBkC#&i1^`QB}FxRX2(X1QV)eGw| ztImUI1nUS*2}GAW3!XOB?hpH7veOjqiTi6=(h)&1i@~ksTJHtCvI+5<7A>H$;5Uq9S_{oJJzOg}zf#l7hW~Y75Wn~lOXk~cMteelF1fQ=?#6SF0 zEnFy~a2>IAS!y7~T`r|cxYDn^=S}TmA^7mp1M@AaoBt-k#lidfj6eUzJim&WJ&%{u zebHh_LrzXUvqk6`tkq;C3}t2d?Svb7TFI?gb^80syTpR^LRn+Wy^wb;!&-EFIwg;( z&t_k}dPMT1`C2rg8DQvJgUvZao8>A#iNVSo`kUb`7J2l&QL`W(oc?{fG271`8qbdk z1p$ERgX|Gmg2fiYdpd^KeN@HoU#go?obq{?dT)?|1%~7xjMU;zLh?Z!Z_ek48D__> zdZWxBl2n*9=R6I?Oaz=zTqcf~+Y&xQj?S5$WK%5%p=*h}|D( zR~dp_z+W_@k6-OdDZA^K#5#AnRbt8dpsKJMr&h{-j}nl4MR(~W4b@t4ANfYQxxu!aXu_lZrHV7#QUh|q@frI zO%E41XmzbKgk-7D&HXj55TAlM<;f=)c+H}s24^UAR~^}h6|H!x;Mqi0l2)PM_`H$4@P=s6&xQck?q3>c)Dc2;eSl!xGhAMaX~s$BDvd4LT0;Gv(D? zlX>>5K=XkE{K$gzzl&9Rs)N3GS-YOh1Q>Ahw9B}=KcBf6^Gn+L%GCYwltvOv5cqtn z|5HS(=7JQ3>siUCKI+#Gx%%6sEVQ2N+aYrI^U4)Yt$%cZYia#5|@j|2`nOdF-4=+{l065x!Lt1Fjg`sQ9PltU&s-yUyv2hEt)ca@^=-%ase z<|1%(ihuFlZe6j@ERzF**S=t2IDx-Z&OQdY-0uoMNp%)I;JPtDETU~!TfVh{h4l$1 zQ@wx@@K|Vbrt$1Z=VcOtgZwt+)oU_3`S$7U&Aj2hR4L*^UEXkEbst1tY-2NZ23sZ4 zBqnLT9{36HesU*m(m3tSA%5Hc(d(UUQa2VBP8Gw`U_0)-UW6b(bUVJXHTUtG-Rn=% z|KaN!!z1msZ9C|&W7}3I>Dca|W81cE+ZEfkZFF2QJ9avD`qsD4+4twVW+bB;0Q7=H?=zkLh0?Y@BOL_!2A`Enoiep!6V`cNK+wx-MP~BqR`=^OX9@t{`N+m*@~hUco{7?w zszpL}p!xLM@ZDV_(lvyUgzxu?e%rGpodO9mLIK5B#A@THuogsuYyBq%9$Z_YQ6trP zA<9X?K8@?uZZD?dL%Y($>e`)!4&ZsFCI%L`6_+#>TohlhJ`mSoMZ7}MsG3ZnTYiw5P z(k~^DL)`@Q!EMVR6*=*nGi$Kfw7q8~Mb@EHJ3PHS9P(-eJ(iSA>}hVMwTR||ub1ca zRs-d>vY*F&4}WT$lU?c{rnxX|I!_wchrb#xS>ulM6Fyw=^a!bnV#ZQA&8-8AJuy1hx~tf0XTA1zZ%3oc?zP-j=qA$3OsKE?p`wg6iUCiloCj8 zNBwDbn5s=~hc?b+V||zI^CswBONq2=g>l%eh__o{543%m6wP3@W7SgmTzA54YgP{g zxyn%fl!@ZJ3(+IB>vG|}@H0e1I4A1=7#B7_y@;zrTebdZwrk@|8CH+vJUu#9c{|(R zV`@ZdBQb0rW;8E%BYL12k<@q{57>hSMM9MA;T=yXNNX&ey2uQ)JLE_fq_fG?Ck_$; z5O9Vj8K&01eitoDOLKqt%+jaYjUqE5olB7p>b9GyN2hQCum6X&=-A zy?o?8)bAvCq6Kt+ju8yM>}S6uybWC^Iq%G}dwPwC<8mkG0&K=7*OT7IWAgS!=65ojn7wks0x10xw zi|0xfJBLsngYm?H4fgWHOD;|dCQA&IJXMU^6qcmwKCUFwD4!g>dswP&@E=pAJ6rJc zk|fZMBVmJRzH$o6c}wKo)r<N#At zZ{I0*`1kve3WLi;4De!$A|T)6?Q_$3JxIeu{Nf(YrAjWlh0CBNd_B*vkZ$zYcrJ)U zi@S!Jf?XYLuugHfL@$|m{In&PWxKMWka~s~C0tLR`p5zs;gfu2T0CAmq~ar(jl>rf z8eNxih#r;JT@Moj=I0$x*DSC%x$hNXXK}?gJ6!UIhKyfkq(P2|&}TSb8vUXp-u*dw zllvlnj;9k1$u85gmTfAL`EnYaby=FPrQsHK4?4x@lrU`PuPnv#J*z0Q3gHL}RISLt zW9f;sZtw=PEI3&lWYh+~-P|~q50-zc- zx}RLDXL!GJMl>~>k9$54V2>EF)`Gdmu|_C6krQ~7({4%dg{ z(zPxxK@Ftc7iwX+>b&Y{5tC#adY>?g6OdWB>`97T;m9m4EjB}1S zh&#@IgPxByK2z%9;qgFJcRfh&OAn0`=3ONWh8V|M&SA55@m6SAA5GMcsT@eebsXcn zcuV!-W+Y($eQ6P;B4*1H@`D-%NC#F*Ia@)INqvE?1&|R%mkR26w`4mo?dOPpR{SE~ z4RTfo)?49uZ2Oo5JW}h`>e;!$GF8}l_q}n2)VmAqq8`_7olkq)2{|tqnMsS zyvDu(N?uzu=`Trjya!0`k258hSLp5dXUKw_t5N#iAW>Sp zxl&!B>KavKO0aSL?o$+T_S^Tc$}*M{60$AEcC0Mcm&|qNSF%h$>?ryAd{;Zf4Nqub z+K5kQ+0vHmB1`!BM7XFTVLJf(`9-FPX!qwK6zN^+DcRk$e=t9Oyip(#of0DVqi7%z zXbW@5c!rPXFKVNXi>}L4u4O$fi>sfY_?_tWzp6C-u_p!O7U7j{{HX1@=G}(p-S08z zmJn)T0}BJ*DfUpcucZp$0t?SzZUaVLkt)i!!zH;n)*5WMFm7w(y9d2~&j-o5pY#&| zNy`LYJW>NMg+t;2c>GHgu601m^K!^emK%H2uw|~%T4ys zDm`)>tHrB{GZL!fYLZ}D#XfRqEcF!=qa;+c$4HsWb@jD&tZ7x@Z&vV8*YXB{`;eJW z1J=t-%Bb$IyeLx8RlfE>x7F}$`phVEQE}=$S*X14`v zGF|m0nF{wlHrA#Ofo`QRTc#yEu(*r@(5>4J_`Kd10JsE48vnSZ>ps`Mi{&jpZuOCHzCTE5HAUr2nKx^O@`9|m)O#`gh z*yt;BPVRJSS2v19kE>&Hkm4vWt8n+K>^&08tQ1UzcjaBjOQkfw?~WKa^YPIU)vFX? ztO_BVGQY3rXfEg_5g-G1$EySc!-gbhX3N!&%FY#O)fy|($xv!;Tq^;2>BB>HS976| zu72bjOqox=PSU)%2R11%sXO)&ajG(1mU?KY@-rPJhBIo1nrOD;d^X(ne<`!Fsikb0 zP&$wT`3g>v_e=6j=-<0u{7@V7^_EH0Fvm;s$P@TWKOq6BpGruSDGHWTO~b_>Rzt{< z^73#(v-ma4>M)Z_E+OnW)c*W&%a1jQ9(t83jcVEK%H~ZP8+DA3ezVII760T2W))ca zsy^B9Ged7=t<_FMPT(1pfGk10+VJ{Xw2i})J&(nP^i5Umdan>tJ96Nl+maBH|Oc-(_09iNa=9rCRu zABb)Ezh>6p^Y|O0{v=`QT{X^_3FPo_Uh_S_OAlF z&9o>L={Vy6eGRn&g{~kg?gF^CkPf+C#oHl@vL&1 zvrqL7$~|fInnzU^>krF)7G()4t0&ZMlD~|416xzeeJCXUYE6tGaj!v2G&@S31hsluy}z#@*1d*OJ%VEQcon4dpX^wk#+l zWF!yhy)s8qLn(agh_}+#G|ka4C9c_I)J-PHKF_}talaK{p*ej{PD+>4@oX-fj<@m3 z{W&p~|IQPqs4Gj-Y>pwy_u`64mzq_@%Z-8|LBf!s0Q@l5cmQ_mNmy<&%Fy5c7Vhx= z<#}VVD<&fT(0X<&(evqU<>Lv)e|F;M&mw>SPdpZdJ=kYPcND`E?DHe~ex{5vf*x4_ zb#-kFEUZirNoBpi$ zi;G#8rh-M$_T=7>fwI+XNsBs9W>aSZqO7v9(QiFisyDt+ za`HU^BmkP8hE>NzHv!NELz)1tyf3jn1|-k}DAFkLfVB9ZFPIY^UknB+DZ<($R@>_! z4q+ooSJZTK?y#_d(E|e+lePH==Z1M*UD3BwCP;*Yhxf)QVdjRg8+MWo<vXX8PF>m8|%-^JeZ|MjQ?m2CGL_+$Oh$wJ{G7(QkH_|BId{JsSegUQG%HFRZKSFy?2>C%m6^!ctj zgJmMdkQXcV@rJRKb5oDnQ>s+MO}mv0=v(}0q_3{=9l0~=Qmq2s2qCTP*&!UTzYT6? znuf~d5_ipVNjBxle)CB5B}tN7?P>+=4pgt2od*?N--j%!Y{KrxHE&4uscZRvcO*}$ zI^z2sYcKdmxa z{{?f9R?a4+#w;nWN515=vbw^KQ9-=AW2UsCbS+&A4L(`Jq_U^(-{GKtdbGVQ!2r|B z7n3Ltt&$F=kR6|q$u(dlBtC;Jw>V+{@bYemx1+xF)8JTZy(puv<^H|Le7e>d1NviS zRoTEuOBbA1s3`Rvl6fG6q`IP}c6hPnIafpwUvQ%yDS21c^Yd#wAUDj%BBisG?im`W zF55?>qtLU8X|w-1mVw849@P3xBY}x|mt8zJvsjh0uPmkbR^Z#r-g%#D9B7>d-Sy}4 z&1hbOKU`ech|WIa^F*rIRB@McSNz<%sVZz2u_B zsP9fo)v7dT)--Q_#W}-$0mh5rHv5Zj41I-TiN&+NDy#cyB1@XRlUu!nw%DIVmD2K# zn{Th=y9bq06~l(34RpoCZ`vyX9kTy|sQjB6>%See0$v33w&-_c3clpW=}=haZysgF z+_Mk_H~!&xxQ5ymiu4}DM0xT2a{T=a@Ij5Ds1+Qx0?Qt(I4xxqwvL|$CM_bAwrZk< z?0@T2RHvHn?C$m@TS_Kr&!@Antf?(4P$W}w_H#>Z8Od%N)Jtok$8WTwNg?d`s^`T2 z=v@Bh$6C&yB&TvoSSM>VhvfBR%y7=dd`yanF3kf`CWn$8_ z(3OADuLH4a!L++GK2QsCwr&n$xTCtM2_!VoPUGZBx)OO*r}f+!CF}a)LbQ2*yw6IC z8yGF(tU_<+VgldU02;?On`|4A$stiuRgHAX3@h!_=^qFrrDdR@(i5J5JBcn)8iJL+!@%;s?2(Fpx}{=eO#%l8cc*Dd ziWb#d#=3@Gtg!lb>+^3gAQ2GP*ROS{bK*hHB_Woeul=|oPi(TTb)*$jKpeNwhPEAkB+}`1V%kOm*Mh6cul$DvNwa9L_C6!ZSQ zbN`qBWRD4n{H?C6u5F2jO8c7u1=btCNs)=eY~SHcPSqCAqH2UQFMqB#u>3wJYPyOX zi%1&t=->!*-ojV!(eAWTbP{uf)&6yVkTEMh4;pnpFzs6qhUfY#S7y%q*e{WB#T&RA zI2tORT++3suLrAle3>%iqyAM!j>jTImXM54kf$!N6}WX7Z!KJv4KwZ4bPXq5c;5s` z?o>KB{N4YzWA=ZUGJoj9PzTbGu&0}L-y`_2S$&?$ekPduv+ekDw>jMO9JVRbW3tfT zfmfC#$w+>`Ro)^M%B_mbby#WCEavmJ==tbMUa`MI4n(}<6X)T$P}{u_)v|PinlkdC zqvxMb0hw^pXg?4bq-07}$eiTgoUJV#o1eyKrHM~sSsNS9@Tv}F6w0tsj=SM2=@6Xo z#`Im`|79klWK=Vm_#=hO7H<&+XR%&Zgh(&E2cbGDwf66>@o(V0evs%6zzQAg&DXma z{I}W+)85u#MuOE$ZZ|8c(cfCWXFh64fH*1@)`XBx0q)SDCK_lh;z6}e>UqDAMrnoE zZzAC$$8#Y*57csfXWAbO|D0-EW6O9Bu_>LA_vPNerSwkNUKrT_%D5q*(tzX&bofOa zA=~AM04oF|9W_ZqM+V3U`>eE9E|UPJ13D2_>^h==5;|>mffU)fy|w$&gp(n>@|JZa zB7PVLD)fUXH;!;aR9zf#1m!xTsz6d+(GhT+S(v?vsc|YhLTJ^}a^?bG#yFI{exesw zH#d5hA~^$ygYeno=M`Bjrsk`iC;8B5 zX!uheTN64<@k~mO6e>NG;hdt%M=1y_p3(w@^9cB`f8eQJn(Ccg3h&2s zUpm6s5>gidZ$j|O3aSz#YNSqqg=`4jH>i~LaONi)MCS9rIpGNv6%`Qa##pMb2cGln$j|k}@hT7yyr=Mg%21ms71~nl0b7)MZ$wM-hoAneGb2$WI z=F24_yJrOCTPtT_4bk#zZJvN*Wo>ogsllLfiEY^?%W+Ig)E$xZ@^;}T1XJOLNB^4S z!Ij zYZ3rzt|TDlRK$(5rAYl>_H@bjM1$gi0I03~wYb$KLD^g|4#&sxO@U0ql% zSK9#tnqjjx3$?|wsr_Z7uuG2l1_3gC7>eSS>{=(;CCNoHB>nSpCQAC|{=iA8nc@hJ zn4ca#)Vh~{uMV*A{!VFr_3ln0QMdxGvNzQNj;F|-fL1=$i5^tQ~%86^gPk;h( zcML@Zwfc0T&3>HyZFLRWmUNK7M7d5m)+kqMCs#Irm*I)|clS@tmR6c6%~!ZW6vHO_ zL^~268Uga~8D+IHZcwI%Mc^rn{^s&r2c-`Yaz zqSuh{%)hI4x2&r^m&-91`;<9*Z5OBQrAwaEJbuRlt@Y?XnrmV8tg}(4)2ka)qhx= z{nOeX3k;k%xk?!ghC+;mBHHwf9yQ!n=L z^r*9A)8qD}){LhfV=5@)W43lUWb)kx`8HC=Rs-W@@nZ_Rsz@!Z&wj=*?4TAXt?bqS zYvPpmk_EuM_t zjIJ1%5PnRu&oBbPf?7rlHcx!&&*uQs-rjI2xJmbMb7;#2er@_`@gMl#tpJyK@13z3 zD2ne~FJ&?QB9QZBUPi}3YDWvfcwq{!vem)(BFx~-PaL-gdB_Y!ai%h3AV;DYX+Uj8;@^-W5Lw%TejY8od2xS(1%g@1cODmkITsk$GQ#49Et93}*Yp0tLxT%N_1Pm~0sum^R^QiH2Fo zw#DIag_}qpEbGJ1pE7VTFm--&deKKsBz1Ev|27-;S5*Y}7p8%YO%0hi@rP?2RhRvA zLRzf83l%n4(L-csFDb6f~TUn4a56O=ohM6g`Z{5*@T8k$0LI3RbxaH=+BpN-f{9$n=izz1q>>&(v9RN+2`p_BF^rUylzMs&tz=a%R$C>Kee4&B z0S6<>A!TPZ{p7)qW9?0Cclw;&(&@p$?1L0|Q*72mT&9t5H>Bv=rlMq@nfB`*5+M?K zD17|t9TZr$toMn0@0saAXKO$DP3K3*@=8$chlK~;YXv@?AllEI zW;-0KXRZGSuv#=(|8D=xKgXmymLuC+rCOKHE$c`n@bSPzlx_?8!FF_9 z*ah@mtwCpH$mC69i>j4?7^23xp zqFL!!CgWu63`E%`h|xuRnDDC}f>nUq_+!ebmjg}u?9zlxgAV5NSJmM|vF5li&z zGF~kb4#CM^JI7BGM5ruokpvWvE-y~cA6|#?V92GMT%XdW4U*O9*96y>uL^y5;^cL0 z`I}+jTSO(9tAFXocJ4G@m21eO=|){Lpe=EeEJBLsxDdgq$1V008k$41{^DWngq@|%QTE*Fue_5h{=*azn#a5Hy z%BC7z@ufklL;2@uI;!GxXHFmV6rQ&^cNU)`%@THzmYhB}! zVEvi>+F;w&0GL`>!`|F2LF@6?MYe)m<_6E16ih-n!(u*@TIlR7M=zl-*|Im^reMVF zODwchx6W$Aqdw@Xe>b56e`t>@DqoW+Gmu$jwVRgFHRQZFqqNAdEjnq(fK~Ml!zys3b z)l)%87p0ieSg96F$9%R<7iecsZc=2r@b-rR(EMD2zqqzR+r4A_ji=FHwvnw+>frp0 zn5i>fGJnk|5KS&c+3SneMWGBqC2zBs`&rI=$E-?H*zDz07&(3mtrE+<>c1+b{-^i# z{R6Ypt@H7uqtQM1=c9QE*Antnyzj0`-EEa=BE&_hv&I0m8ZuQ;#~RbFAAfpfYE!JL z99h<5@HAUlQCUh&hbMVF&6{LHI1^e?ToV)HFlF{PGXxiERPHeLjj z+|Q9Vua329FJ*p8>M_7umoRtR5q2?^nL;D7->H*ik$Q3d_TZ~rd~PpCcDR&29V5r7 zp9K;v6H_V3zA>_KoF9U06_-JfvNNm|&%|V35m)Q5n8HMH^wOrxD(=D6kec}tonXaB zM)+H+<#ymkw~R#MY-!pncheOo#b~jlUpzdN-U&4~>o}zK&VGX`ILWYy`hZ88$xyD$ zFSg$`Kqo=7mfvtCZAp@lR?WH)9cu^u1}3JOi1|dEI~$#3kqsJ;m?-_g?CMqCl?V!a z*Bnk%35J276L)3&kX8#u1$*V~@(3Itb3+O@dUu!iMmc=k>MCY)sfj4H&)djya#sAv zJGuf)*a)Hxit%Z`)YT>iMJ!+Ais$rrdBRQ-cBU{O=6v+IglyI*%;@APU;ReE%TsSY zh2a$W1J|HJt}$gpGLk=$T9%*8tJMrT%T$!`7$Gd%|L`fFGZt=t)P`&vz(Aak2QBQ1 zg$0OjjRO#1(E$Hd=kza)|L;zTK3f@sHS4#_`$afQ$mtM&hy|ybiX(*)YZyux(&F=V z*Q|(~SYV?cD2PZ3a{vLgP86Lato|qZ{z3r3=<)1j68>{>A|MSDW^R8pK@)j+xVD_b zr`4X10^}?340&UFwS04qQo+f?B^2DR{u;_WY9wu2WoWXI+Q@=DgFMizZaj%=IAwDJiZt;t%a(Ed# zINw+E8KV3vBMg(xY!;HtraC0UhjlixWjyrm>8l;P0vMVhasJ`7Hf6Bs=-86X zj+j%MrPCWRWv^acN~(9eDhzK^%BA&sR~G4w@xWAu%)2G}5Vm~}Nh zeUu@$cRV^{aENpomL90>K?JMnFkX)%j0m!UYFIR82QgbLwEI>N77H0VO>dP`Kwi@D zjWqkL_vu!2A9~%1-9ov!E~MVlJ(;bLX4rfq=)L3288uj%FgRU&M7&fNv5;a#z5j1a z##1$NnHoGNJDgawVq~18>3lItvn>{-v4%QNOC2}9NI?IOVL!aF)Qu`{$}Yu_U@#5v z#Oio}E<5aR6hDU;ZM?br);LT*2PXk_*`6PK!?=}KJC}wB#uU}3;4>p6u&_=S4244- z@b|da^Rp&S%dE^w^r@EWm)wqTf|kqW7%s>28CzZ+j0o)owNJbd?RS@Sdh_K&&X(Kl z7#IhD`8*Up^VwPc`Qpq>x(jtb{}-f7A&J%9T9Z!VmVG=*le)f)NffO%5iUY5U*wQx zIFrC>$-7(ur;zx>F`nGu>xZLy=nyEF)kR+V;D||ck`HdNmg29McuNkTEyU!ZQSR~W zzDF0`i8LS*e)70Rq67xB`YEgH@dl9WNvl+~BN!f&<6It1UuWHrxh#z z$WL(LL-GlN{z#@w%SPMb`6Wt#lag?P*}6mY3ry62oZku{ddmxU$*W)6pQ$frz!rR zWJ*wxtr(>$v^)8;yogz>$x1ftLG<=!I!Aacq!pn!DQp!9AB}Sp+Bx|k8QPC`#CY7o za-qE#SrA*s{?^oav$~KbmtkbrC~@e8{>7Yh({V;rx8_)P((%i^(5DH^64jRd3G#Hv zPfzYNDVPBGsQqziNdp`xA0gcSUYtY_IQ0zu5+8SgO&&+Z6jfDK)g)<@y#gmk5pMuf z<9|@Rdg392+>%Nfuil>@uzz+nZd8%VYnIwM@IRAaE$ucfJNF8du*-i^~G1{c0R8DPSIk!5VxwDO1!NZ~$ zIUbuT^)mE#q5^re*t5|fa}}IWhX$JSpnG-}ow4M}Z-@7EeJduFK#vo9^GZ|ax9?T@ zp61Jv8IH^5G=n!9V}ZqmQl&AVDBTr_F^>KI$m!OIQuW^kt5ubmP7D&6ATYOcTZ0F-dv77V8eSIS_poUk)3 z7wa7B(O_|bD_Kh@-58CjfI&GvN=hLB@>_nBk{3;sWaYRY0R!aECAL?08Y7CBPJ{3! zp-t@vtEFl+iHG#VK}-uB>VhBAFFSg-C(4Q$>O$rGbDuUaswU&>w3R8IkhNY8pgLYs z4S+R9!B4bWoL+1s;ep>8ko7pB+)BUWt*QmO(;4GQaHzmyIufr4?zY#-b-?LHMnE=H zrHN2rU85?yJv65dNHYt(&lqOd-yQ%1L};)ul4p;u7?~wGC}eOm-i<6M6J7A@Xfvm5 z81XhU#bfcvO^ABf^-h05V0x}EU1H^WO4eI^`v^5qggVb3JW#s>I0zlaE4-KEXpxmP z=&Gw)eMJd1rda<9Wj2B~si6W+NQ_vUWsk!|QSEb*M`-+LL~4I~$|vKRs_Y;b)-I<|m!2XSZ`icrOi50@yrzoyFJ2}piRPqZ4ey;SPA`;A0)7TGd z7|4p1f!|4Py@?)9>wHPW6?fnCs9P3hk##K7{{uMlV}Z=_a7q3z3TwwuqHn+yI3q9X zxG#gup>&l^O&&u!zSDa?yR|3W#|D36W?00mMcQV%pvy!3sfszKTmxg!;XeZyhAOu1epmup4yiESH{n0Fk#K@gk>8 zvDksIR6iU-u<`43wa02H&&8H!{QF=Etb*BzR0kB}XOMkWrGR=2n1CD;(u7&BdEMGs z9}BXwJ`ps>*whY8L5n}a*jfKlFx_gY)=WPEO>__$aq|u_f>lF{5(OH?n6#mu3&;cU zXsl$g*iT~HL)E9to6l0CidoYdBTOGz#nCo^ITb&sO3Bz@9TBC;X-{aatxV30-B>t43&sL^1Nb;#|FSazYnLJ!MU2ezPO4f4FrH0}^n5F-FHtvuL z{k7NPzq*47w4FhM7$Z6~dj4i&LFY*dr=l;RV$W)k}f5@Aq{bG;UFzem6%ow zqqD=NkY7?s8*RCh5qh}OCYVqJC?2u(Sm zsEwj85J!)v>b7{8NBL&L>BHkj;KO1>!jxI9pV$HmLW5h!hPWU!EaYZmkbv!h_vHKj zX`+Fb+-zUK33Y3PyUO7;L^i*2T9yCDe*Eu`_SdAd;gV?ZA-9vzfyDsZOIu-CnmI}? z5UTAlUcv(i;OxKop*~Sw99<_BG>iqqVnu5PUK#!#5Fit{m`r+JQqNH;DS!ar>Dv zIXjJC*pKP#ZWMaTzRL=JDHuQ>X8xIQIM@j}+&Yw#*- z>a2_P_)?7#-LIF4$%$do8BM*DvKBqxJBDU!0%4I_Z2eL3lwVy&tEBW`^~&{$GhFm< z%HS<+l>P{)RX9#KO8ViE@|yCH{hbD$Y=IWpIKr*>nNHisPDC zD8kFWok37B-yn3TyXCPS9n}MAtiGy1X?JB=)yX?9dRUa$=Y5uO}Q4-#8iDBt?gJ^53pE^N2?Gw>r?tX zPKXrd!(v*Uo*Jmd<~aSSAe(IiGH0*o0hzM@=y{bwY%)L%S?VFyi;+9vnP?=`I?H1K zDNkb$8tM>~4!l@}+?NZN*Q@WUZi-?){x%8?A^4N3l)(YO6E6rXkmYBc>&a7&V!WF1 z3-ghRYOF~G!A%0NGj76d!%$4cP#Eqr6dMI|{4Z0}$&5$+QTBhVo4GsWX|_Ml@>HLu zDps5+gPI7(S@}9(g3n1yP0NbG>Us4+VO#Uiy=nruM5}k9HCgp)mQ=h}ejyjLOuL}D z90P%WN3ilE;+MmUo5|?fw5DT=w+b|eN3$`8hgoHuH_!$Jlhm)GdvB@2N$2J?QBN&r z%mth5W@kZG!yxA(N_y?|Z}Z9IXJD+?>i~#S`Fv!_XVf=e<`2eXfK8dJI0{vFL{7!D*Vm<2~~w z0t`$%&JC+=yT9|xoA2w3N0goQy=@RTm&Wt?z-YvKhS#3FckCcroF}xX&RD3!$OV$N zNX}MCCke7Q#jtg{*{xAc;A;PN3nazhTa{4J^gho_pmRUnFj7ox8t*o}QdYc1{i$duo1Nag%?G*WS=3M<$Tx^!%E^UbDe4 zsc4Yyy66H>vNvaiO-)75l!7;{&C7}gcf7aHhgAxVV!Hi#XRX;|50N>zDGv^)OafdehMtgbbM7YgM>xze-Qy~=rSxw_m`7@lX(A2X%7;*F^PRzGJAC+ zEX3Hh&Kq`8Tac)oDg8^4sIs1_9Ipn_p4b#SaC|8&f7BDv@oXu+!m>$Z%+A77vNa{q z@fGuXITJ}r%X2D>sdSap@U+BqxtvS2?fj$J@sO&}IdcWq#Jd*W|aX;AnK# zHt=S6I@`{clAg*+dS0tETYAxJ&nZ396Sv2b@+`6Y(r>)F?<(l&4o0HHv(Kb2d&91i5xtUIR zl&+m|8gEIB*h;_rLec!jd_w6U)xUQPpBI4onOXZurvb>{_Hxi z2gf3i+zQvv-TQ%Zq3CF73T&KC=L`A%LgPndaYx8CxQ0i`;Ym~#bSWmk--4tT66;TR zVN(1(>)ET0KPa9ooEn}Vx9$cRHCqj-KwxphhU+d}O-F}jYLx5cVn!@}bUqn$0ZoAq z4BId23XrxzrX)SlzOwH|F=eL)x+dzY+V7(Y-=lcn>kS2hf21kdt3q0u?rKyXga22a zPaVvTP~T#;L-*ThXc#mWVC3zq!{G&jPg_TB`X46==+b7=q*q7Bj^CfCXBX1}cx@h> z?*;WD&|~E@&{Pum4qs&Q&#t(*PB-H_*dZ@feKvWgeRXG4N~V)CAbR&Z`Zk8RMw_>0 zVck1c52;?1ZUdS4PV@+tO9|s6+Hb8WLW(mUv8kq!bQ^q6bsg(}_JO`&N&}ldf zxCv!13oz2AE~M3Ry|E3j`SW^6+lb0$nZcvG*VIhcM$a(6n1=(yd)=mK*V*~KdcCb< z&o-V`&p3u+=ObDX5})wd51lUGq}!-$&lwKMC6%y@)i(pa<(x zBw2lKr+6?MC4A>z$ls*0I750ZTc*${Zr^x)%7Bnu{+0&|5_2e|s&Au!W`|IA5v5HG zs!K1E1YG=7JWu|LwfcRFGAo4b%kSDz4EiLG1hX^Q)76!=yQ@e;Uq#XTC37yfs$ek) z>;|6*vC4#cG|EO%vEuCp3k78aiLk^4$M+dzg_Yr>qpVmeoBeE1*s{1PH(p(7Cz`(2 z;6lfs(-COf`;K|KP|K47P+fOvnh4I}Y_ZL^GBsr%9vN0NUbfx;^^0-IzCu^Wr{bD+ zm6P9-JoN27Q(j-6_0_$arOn8rUD<|M?Igg5yi)r-2>DZNO0=50dm8>I6}ghCDW=QS z)+Rq@qszr@fw7iJg=egf#%=X$1;b79RuyI`E`GI%;s6Hlxwfn*CCOD zurS=gzOhmglzw%H)YLErW9oO)z93>AoXvOvNC)dwSGr$Cn~=dzPr zy|47QjnaT=Wo2cVhzLnwjgA(jug*Rv2}uHI7{#ntqU>RbAJ{|dbPj(Y#i6c5U@Eba zPeQW4JT$}qnEXX$hF0XFF!pp%^N;qkxtIMPSj)wVl#SbhLODfaV{(t{#9ZOn;8xcQ z?zJWhyiJcIo2>1GdX5?>|n zL7v~GN-FFQm-hGCYFPGvd4Vq*X0qG3Tcl==IVOjBwr!z#AQ~U-%gf6nv)K`fsw}cQ zA`s|D%gkpnRu>htePek#0P>{~6meYdV(C4E4WWQXDb0_w7JO#gE%Ps9ddjbs8cP~# zyZNIjnF8kYQ5o8$JZ3e1lNO!?IOARu3U97PJzeRoMl@DA#8MD*W%LMb)lXe3fO%m! z@HMjD>wB~`!N6#^kCC`VwmiRdHP~y|^b(_pp3FF%U)7BDS;v;WeJ|pqOyM1H$HA}i zj`yp1Fr%xa%e@sWO3j+ci`0%KTrJNo52=VMWObG(xzH~7iNcZPmy(PxfkQ2zg>%#H zo4u#%c>jPD@rg9za@{vMac|*?t0MBIG4gnx&Qrnt4D%*vJ|ziiAy7_Du~A<@*DymG z5O+z(xntS%u@iD7&O17gyZ-wc!u&q58eirYG1qPL$;Fv%Z;=RRn(!pMkjw;zQYE{$ zz)tXMKIRVj1CW+S#A8+Lo9%>rxm!l962{n-^`mWh*i|&=I*47yGH_IQtm~pJ|PNySb#Q%G%dspt0&AAPp>@`%NBUl1;)2DmkJV z4-oJbMCgBL7_2s2nIHcAv$`!I5AE2i(-6)7$Ge8Nju;7veVz~#`7N*DWmuJ7QJqoO zvp%j`%H6@u!Af-9?J|#U^h>GlyH`SOEmQ9p%CZZKi-{F81yaKtQsQduDwgw)@81hR z5l^@9?j(-^4<(Fsp+Y(o5L#mjsw}72o2QG-kE#0~}R5mpJv)O%9j! zZKb{mkU+E8PcM3i!Rl5qBl2by@I9#HR`7j&w|#benep5D6 ztie3Me_CENQnXgMf#Q~2el{}f_>uC(S^>J8@k=t{gcNIo7ZHE$>p{i{mr$-t3QhXT zbk2J_uXh}_J8QEAmbhInUr=O}^nvE6NK0ZswWS(XjU&SEEU=TgZmQS3@v(gq=8_LM z__02s*lNjauaq!oFEcHIXhQ5?auiCjTmoiOFWNQTK;X9%ENOH5i{W7k`8ZvjvZ5l< z8i~7cc(Y`fTYN{t-wH-bKEKo{jzf*KMbiF&tWgV+s0uHPlro~&*Ck*;U*fG)qd)bYPx!lT zqCUqeq-7H34g5pRS%q`MF&%A1_vEzKYQ^aA)3FPSD)GkW7*74x*QD8-Iq z9`?|ZS)!cq!JrNoF*-WiOwJ#XsGBjK1m|eek*AkaiIL8g{4^7{(h&kEyLQ0%eo?wr z%JT5}z&T(~G1avo%B8C+AJ?w>niD^d;HBy(11P9;yR@PUJYt}1I&3fPvr;sQy5l-- z^pAd*dzxjcJstOba+7HdMjJ@99G4yJhIw zVw63ox$Tb+EHB6fFu+66FExawy-#%QS|H4Ko7tT8zQ@Y^ZivMB-9|0qEgn-y5$kas zHc4Xs$HK_18V7_#)(Qy%5o^5d`?@GDm+#lj`!Qo!n1Htc5wC^WIe@;} zO9H_^#-~84?!zxOU#}6!u=Q4!l$S+vn%|b!0MM}B%x8bK8QRF;?)4Nmre{HGs{F`- zSXEi);8H)N3qf;gaEOTdR)n{N{#cF4$zLXBX3Xfq4rKy8u7em*d_98Ma0aUOh7nV> zr!qd*rK~B}NADduP@*@CudioD)RIn2PNLB70eLy|BWF?wnLL+sxZ|l#mgFW&XFApe9uBU| zVxc5?Le|me=`$WEnjN`+?P$N=yiQ*|XQPp5KDQb&MPY)6&z>nq|*-JtJqDS1qZcsj;q^n6k2p7}iAfN*hEOb`tU}QmecCK0*S>|Z;m0?2S$=xA=bls69QrQy3lG9Uh5hYDIDEVg8QUw0p(c2Q4|j^wd9!6Rb@bD*e!`4=imxk?h2!rU z{`=qfbFDvqRzfk|92|a+;BGOpP9b}~vGf`w@S?Yw+HQ5De`;phH z4WRe5hwgdbV9}>*1sqwwhoW$pjD?M#Sb(N}K~@(t+2d90-AZq-nnK!Cfs#M0CI@5* zD`GPcLrx=ISXnFPDgvcc!6SvIvB1k)Xu2ruThOw2K_SU;bcFpMDW%#E`wy}h;Ioel zo3lYZZn>CM`CFlWIk~w^o;)lpiJV7La|{B@KdxcZ!fjlo`G1S|H>*n$Bmr?u>ZD-a zF;;pG{R7HL%t_CnAlek=IQykP7IU?(Qu(u*;$Tm>k?)~nRGw?O?f0giEiF-|S&bb$$&7xuS45M55fFS;LdalotMP3 zg>@_h3$KKXtj*)4|0ec<n)?Gey`JIRd!pl_?~Q z+sh*#W&Fmewd;it#h`TE31+ItGy`V^)x52J7lT4e7y-qr5 zYul^El*VBE0V`ct@8StjPw!l2Vq_GQS3S05lyumvZK%OGN~S*2noO}7CS5`&fV1To z!{vi#vG0T)1`*9*>Q0UV(#{(I$y$hFI;Y+*#6Sdqt~KMV#jm>_#4P2{$V2RS;B4wo zqjwdGLDZinH$O}UN$w3EzPr@S$S=c??1{^{6v!U7*lRe5^;)oj%4K)J$ z+2H2#yY7}iVAnpbw_B{^QXTdPzrwGg`~s=X94B-z^1|NnFjl<)bWQFfGQ+sWxI&{o z?`h!5Imbeozxk`aWGDRADFNkX6@iKWxoQ-;WaLBpaBLHjlX~Bgc#CaFa{uo?i^8MH zTbQlI7-hc+Dt?3a2`BkfFzI^Wq8#B$F$ITFXRP_~IQ(Tl<7&CT2z4F4h-wG>Gu`OA zDU&X98G1OWmYT`;^KRpTi-3#(KJ+Jcq1IdplNdNbj3Cd|d4bV$v8mv@?#JbQz7qdR zj!8`PxR@p+pwiNhYs+r;q0qeByu(}fUX-}LS=?NjAHdvyMOZ3=C0-buS6Z_WVb*6C z+w_D4Im#K>)C#_9l6n1f_cP1|<2E!D@^y9Y{4S?A*L%8Jb+rlaYXUN9eo5o(?DK}4 z!&ki!UXNrsp7$1(xag(l4;t6d@r7T`e?3F)KYV_mu?nOvMFc!486}Kk>W`r76cJ37)d;oQbDQD@W-*e{zFC{ zD4|9^kba#Tu6aBiL};AbH8dz&+L`>ROC3RVB_3JgsQ45np|7YPl6u4iDaThSz_AlEj$AZ? z8hD{?)Z(6%7~X4rwt{V&&VvwAGK|Cf7M&q2Dg(0#vXuQAMp>bhaGu=bd6+QQviQ+| zuc*AjGDoJ-Wu1v^v&OW8ba9&4B&U9VotCLat8Qpoo@xBYzsqf*>B`z}*1c&0Epdgr zHBTDkNUwB1_tiOjudQB$W-~-T)!aLQuB*w8ORBgN%0<}gt;f#5e=q=|36`zxx-I*H zEqfZt+H!eA1RmoOnz`Kn@NcS!h1`38|MaRXm#)LNM8v#)p6w+@B5UZ?AjW@`ZCv5K zntlx@@w7H+tx4xFACmXtYPVe(0CuCIr~keR8O%L$>)%SZImI{h_iEvYB=v!y1PbS)+ZhAH|4@yV;= z%>01!g6o@NuA{RS$wKs9=GjF|;w#>{005^gCKTu0xog#xWOJl=&?9Nr<7E$k6A5Hk zwYh0`f2{-)O(=0RC=U3YGKFB}WWPFTx4u<4sk=R^M5 zqO>e%@ZxfkI4nZ`6=7Ad_3OL?lY}$L(faOuJ$7t8l;}cTS-C`;zJ~bg)kxA$;0w9T z9aLbQS3Fte0C0o~R(x;m{z_e3%@{Txx{IT5+3}q8EU0~u6Bh!-cDGOZ@i{Iy)$MiO z9_OIn;dd&?nhBU6Lwa5iOhvy?o_KPt`>f_sYX6Z&n}B4zNOuL?;OUSvbQA=j(q6d5 zgb3I$rm*a5KmG(|7VRBFM$@%9=NerZkhxlwMz~BIQ8vetB@LycYr(~tQD)_h){dp- z2I|(%%W6DY&rvfr9L4|2U*sY{I{+2t6c0l`!iN=5Dhy&s_|pGC__9sONj4FJX;7BU?Mcn}cw(t~54I(IfFuCy?IlUse!SeN zGofky$v@DyIu6}W?Kpf-RIe6sO@_IbJ1lX#PdQZc@2W*?y31{ympzADa{(r#=Iq9pWr6LP#V^lH)>SKP zfu9bDbk=eTz9U=oztnA*v!`3vc*rcf9RB0;9%VZ}kxIQdW)~HBprGcry%gbxQRZj& zr0zV!%|&lE#D4?@p%6G$?DSOgv&MaWhI2CZj2ehv;V^dFAEy>I$SuWp97(UL+^Z`t|I8dv-P}cRy zi#K0qGanTAS$AiQMt9iP5l+Zo+(<;h`n>GRy1yGybttAjUKX7XkNSBu`17S~E(??O zcC>}%ti#(Qt_VU1a;MiVmm)%hximi;q9!~TXpof+E^pGl>VGShf)1N(v*VR{KUdhG zzq{6OKiix!-7EiRjkJ3Upj&X5K(?6@}v?~Qp#oxFR&<(+mQUZr6BO(LSS;VaxO z=f~Z?mbjgMj4%%U*dO(?hfkpAnWf&p+&DDilL>n+ieG`h-LuO*4OP;#KU;?}oP$(jQNuFK_nT{n0k_UxED#GgKU#QvR8}I*~5`YCWt$jVsTG zmGcz7xY0}ArefW!w@7h6!xLUCpRg=XGf!fBHi8n8vhp2E7;NjS-dJv|Md(19jUhZ` zn|I%}GtF%%MSwc@S(b#KGrs}AQA99>pNImA@i6H?q=|LsKwxUd zr`2Kk;l3xOI0Dd){BQuD4f#>U@{C?wAmm(5Cvumg8T!ihBe4AF3>0v!OHCuzCyycK zObgt~O-r%`LYINl63mrTq)RUtmfN9>iYnR>|9FnFb7G;EwYKY8q(rgUf1i2xeUhRP zTugf6tl{MIX_0mRa;!Tc9He_zM5J*xnY2Xk; zALQH~mt0HynX=%{V_3-0%lK}3t>ru z$GT1JA6p;3nIMtU&vZ*fmB!z6`gb&@h*s)Xr_@WVq1OXdu zbi;t%b7JJ)I@b@N1}?H!e%q+53SamhrdLGS?cfchS=+e9{V9={49052xHIG6)HbT6lCZf^ zFbA2axU$|$)XEB zB{A2%W_%3bnbWksKNGk=SJsj0nxMzx _Z4UDO|ekL=}1(Sd;F04h|agRnT*>Z1Jw0aMM!;+a+yiC3sey+o%ILf($-qpcPqahgLj0Hw*pS{>L$N2uj+9mG$Q58>> z%qh|yO}+o!9=1)GRYYCkKP`|b_J^i9q1ljDIQo)BL4rnER3`-f0&om_f*bBA`EWD> zrdgDgh5nNDBwr(1zU(o_!no2$-Or~1mXO|#xZHs{MHQQ(y5JqlreUI+tx82kaFiwZ zW$}An)As@@EP9AleNv|vl9Vq6-QnO#gH;cEOX`FFsPbmL`8E4tfHu)0Sc1~_w9P6z zDR8Sqd-Cq6by+R8>t`87siA`6LH^I-Zv5G}P#FKu(6Qpp0$a+!bBVr7*ayD26xU!* z{{y80-rL*O*^!Ol{*kr7!6mUh*HCwnU=k({Q}7|*fOrDC+#i#M3E}&}RS&N3ey%m{ z|ISI`iuc%mrXCVaYMp{G;qZ0tcuBsWx2@^UiC1}DcdhRKIEOhT^LnHzqZrQE$j!qTi>aw>7%@f^6UCxrz5q~TYEw=qHh#dYPlCr)H{-B8>H>gD1O zdq&{24XK_(#mEO`eE<~H9NR|jveU!#TLT$rtw$% zEp4;dQi)ip7-Ok|!dn?_9_~LK9VZPjT7>f4((HJt#3daR=_}S0f*~({lbya6hTfF98mgQ{JGVhDkLo4kV zETKEiImajK;Bs{>jrU+eMZr9yYnAx3*R=O>ZttKe=-l}2q{7=Z&rnsQjzUvyJvOxr zPSZkD`k5+2U36Am3MPwyBC2F|JaLsS|C>SuZPoVT$^1Y^E2(isSqsFQbJW_(g9$KS zP0SuU)5Rr67$+6WG|%=F`;Tu%pur zI*u}#FcejFlag#FkE%~9EXdeVc$*G?2?B4z;q%GO&a1L9rH!w<6D<^YSR!+2Bz^G=9cLkq^@m>y}6fWz_0l#5S0D*zqUaKhpuIkTm zni~m!JKK8xGSl?bl7{z%A9c7gkIw6xm#)aZe!(r8!UJIGFDK-5db<8X+H@}S*qq-7 z9{dl#-|F_3=L4v-y(`_MY?u*d8f>-Dv2hdGKC{UNK=m>+&a|&4i!#iS8rD(wbnUow z_$uuit_qL##Ko3)S?zK8p@o44US=JtK7GV0l9@Ha&GyT3t8moxwD>czkrnI?!T^UF zk!&JvXlV2qhtN9q`0q+Xql9w_tBuor4^sTm?iU|X{;-;4w@mG!L4}crmms}v1-!U$ z7{DHAhH6LZoa}wFQ2dnV5Q@27J)SA4i(;~*#S`+zxWIETq^xDIfON{lcd|306-O)g zB?c8M?8xR_RH?J@r2mbBT8qni;r?}L=i_B1%W}E(9K+Y+jjkLsFqN23uXe73?iArl z2m5%7Aip?~69>Kd;NE11D?S>v`&naB6t(}mMdeKCe?>N_6(SV#k6ttSn-(soQ$BM# z#eU{7Wu{tND@8x6OnVRy>!l}1DoO~biEDQEni{M&;Lh=E5s3&i$lYq%= zDc&2pkF}+Lraqp1z%nwtTMsVpg!P~N*xqyP*3QP~wj2+;wYIbS?y%4OamaK^r!@ ztLplE-gp$+zS-#4(C9pGYV+EqUOigzJMW&Qaq|7O?wN2qp51&E*ZB#}C_HavJ0F=T zRi6?1Kx67iM=}3P#x^g*od)oD3Hk2j7xs$8+jb})b_N{R}T!``&h zG1yCw6e5p z?(~^C#Ubzhy|9xGtc$QlQkyEtchkj5sYC8=O{zPKoxk^NZDc;gI(lWUWxMxvin!jm zjH+p5{PEFXbUdb8M#pab=~jog+CYD>>n>97ACo;?Hg3pZucr5V^w7d?18O)X-|Bfw zgZGj?&sd@-z#8L6G2b1LS|q~BJsCpmtz2;M&Onm5tihV0-kFazT*N`<7JqcJ&7AII z1`tJ0J#nR{lc`VOw=mP6c}wfXRZB+iX^&`^O&!E{7WWtppL@3$yi734{7zp;5g8-A zUE@TxccT1=HmaNUYBnpxBb%M+3};CKhSTWl*2RwDoH2*2eK&nqiPN7vzeJj{jcC;` zx~3!buqXc{TTX5Oq!5Psv}rn*5H1jPfP$Fq`L^Zo4xd>X%{_6LVuDW`hCtZ*7{cg} z=GQe_+eP`y$ zuD-{<0Q=&TpSqSE$lLGao4>r6@i|pDF(bqHz0kUpd}LqJUSXyG31aqsS&ba1=;Wx( zfNU)5$DQMG!B#ngzY{2f=-#N<@VkmP#e8CSMxS{?H}Z23R+a7Wmw%$GJ3vx@A4h!Q zJ3O~=B_O;EPbDvLH{$(NOI5d1wt|FtWS)GAB#4H@T#;p@zjl%jqds$Cz{wVVx!(>B z2+0Z?FO(|%2|)is=d3s%rdYrkpLN(RWk_=;@7QEle+bP@x$Y zRP^9vh_m~RhQ8B@j5c2GqIFLe&*t4z$aHGrwf+4&GCj44x#NXe+9~NIVvg+5rMlgc zX+P)f9A}#2si;MKr-`#QZ!W7A*zS_bEX;zAh84A;N$s*2(7<-=L3!{KWi=B@`ivD> zYEf_X4w>KD!cp1il$*St+%vc&xcLjLN-R0$r|i((W`I6*(4JW)DlriN3cnTQ*uMfZ+sRM+-yH7@=CyKSY@I|es@ZpA(L?w3 z7=EGE7GFV*ezd}S`JIMiv$$QU(Hg#*qiH|L;0Y*$<7PMTCq*qS2c!ebz1*-r(#El3 z;z-eQ)7e~epvLhpce+Q-)fk)BbUJ)zHxtK|O+dv5SXEuBO6tze(EbrGK72gk>Is8% zzfIkj`9)xYwfJoYz4tEc9y z?I+L;n-ZDxSGZb3U`O-iJc;g{)lFHB(g;UOd}`gRo^%C0#9O$1@AxCk&!)lk9-DuW z0z^t-Xjp48i9IvSzTi_8_K{*zvOcd3^Ti_@Ddp>86WGxayrItV;oG;mH=f{tng+55 z%!CkEuIi)f!!XBOAP4 z#h7T7T2F|O>_>1fKYv}+LKQ}}U*OyHn&160T~*T?G|$+h><^L{-4hZ6N3IEGH0&|h zF;ngzdr`e<>r11pAK!#x{~bMXU+lcm7dK4Wk2j}3%zq66GUI3R#J|k_vpIy>^6SWv zyyi%++UW0ifz<57dyNFvsrYDIJ&X5kUtau)b_=n9bW~%b`aPDdM8Bh1sIHm&!g&Md zZEg_C1M!*jDPl96RifTgf%Zps^QlkIT zLqHrj_|YV=a%WIfdi4OE z-ArqN)#SAT;;g3WCl2FQJw48iZ(M^x*{@5ZZ1`8R3NCD5qV+DL*Lm#F<;_w-_}OCZ z3ZnmN+O6oKB%cSA+msvgnR;t3r;{tcN0my9>)AVP#wzd0ja+QELwuLyvlO%+md>`jP;rOGtUvRdlD0qAmQA*Pjib!{{+oXqMQxk~<7ZyfH zh{Ua-nFr&M%y}M6B6|T4V&js$-dY3hM@jbg_4Ctisf=a*@t{^(aJDBL0hx!{fSxYK z7$RdVZpEHgl{K9POzOGsxz)lBhV}f8vy}KRLb|c-oK4llqVikbiZa$3@t7S<=9CNg zKsGqcgZcEn{vERGag#{62fBNq*)1*|Rug>1!Tr3JgCoWTs{+-}#SXx}Z_{&AMEEQy zwmFRqUA)|eI<2=6PE)k}HZNORQie?!Rj<%64A$9M-bVCHO}UW?JQDIltT*NYn%tX3Ho)sI1nQOM7I_u=XV+uoLfQf$7EAqw|azuKMz3qq992fMd)|0 zI_Ed@1^NcOUqi!Vjb!E|d5dlSW<^SGQDN5;Wnl7!q2QgYw0!;Wig&%ZS5ydvaw+gt zp|W4Mng!ja)@!X$HsQaaa!<_E0owl8|EjLZg&gR>J+SaosaEr2p2-^1;DD zJ2#AOFmIA%M3%eTcz0y0?SYKt2OWn`Dv52LuX~W!V_F7>2kj~16Ce|>ITxuXuB2?Q z9aSZZcc~EOe{fZGb@{GOCY3!bT(2>-y->kas*J(Gx2K11AOzMbsM{o9G=O$gsG}KD zEE5)=zKK$V+gd@9=MUL(wzLndG))c*iDOZwKkRbQs@`bmI9#}M{u9{k7dSNNHj|yZ zTto>cPT+`G}?<~!> zAQ;Q&+fAt?KjkLyfidgxjD6mRLBhcnnr%yGej>yDRY0w@Qais3ec?IWVIyfNtD9Wc>kOPNpvLw&5(P)}YcO|A3O0oxnmT1# z*#k2K?Na=ayFe0Wot0)qg^>7$W~pMy1c0{a)8z0Os;}V#0cC%k{@V4To+ql2!v}a% zYx(`#b>^;njboH3L~g%O=62+#?~Z62;fl9JiDF!~k+O`KK;sBW-OkOnCgJdd%!tSK zxBScAt^~QMd|I&<=FusO3>9|DsVgAQ(arbmM!S$+Vm$fy)^iM4ONR=ip_4d)ay2sG zSeyuU(cK{xNQBrwC}+&A?n7gM^WwZZ)i%=U*9qYjVP>R9dWXe;!Ll4hra%9Ce$ReQ z=_oAeRO)W+>Y@PFic(f#$boY>UNrDm6k=u^-Soe~>n6NJ&~rfVhRy8CR?A`tkH&296}Ih%^}Y%?zXy62xh_`I ztNYXBuF}Vf9(uyli5nljv%2j_Q4vQ)N-g22zCk*%+6_X9s~LPgRKw%HCl#0#5;u5s z)K9-QoJ#yF!K75zyymg$nT#>|wH}P@(2$ zl^2_MLYpn}s5gRv=kKN}-v$APm}ymc^{c{qW67|L$q_l}HjgRdRk|o&S>>4BIb^k7 z0^sU){$2qov!O0A9g9LcZ$`IOT52>FJ`L~>w69Ab5ULv3y+;chAGW|9vw&fZul>=T z$*{nFQ{Bwgf|X%OCW3~Duma3M2u!(d-$ek^lgaEb78(bA>kAm^W^L$IvfpmqsiA&v zX#R*n;|bW;oKqmMChA{ER%)nWbjc7n?Ry=gT)b zJhl(2)kvqM4^U|`O0yE9^O=BKwDCI_%l#dI-qo8gj^1hnSY3SYcC(4+`u2ES#YOQ- z;b1o<2Ak5~P%O^W*Gh(vA*#ocxBTX)%y3B-h-p@RFpDcy%wwy!S!R+Cg)RnON*672 z=@P4yIz*Gx+C0ZvbFYqM{P^fx8xuhm5&9D3o!oftlmDqAi-oVpxa3jD>BopFwKKM& zLb04#_xH1vB!;VCBibAC`A-@>!ItWAMvJL~f9rU!q7;(DziV`HiO?jq*6($I50v2! zJUT7zpM|kC7oq0f4{s{o@V(oy5T0nIug|e z%?*cKmdv?3wb%`%MzvGsD>o5?t2-`dA!7{H9QiC>!sDU(?v-ccUK6~y-lEchGq;e< z@KdQL>R%!>UK%+S18=_C@5+Y!x)3;o!VCDQg=VHxqA+$p1!PNobvFFHsN_n-TZ)#k98`$!*Ngq#ac=#<_JoSY=Oifwe+3!goG`YqW4h;le$bV zEKi)LtRz7`tp8B$Hu=j-qaC%ETM4Y$_~kfuq^m19O-08(aCNa_Q!GYA|KrYVo9q)_ z9lO}pS7jNm-TJ9@I5L06Je=mq^_22^Sx?ySkMT!; z^r3}~=)S`-Lh<~nQLQO3fmMSud+7Mdz~Rr%`z;!DZC$xi-_3lTQU^v>Tm;<1)sYj| z*^_WYO{N3wLInhji1-VYGQ?}!f*>;48R}NzydWxmH5DxNo@iW+5m4ZLL}Mg61(GaK z{2(xs{3ZNE`E5PY3C|N>>E$`$zVR zn0fxLkl*mi-`TnRCjUCPMPhUmO*>6lZWz9LZx-goPbQ5V!LW}k(u%>tdZJzq97y-L zp;^MkQuS1B-s4}XCfFtkC*2crr56!SbBx^71Mjbg1C#EQ87?E+|56`hYVz6sE}Hsj z9lraahBWeF(ukF0RhqN?57Ifsz~^sgYn{1%Dzx76^4y^nChSt0#)Wt2`D%)Z5w+4s zD_!*GVf1dBPalV4ea<`P1OtzwN#;5Or+O_i2_j~GSvXq9E`}#e%X?|QgL&1w<_Z}9 zW(}@P&vU1#q<`(Z%qTbnRv6V;g1WdkzG$k_u8|Z>q>>Z_n?gEDxknE3{g6YSvPlQ5 zTLm9Wc<6Qy_9(T@?2nCqI_MtFmA0urUg{b)x{=}Q(9&sCqM8TQ^&XbVqss391I`KF zlASaUe&9+rbq!+6f%vJY(r2GdcU9;F^`E`d`6-S_dU}A)+CE%2qZ@*c{P`KJl^|df zZ~5sO)uT|fQE8F>?jpyM6`Wcd{8&1X9WLINWYFC0co$^J#fm$HheYfIGFnhqDaM z!-zy?_d>Pt-^-h*XuE7(js<$7Ltb)O)`X?jWcrt=CVF)0cY|UpyZLH7?o5jNg%E}< zo>oWCqc+p7%{WSTzRSGxmNQ@W2Y(Qae7p%@IA0k1W|%2&x{2ENUU5uPoL+=$OfM{v z;;tl-oQU!9x69D5Y1vnXM(IH7{o+zI(HTR5m9Psl*(*CwDR0uop8u`s_0qWs(tpH2 zq>+q#@zN6uzSvZ9*DZU7ysuDh#J<|Jy{)3x%%jdfD^ ztVWuite6^C1gn>6>0NpV&(sFW$7#u)j`ewA_ZvFs&o+8on}yw*HC>i?#Coik@F=NY zBFAPh@q5_KsK@#`5+ly@`(LHd^Q+xbix?x1An*dObw3tViS+LLX~nT%PX1x9+SO`G zK!TC8D7W)=kJNslCcp7yO?_;3mbXYFnLe7x@&>Tb7*TIA@6)z@-sk^VTP~Somf@9n z4BHuPJZ+h;cYxZE1zjopo>!7twbmDVHuL#9&3}6av6`co`>f`A?U=H6nbcLvTinVM z=Xc`BiraM0*|kDApo)2xps=My*PC(unig=gZ*{PDWOS-ce{>YEF+&0hC}^LamV~{g z!|p}cn8r5#>!xxye{w{=?*kJw?cn@smRHAm>;jw{nHWHnB%fRv83uP5rR1ApNevTs zZ35;;LL-R<=vn^#bc=@{9UVFNkmGHki7rJ3&Xli$rNH6MO1aq!(3qQ7ds8cNeE2J)`F~dQ^#(_>e?KU{-0)`1( zk9z_iKBzT85WgU%N7p{h(OpKgIf*yE2`oC2-A0LcPnMO%HiC|h6VlTz4jqcY0Vz`2 zz3C|Nh(XA3{xRoD~ir{g-|2Sg=Sl;i3ZSczw6;d}n!h{{fr2NFvNJ$5RrGpLMNR@e{)EVOX6fCl8{XmluDy zM$(TP3wdI8bp7~fn?l05kCmxutY`-U_LE$GC2k(83#K~Nii|R^$Pzs&BN=LoQrjhe zYP(4F2IqVdrhKuoUg^y9uRt5gBv&)k&K|truY-Q}2Y6!u&hHW+Enp_8K&tjPk%M0> z*|J|<0RI5y50n&Oq1vWctoGDzFAA~MSi@r^UXv8@DV;hjBLWd^k*$Ivv2b;BD;&k1 z0?ewPCv;d&G>>20oe0@3jj+%P-{XtcW!_m7S^Px>$xd+Y{LbuWxG%5h8F{*sz|m+d z_)(+8hdT0M^`o1rQ|6j=&vU!<(fn%@W^J|mu2jnYm>!)G6!R}hEs0srW5+fMTCxQl zaDG0cGM(Ptf???s?8Rf#w?d*EQQrhN_pSt=f}%28d@$rHNjy==mv@mV;!CH{Oq7+0 ziTIz=i@r9_E=W$9#3~cx+0Y|(=)vmY+AOF#H99q;x#EPr%lW=VWDXPH!wS1Agj9#-M&*ui&#IXT!w()Ud za}(R{ZJCQ*lX7KU-f2`%l+NBn8vD zqiF7V#v*WaFL!A$GmxLBJO(-$YmxtSk4S|dl4^KVz<&tNx$Sy;VckIxH!PF1&Z>*U z9SaUB;jQtkXx1+g+&QIq;HmdCduiETgvZ1bBJjA1yF?N$}&NwJa~cCJzvphhDt zip*FsPzfin?Pj^Kj`w6C<)Y111q8Jwfd{#Cs> zPFt>?`I*4KWBK=YA8iXOpI2MyksXVGd@oXpJ*W<4N1?`t3aH#?Fxp^m3pgOnBwY*X zIM~mW;rT8A&a(eW1RV%q_v1Y3tnYabbEVrv5xduRYA)+md@)F*G3=!~JHhd?S#3U;JWbkNJA_FGADf5pGxeIBlQX+4?gD++ZE=N0YdM_)ehPYap7)Y<6E_D9W1k@EWlHi$Y8rouDCvm z*h1Vs`5QmV4<~<>B$G7+tHpWi@XsO{1JPP zJa@%*;7*}Me9({&q3}%0#sobirMw_m8cF^lQ@jmKR4dU;E2Yl9OVbmmGbI4KRC}8g zsU3vX-&FJ)dmKO*F~x5!XD*zn#PA9JZxb@|ntO^Ni&IlFEPEd^U+OX zBQluqG<*ER5uZft9|WKt7q2xD(e|9^%CjB>2W+&icC22IzYkKlW(%RNW&JV+SMncB zku`K6X@g)Z@Eb;XBK9xz%G;S2cVTQKf>KmNQfq0>4M|f}x?!yYqJtVuV{Q|$fIlLU zLCc!9Z@DF^5{Epk`C2q@gc^-Wq4rR-S<=)`OW-MSl7VoQa2DJ2b$P?97q$ zcIy2@7;Y?+_Khc*f_XxEzut}+5MM9p&bMpX)}anUp0zN4`-1x0*R`CdFNmpdP8X zFWlE4Vq*NzsI;s1`H{bV(ZaG72_|J>-Gy7@45D)fBnK&scSwJyEY}Gh_>ovKCsJiQ zOAgfD5Vxw&d7y>vzG4Q3^g-+X;Ze-Q6nkKR}*r6mb64=CSJh^9zO{jpiwdh2%ru zqldubr+IB!QV1?nmSCB=i^^iF7vED3G|RtCqUD^o`=ejZCvutoQ9BBw6)v1y{~_e} zLM#{DneUdAjT4~tLxYxl)XbpV0)oZwVg(Q9j(H%}Ffo8z z>ZdY=e41JPI{(-B*XMxe+{0~}Z3jCxYz!jln9(BEnQCKwv>r-b9U%@}$M)CJgT0(4 zbB;g{CMnFft^gkK?0XwEQAX2;zl1^RVsfB7*Gnv}gQY+YUhp`XbchK#}t5{2dyts+vn8pa$EMmc4Dmb)_{hvRYYeszVp|LdZk;ck&}tf z$3$u8rBXK=8X6KzNv$=ZrGmSre#ul^ejl(_3M3ByN`v>YV>PQY<;HrYeU&@mM#I=Q zYt)kJt4vX$SOQ!Do!<>fdt0YYocg_agnHGkiXv%Q)W{(Z4?jr3c!vMZu=(yp-e==9xyFhX5=rL3@q2fw!=gcGF$Yu!OB?`T5%I(MJjWVO z(GYE^;vEB%nqM-p4hA@rQ=cyU&m>TNtI2tD&lQ#PkybB^Vf^_>NaO_(6pT*aFj3I1 zQ`1^qi?NRw`eX$!_I9{e36{mQtxi7n{$Q8j(zm8!xHT}F(%M@5?SmjEdHf$w3ygNf z>?RSdX6F^goW)aF1L&|3A2IDna3r`zkBTBB>f>8QgGxkE_FYO<&TJq6vhMfs_kwEb z54Yceq)Y~m8P4wA2F275B`8C;906MaOnS&MI5d-L!D-q1)(f~Xv`$qV_^`{7_gL!J zF)hAeguwFx(h$i*=tti}VfJP7nBKPVUKR7yH~qmz2d0~pC%`*(zZ6?;L68Zh?w8F< zEup7b4|Q;IqrW@N~mg%-18M?M_P%lm~u#ai#E;xa-cz_kE_J z>R8PVga|T^aaC;4?5BNtE|?PXZo4Vl4?L}Lyw&=A*u%ls*!JXV2WSzQuk$5C=DK!N z!X~9x_PDaV?OJ`BuDdgM{?+Z)DKU=jyv*WF zB27%&@;;J`(m5APx(Uue zqfvbtt&D27=3`8A`hOS;2-eq?Y)^FF$Mdq?55VRsnD>i0Qs3lI3VgVn=qDp!{1eLWo^$)sQ+jrxi1^Cg;BCsXf#C)(>p z3+cfMnI#VIbF(wkJG$bamr#rFpuLFRLoMG>FB6yQktRh8$!5a85V3fxg2HuX7K)zDxdCm+SR!MfRaA zxNVM5)Qhtkv12V)d_TrK+n(3)e(Eo*Xj245xA2JlXg{Q-@C#^}=j2bWX7MPdhR#HH zGbmI@KtN98D=TFQ7?o*1%WG=5^A{k&@WTpCOs~CcuW(A-j~_bK7|8;Q8wF=OUT-a6 z4dP3;{}p!rPho`}(N+ji5N%*NFzD>x>+3NFVz~y=lomz^Fz= zfDcF1x7g5T54U26cgVI(Z4Y0l;YET4P-akPJ?Az>LQ}3-_TTrNtqJE@b@DUNYUV6) zMFY&+;#~=w*Za=lieA?SD@H-w74jYrpu-6KRiFwC&2fAPB6v zv;4Nc_UmX){KL|z?g&xT$1M_^^Rj6TwI3f}acsljJfAbHDAirof>PtQvBI8q* zQuQrJ!2Zlw{zgNQk`4~FBBG*_DNKNPbz8^NcNegBZ(~zj^bHZAfbU=TcDqOctD1j( z5-E`_--dpc<9&y{QOU!Z_lz11$*RS(23N^FocfYJ2haf6ufsQ$j!daP&PGO;qg0LM|1XKXu);P&3m3w`{gmlkPGvej#ZRc~bj3a2d8e0!8<(;; z-d~g*qy5b!H2uxJ+zO5dq2n+OMB?XUdu=}C+?9Lt?;^n>o1CiC4(m<{^h4{;kTmVP z`u61khG^?G`UU25Pp#Eo1;IfJn_o~c7DFtaFLTI5wFZX(pWp}fPP8Jrhc|{=S>QeT zB;nLTF)}ieFehBH6ot;uznRN+meJnM!|BE#`t94OIc}r8tZdxN3q-}>&P;*y2q=R< z%EBTN5C8#qe}hyY{ciQ?@j-N1@gqD!0)a+#wY8jF7qQp7l4L?jTcX2`y%03cyy#Yw5X@P!qJ&r4)xmYIZ(PV9N9>D=$(`8h|onOX1V z+zcBpDZ88CBLX~SuItTj#&FgY3p>&)xeYjY_#hU}+J`{5o6AjeI&^0XR~iUkLWsMg z7x6qxH420d=EKdFO%Y&Zc)*r~wVWmCP_t34FLPoZ(m4;to+g=JoR zZ}2$`Awo5#nRoF+Ly|mi$OJ4F%jIpc+BM$_;;W)5%G9f-jb^Up&O7d7RLV8<_+GX) zwNw-oD7-y&KXB!%>b5!`Rym=d>`b4FEZ2Ef%~d#bl8~q^ytrM&Cnpo=d$Ve;^1sf7 zeeN2SFLyeek$$A5pqOIigSHiW5Ch-Vw(ThD?Xs9JlQK4TcE1c#SNSRaEzC#zlh(&t z_gS?9U{;Icf%(SSx};F5vxQT%y1u*eSQ3q9Dd6MB3e@1?i>Irp?@^LUGkUa}EsjYn zyj9q4Rf^&FA^Khgd&i5`(bPY5^W0Rx$QE_HGpyFCCC7&AWI=}u0lW;{wJ_t$Sk&L^ zv6mgB>?v{tEZv+QwB0gEBNgi7V0_>B9$~tKQB`!QGBw)0ZhuH6!kWnT=eM#cFKT#% z%Di7N5e#H-#cSHU-BDlsa5?N0Y&vf3ft`l#F4X^EYp2uD0nMP~vxv`}7cCQlcron{+%85%(`q-49iR;UZoV%l zzx&0D*uFSj+ji!m;PY^4nZme(F%Nb!UlttxxJx`g0sr|UU9T*64L@i(!N95gxFO{N z06l-NecujYyOEF=2qV(wVk&hf7km2q2Zuo&87SIZPSwD1fV9VpRivos88itW5L}rc znhT^837@mu@6XIy-hPw?4e`?bChPFf&z|q=6;=UTY;%<_QLIbdw_a@&ZaO7kIG!u{ zewLP%hx9hBQZISEBKlHqy{gsua>bo;1-zfZc9KP6w^;FJw2!SfckWzsx|U$|wO+1m zVF9(@a4_%~6`55h8=6yf4Wj|zgkcu7%V?4_q%&ezFLp+-SUBN5SXK$uVcRsT>G?cr zCYN#*wvk@SIW87Rt4Y0gCP{^%14*GEn)36#r#e^554sQ6-?X46XrRi$&c?a$6S4n# z82@R&9>j^Z9`simt&?c98)blUZ;##hD*ybJ<8h1747g5wdo&;8W!5+Ci?jOl_*mlGh)#>u=fo;`j0KM4F3lMa zp*#(R)@dDVV7p(wjEs+=p5G(>?jU1xJQ*t^D4SVg`e3rE)nH*qoN~cv`qIKkLBpRcS(L0hb^WDukVVow;ha^wBhXm7v#RX3`?7k{8|H>P6(?3zJ}>QM1%cT zEBjAVeK9HK2hq6h$tE#dC>!=c$k+OGrAgIaO>_PYF4}=HhRP2f_9AGi%&j|U=K^g= zWE&G&5|u)6>-KPIn#ul`Iu^-xtUsjjaI_$j*gCapsoKKRAid+EQkUy39y0F5 zRPe7}-eW`(fkkrm0Pcc5d?Puncz;}~{ploJWl#g6_U8riTDN6-51DtniKS5L>;y3e zI5N189jMPN@5cNWJi$c4ob2a5K768BE{mHCLJdzoPv)&J$Me%yyUJ0cTY`Oir>^>O z7Z(iFf!vtQZ11+hTlF8e!UH*ZS(OXDnbliwt*K+Cx0}s5^uZHf8^x5Aner{q8@V*Z zkANTd)^x^!y)gmY(`xBl>D?3kj`(Tb$k%kPWJe)CX;*SUtN3?*2MB)F{~j4eF)5Bn9P6dqMKUR7ULtR>bxmD zS?ZLJ!k~GnkN`71YHgAWRE)8#Y?0#1*qqjdGF(x-yu4J@cbfAt$}Kre1Zo?Ktq!AP z%&`~-&QX~4kd_VN$jW2TWfC^6c@>4f8RS|_xa)MAtEkReOlFd--y*^)Ec?Zsw{LQH z<)*q8zD?k^IkU6uim=SZx)oJ*oN~KJG+4~ajg2VY<)4nj`v?13rkU z8T?+Y5ZyW#+3FAHlhv8Z*=cl^j9r~q^mT@^Dj+#k_;Ioxg4CPo^o=Ol`~a1smTfZ7 zDQuXqhyh6fV(m^<8+kp^NLmDyqM z=R0W~9U7Lg$T9y{7{YXILIB|l6It#-#v<4Y$9XkKVI_5UgN+1HQbN1N#7r}7U(**z zALuy%e{M&zVID=knT3bHU7#FpRz*QU!w_y_#^&+vFW;NZR%}*-PmAmbG9!B9B@_=+ zNYZ2#pD#V%lfx5NKRtBw+y!SD50nNuoO?6G+$KB3B9A@kFKIvHv)i;=WL9XkNNxBW zs7C0Fa)G3>HoR)vLER(hDkU{ah)_CJVTm6xBh_V1H0|ZS=pj~O^7@3(O)ardxelhh zW;oLzjen5{Mz|waaj^gTds=AgYgKQ1p=_GO`U-GwM}8xwxL9Jj(YtNI75<#1?+rvR zLxPfP1B(=5dMD5?4nkM=EV$WNoIH#~vF=N)sCDk6`}pZ|^izZ-s4y{JC^jvQ+)~Xd zmUs1D+DxRH#avUqmst2#&xzytXSqhbUhI95)aeIRiXi2pn0ZU}8SJ5+*I?uMSOg)g z`D2yXmD{omLI!QN|HDJJ5)-%;zo<;h$jA$z^A%z50L(>P^#t3Fsq4!LT?Amy`L0|g zz-JpSG=D{HVc2F7{Pg29u2T8QMjO6p{p1Lf^O5{ao_JGk?ayJm!{xeQtEK9XJxEw( z1`$DG$FkHOH%d0`mp^h{*4%fu$#a74vr{8%)*H33*lko)-kvONCA;3dLnDEo^D331 z-EQaAQ)vnuK@6-Tdk{@+H~75BLIGBc7;rRKQ`CO90zVo@Y$rW^@0N(UO)P6J+xl$@ zHhF#{@BCieFkoyK_zZc^PbJTPojjg)U-s$5mo|Wbg&8emVzPM&z)88*X@_VsM#q-+4`grWe{3^+-LZS}u5poA(xc51BAk9RK7_H^l z1g$4vedctgQC#?Ny6Zd6QWDW0-~@8%?05>wiMz8Xq235!7&VbDK`( zrlrMwCNeZMj7>-&4GIbx`0Z#t!DLZ{%a?wtS*Pq^B10jaBMTmY5LgNU_n7aZB`D}` zY-}u{pb!n!-Oo%;4s#mir&gSr7;Al(kdji;9)AU@+Tmx@*VnfmszrH;pYgDoG~T!j zI~DebcKD4H7`{A;=v{H?y{Vf7jyl6=@*ySLBsIijl*`=QoWcDzCVC1foE_r@Z=nVW z@~JbA3?KL{1@21$D>HLn*!|Ady12V3Ze-F|B$O*zpfD(BW=aK7qzieb0?E4lv&nXY z*d8sfz`X29s{_y`HWhh2ExB4^3SXkZst9ePxJP7sqP;1lW$}YS!u@}1`I?L}PYHMIU|KA%-gD($ZNDRHy z?2kWxUgQeHP0J+~GY)m}OQCi$Dk`AiBE-p&z%@|>?qqRKBhxZ5&19%ry&JzYLt9v7 zLoh|n$T~TpJ~`7YY3x^yy(+*iKA6T*k|VIwqmE;4rFRTz8q4yDbpf=xAnXiesSR?FN!05%S7ZGIYggEq5Y^edNk8mJF zrbs54(3~=bYMuUg45^n$GbOrO9Ht}@hdja8FH5B|GdqBjZCnDVblOZm_);^h^o=85vf|LPT~2aGN~_Atk9rQ4N14r0ZBP%z_4tBNr`#kV+=+mI)1Q{ za*!xA3UIiRU@K}x;>Bq|nGa74$Lw`g%vTR#FWSTbEnP}*#<`@0d`C?}x0qi1^a$UiyU!qc-4H~Yg zSJ2m#r#&xC9@~groQb&Peu)yLjsQ@j0jY$Qk5?PgC?q5_3NMhaBs^Ri&^CmIJxsr! z@XXld(I+*Dw-pJIwfU5QvXb?R*R8SjJAUnxjb8*~Tls}ObY{*FN%ws*E*ka!-d+C} z-sA5G34%SL=eq%cc5_Cx6g2cvGzBj!!51 zw1k9-_8FlShgB9h!9^t5b|)Pqb*c10%K_YOiDP?nQ`#%Y>~N}rG_5qM1+^Z4iZPQf zFi8eN|0DfE_KowhGmq5+aJ&9HOzkc~VmRLCM}fXoxv@?GeP(AvY^TM#1xw1hMG=^H z-ZWfXjXVwD{7%si9ZyYVil;>k#pu=2vo@E%6-}^Spx<(N{z75x$r4XiaSSi3ut>j2 zSi!|M=deL@2onj8A;Z)w;AqtZ+KAntJOpFl=b|W8qu95_JCl;E5?GFVM^D`Jl7pcu zz+d5)YS@?aFC3>>c4vgiNeuh$UD5Bpqu~sb^_xux*)+)=I!bp1(gr{Iq3oSO^9NYh zbX#-t8IWaah&&CxaFBmt(7$?H!~!wTv#icM53(lW`a0jGo{HiYyJ8ccahmU?k7naN zlM(`VMviK&C2u>-SB(BkT&6@2ChJzLTNC|tM((w+FV|llq@nGKQ1GaRG5xi`iE^GE zGF|pMW=ARu0ADzakQm@Y-h;qw#uBZWTqhvRH*!nns`Q`3d%Bq%Ai&`!-@>EEz3KS` zZ~OIJ77Q`@-z?2%^8G^N-cb64}Bh z9>~1_t`&!00CCB<>$kw| zrP&cMr9+^$wzj}E%SN=Lc03+?8!0M94(GbK`C_;&k}DvP^0~PNW$z&CVAS)xi-?bp zPc*e=!#g^cJH_Fg2ha0*8#Y(YY^BxR{=AMh3c*^qsQRLK&2!R7sX&UffZZrxo@e8HoSjsNF4oe)p|WJ`))YdBtO-bra0DZzwWLgOcP6 zIfWhUyvmE^gqo8#K=1P>IXvHtTQfyRH?<8o^sQdnw}mf-5_(#2C<*h;r%R!*6IDe&Vu>8yc(PQm0n*aov5!0i^g)X zk{%1nyMNvJnYq?y{R7a*Q}{as)`a`LHAfuL0rXEK-43p}bYRU27x#$Kcc{rq@(_dm(Dd%6?3Z?jdTqdorwLH?KO`Y?8k_-GtfJ zErnYN2!PxJHt9u!8Y=4Uk3XtvGPk!q)<6H3g_#h8iZqNEXplGDX4LFr6)k*il{TT5 zi``Ts895=9^k_Fxu0_pGza4)%dJltM%93d?@S;CNc)Tc3=c@_oV%Y9zO%Sp*vkBvnj9? z4#U__?KeWSHq-5#GD6s+KM)YRMVf0Oqr91dz<0#)I>hfs`qo`}sCZlT$nd>iEEpp= z9XrXqZ}Zx32Vop`fRX!|Y&S0opu%q+pf(E>z9-9Kz2jotUnI>2Md6jlDrn*H8Opki zlxR+Vg(WmDTR`9I>koyq-}WPX>Evmyg=6t4tNGSD93f$RHIc9HTQ$3j^R=$>wJf&E z`oG48P&KhmmRsb}fx5I6+^jQRGb&E$jk#x+k z0+aPor7}HL;EspKcKRMDOr$?;V~N|`uk3GShF|ysxJX(3g07TC&oHe23pp3Cy3boW zZ5qF&LC#JtZ^2$nbs55VbvzEJ*5|A|-me9WNrH_FS6&cTtE ztBn~;h0<2##3I}fbpuKI9`HiNd`eAcV3HEyaao1HxmHBphjy>qJ@(egEc>0#_>J}8 zGO+L=?MAC$0$M$n(>0*5u9sb#;{hIQ%jn1oYh>bj#NsA3`-WZBCtR<*xyo4qDixXd z%PjAa($sN`W*pcDDwW?f)N17mUT_f<3T-#J*b48Kz&vw6(&r?pJ}h;~ik11j!kBw0 z3yajmh{yYbnTA(1hdyUl3;Zrx9UAdV!1d*j9$1!c_MuBezp&XIa2LP+Emu^UK*W+F z7!iMA=a3&5|D(Y}8mQHmue5h}wFN0JZ6cPKSfSa0$Ko-J+r&#FYpF}+e6$d+76Bum zY+aX_#+W=XIiBK3+G=Ha2*NfJugQ7VzI?#@zMtWm%MeXT`WXEQ+krS&<$1WjiqDVC zNGFD1=0>pRce1>1G!|=_uz|Y(P#b}FhEb@azFsD|<|&Qnzf*X2YQ)_Q$U(N0=A29* zQY2)nO5B|+3Mu=0GTbJ|LoGl`(yh3Q#TJSDfSsOR`QS7$|5fuTX0g0M3SuPwbTf@+ zmi(1U`k*}F5y^&gWLi#=H=a&;h%R23a$?2lbQE}Xc^n6LtisN(-YPEFuaO;WXVXli z)5!xeG1mg#<`Qa6hkSTV@KGx(bQ?w0Xjh8y{hDl-iLs|5-N!J>lUSwMk1rb|+V;9T zQ8k;q%B(aRbk*J(6+!Ot&sXc(qbAu=VYPk3N9%oy<$9Cg{37GgNTB4^4#u_dcv@UN zZT5_Fp(&D!5y*`}s)lHG{Kc{=s0Ag*5Ak9#P>(CrprT3ad^~T@bkXLi9$UVA6UKA% z+j^$Nn>B^Y`A6dEY7@q4s?x_)BN=+0cY4isGfuBi@2KDxD)-k0*Zd*qCTSlZf0fEu zu$4$VYj&0iF&%E1D|m-&^TZNsez$X!mbVq|d_C_X{X9T}XVPq;R>P>nmO!mc>J_}# z1Ym@Da-E!$6O(CwXVQ3h4>Ct`pGGeJs}BSuWWMuts)d^QRp+xysZ189US+4r&y%$p z?Nk-i)W zu@yh;Doe{ZB1Pfrw|`Lwg6_jN>kyd{MrH#K55KqGG&q)5r9?5cLB;?p+z>1RIu|QSocRFX^{DBR7N31)CzRMXf{@lbi$;O&$I6xI<*G|q~9M;vspwViHvhzVfYo|T5 z)^S!(k~3MY{*CH;gSMLv(i3%=$o_k~OaQ@2+sh9=CSwtOOt#vrezov;eP6xGUe+g7 z#Lw3lU10hZ@^2*t=wDBE6KJ*7KIkngi}5-H-L&R^-}O6Z)5RL0MMQ|}A%2orodE6@ z!u%Nixe6ooNL6EYK%S((DSzg5L}fnTS>uyTf2=Kb#9C5$E57Daa)a;DnU6QDQqis) zHJ1p=QONy~qd4KIa#2C|e+P$%gtA$z)Ky~5`6xrS6ZRw{CDrSLYd+VU8QyN549c2h zFz^Ed_?u-N2Bz>V8e1?0vG9Da_*(8-sq;VKU1!^DCEz|Gxr;>O*%{lf$57EJZKxx zAE2bZsc?^o34HX~ezuq~d+6{KrTe`sTB=q-)7jZsYq9qsB;+cAf`OUkCz9BN#H zcn-C}IgJd9qz878r!V?D4B|*GU{m`02Xd%fn!Lvfi2{`UCOl=I*-Wx}dLCEi!0dCO zuWlco+QgIy^PS-DC4vw3J3aA|>{0XwTQsN~59p$w&$?7iCNn3$$v(nPTnsEqlNRc5 z#sU6_zW#^RF`)%D?qLDkM=eq3ReB+C<2tHgxCpY0oGdzzPO((lOPO4dcCd)-7lRq` ztDGlcB-1!j4T~nV#Gz&J8l?F`44Q^=4QG5CE2~uF(O!Qzr!j*F7`p?ug&xHP_rBy= zL_~X%$b&*{(i(?w61DJIuIZW>r53SV<3ilTn>m?^p{PPl%wSShQr#eTn0s8MYvt64 zt1SGr9);`!{4H|mmLQGICs=4#@M?$bYC3{$d>i%OM+Gc=&3KF6i7B_l6@nU3XOg2^ zQ6|+aroitZ)F{Wx#$Py+knH+*4rYFyYW%@@m<{lAH?Uc%7X9$~Ffh2xk$d~Q*GBq) z!zwLgeO4sys$p74aekd~&r5;Bba!T|Jc?|gX_lAzoz)}~e%H)JLn4gwbj(p5EfEoF zZ>HBWl)l6L+A~CbugM6nD=)Zpi!hVpzE#WPpl8mjnznf~#&!0)`H>DL$8bn>tM}07 z61AK-l^`}84ASyCl%5aYAh0FuB&r+tqMm5`dUFV&enj!#6z=<8yphio9Vm!cb_hV* zpzu9ozHJK?s2_aMDBhKB2^5gzVnGb(Wd}sT;fSWPT9#Xv1c~v0`UX+ae2Xkb+I>kobGg`A$DKZqf{+(WVPjcZ|5t6 zq3j$@-*?I;?LTcjP~?OHp>sUt?_?E8%}^4R*-7fVicogd;a<};C}!6%w@p7QiF+Ti59uy0?jH-MCxLY z!nnA(eTcYTGy0y#H2wn8&6jcd$?>A|MlaYIxJ$tVp&CB|epXpsE>qkUBi@L!*Y94W zEJVdW@m3wI*09vcP#f*t^4-G$Uf=>ui5P39iTL%mF1DNWT@zYl!P};8vn#k%B;^|O zmqS*AgHLRlP!rI9=sX>cF_&-Th%Y_l!_O;~Iw&g6KCpD@eQ~R0rKq4~y`Nguuqo05_jnTSOhYfW<{^4q{Kd3u> zIn4NB7&K`m%H0HKEh;p$SG`4v$@*v#)VTkC_(=8G$zG7Q$-1p+q$qp+lm90(qOqET z{dV{|pxNVD8~*fDdoCEV*jG(Z{jmFW2FC88DSrIntf_EbWmmoVECj@$fD4Ruy$F;p zNA~mdGXv`ML;PV4`TKdT(DQ^Q;>G88q6m5+k7RLekPJPa66o<^%SQpWx95#~r)|ABBi%*k3M{{S?dMb(lL-wr1|Ev$$14i5UxS%~L6vm)ln$e7`R$h#zXk zfpAhKx>YW|bx(9x=QC`&52kxQX-f7zkvdG^Bdmg7oxL|Qlu@KUqncs=BoA!(Xp(Dv zR`OzAbdDe9=$%?Vw?q1ed24@M*yB00ZbC6gk+n};-A+V>; z*vYZ6IP%O^{N8>|s;@dVUaTzWwlQ=WABcKO^InHSH|0|3?s@nmWYL>p>;GK_@sHeL z_i`lI=E2v)csNrrVVYw*|9rr{v{#G3NB^k$rD6e2SQHg9i{TQ#PtQI`y)FF37SJ!r zJRfA1S`DM7idGhlOor3sBWJr|0NeUD%=M$m&6#`nL1rwF1yvkk`~{8Lloz5}F!%Ve zU>9F-!lQaPCMId4;Z%R+i?;nZYN~J^B16W)3l#V!9&sXT{(dPR165f}<(}g#4fIIZ zUE!unD6{R*pu^pe#$u^dt-qrywE{7@4qzeFz+8W%o2_M8fpE(mq%EO5uuih@K@1oH z(>Iv}D)l*9{JZdEknKQ}3X<9*z;S$0a5{DA{M7ziYtE7iS4*EHgF7nTvJ#gDjhah{ z^oh#|i~Vkz2v|#{N^Q0Q_)b4lp;>PLoip@&$GM+0U#dQBR!r2E{|&kbf%-%?w{aQn zMpN=Q4WHOAuTc+mTqcd}H>L0oo!kM`nV{fcp<))%N=*A8Co66+MQv^(63@n)Lr;IY z^i0of%fqP>QgjrBj(gbKqlF3t*_!79=UH$EpWraUIc!q?$>fOPB1RCvYWp+MBMAjP2svp;49AH*#y!hxHE6CY6wLSQ;bNuovaz zK@|*>{PT8JElAn^K{gfU^{-}!5os4co-Q>SomxPZ(HR$;i50iL$ir(IJfET*ZWYcMrNy(tX}gSaQOBI(lRoZ=4-n==IezyUQf%| zSp5M|nDINnrmUgIlkA)M6T$nF|DuTb*I|I;!%j01+O2vrXe%*a8&4lWGVO-A$9i*A zNocztG_1TF34|Asq^;Sbx>_xdh z*2GAA&FBBALFWV8O;?+{n>x=3nbm8qUs{E`;l$+FVw$c2k~cHR zL3=nL=$1&qZDWbX@5}<{H$})kL?Z$LOk#7B!VCxDbNjA>#)JyRz7B< zZAhQ^R$`bGtJLoO?XmfryUAy)ClH>^M>h}@U^#?kjWEO-)2dc;iscF`Vi2Q(O zT~2QPDIxi&nU`|a94?NufLd7k$x6VwLBK1BCfEMQ_b^htQMNCjIjy7H-!4vi6}jCfoEoVV_6WN$)&^U!I%+7RFRn zbDxd*&Qm;H&J(c3H^>)1b*W;dt4GnGtsmTUgJ>0hqBwBCf7$X-kd-8UfmSO<#{H~s zImLs$La7LC`K%Nvq4o3y>Hsb_z8=T?X7^i)uey=B3b&ZcDG*7YRhPERlC$muiHweT z+}%@x_8h&oC6qqw=gS9EVb1SH5$=23k}D1R-?4X14lKPJPn`s*Z`T{$?zB?aouOZ7 zlM=XOOC_2*Pc_O*kjRRs(q_Hy3Lpe=E_GKjG!nD4c_!oQco(yw=TaRR<+WJsSs~bM zG#7P;rm8`pZcBgwrA*)~S-?L05~BWOqH%HKQ_nUralYNmo?rtjgchkc-C;SsMWM7D zUtQEHJcFwSV_Yo2B#S(7=w%1~awQ=R&{t~hFgA_hBRsXkhexks38j z>H5~CGuMFi0%Iy+?B*93{2+w~rN!*KO50E>LU3jN(`qB7v~#Ug4K{AlXNg8vi$vm) z<6x)io-5G6X^2E2`SJUCEnkenYotaUZS%zE0_R| zGB1XS(Ll&$;Y&lbLA-LD#CHybDO0x`%wxl514CXhv0J&|I>)Jfvl_O1->)~`*{_3U zB_M4<12F~5n?Ya~pjM)%2ZCZ5r|SUIC#*B|*0>?zpJzYX>Wu?MOg7KFaVWX>3o6`F zloxmR_V-6~Ak9TjWjiq^{dt2)5K{qU?nzlRn{#8pk+|KC5)UII-MDw(6I~b`G;tJs z&pt76g`SPJ!3|c6a56HiS()>Wp_>h(@Kl>`VTX#!;fh8P9qQ$Nun=$%Qgxf`?=9?6 zJCD^uEc!0K7iTuEE-rVzZJtezb#+|LTs!ee*Tpvz9Kg8rcrn)F<*^ea^(uP=xG-4z zq!@j@J?B=Z0%q~=0)|A{r$}Q+hP=)f28G&>h2Be=o$WMsf%|=mJMnU}H!E>bGoCYh zGdncu_U9@3N-Zb{N&2()H)45vmaQ`qJc~nkJ<%2it}~W6kyura8TL{|=0&-xSi95N z_Nnw;ZUueQ*cFAK?x4Io>FtJ>ji7;4a23eC`UaQK_j4SUdX6lxU!guhd;tIMC)iDJ zVJq&ZAGfTTCnp&{c=m-Mkhn3A52(}S`d>_~@ey*TPuO{<1TG_0W@~Pg9 z>3+tjBaW=bMnF;S5M!lCPl&=YfNr)wbs3!)&N*rj`q*r6cvu^Byp(@mJRFhM&NX9P@S&=DO}m0^wHNzGM%Dc z4Z5;hM$oSDfz9rMzD5>*u~ZO^(A#kU=$Ou@&QHn-h+ z(59^9fR4*I2*=zQX{kgnu;A}L!*L0r4`s_TaZh*9GGn0!th#J=nc2Y-Jj`&yI>#i( zluLriD$dX^VU6R&f_nQ7`#V{|KsC693gRU-=NgaGL8TIL59e1wV%cGueBtci{Hl8d zM_Nto)p1+RtoiYv8QkaVBH*#hOp}o>hN$WX>MfJkc9HRKLE!HKUm9&dS~sxP{Qiza zi_4Z)^@diSyQzO>chZ+!qq3(QeS+NiLZj6V;q`6Z3$FB+G-o>BSs!J2y%ZXsG8r&m zm-}9UwNXI34pgYiu`M4$KOx7klXpKo^LVV`crHA>`pf*vv@0Zp9(JKBG{1`fEki1S zazu_aY&Jj2$4GQTZ6s}2ThN!)A$0f*Unj*xR#(RHO{4e9AmdGu^IMUq#&5%WY>xSK zPC(7BtVv7f^R9d!RorSNb_;eent}z7J)?h;~dJ}ZWiVvpzf~uLP6&LViPs5SDlgoHRYXxyam?v>v7I zz|}Kd?al2ag|Ti&7t>wY=WTV;1Bwt86hu8Rk8u!jnHmeYiS!! z*K~eMC(w!d))9S5G{aW2E+}RFZr&Y@7mMC6?U2J_xt{aU`Fu6=TO+AL-+n`}eVs?_ zL_rPmv`e98dO|STveV-g;rf8oxkix@%TYrWC7Vf)h?t!d$~WX)MNmcg%6F zTZxtbv660W%6Gx78(1@6e%^wd2Vc?ddjI!DZp$OUKZNoRjoQ6T;CD#9U)lrCca=5r zwpd#m6{_C=mRZMId??Kau;#be@7r4@urxz}c=v&VbNYBhxor@%V6PS$6u8U{6M+7i z_n#t`X1(a#_p9ErR3U&yJKJ49N1zP$4m3K?1r zwlt61Q#16{xt<7Km})PoH@9EJlPC})DIj&EEn^6ylP144CHJ+9pi2#4-Il`Pzd%7f zUe>P6#5cbCm5&80A*CsE^x1EmVS*=m0#eX@u9310;7g8%BAF54eRtu@@Mz2*O7!yJ ztaV!YyshQ_V{iVsga388)l2Ay7{>#M2Lq&0t*H>nGUGF#eF3Sc7j~qF15~?k^74A8 z5UMR&t@^L@s(Tet1H-^Zr|$tDA-}j}aDo@aN6N|g#-r(QNf<6Bm4^%G{-hq2Vx<_U z&Tr7TT%$4^@B7T4@X{l$ZSb?}OKrXk$U7u)Bu>57?Q57;iXy^fd&w^r*ht;nk0(@vVWbao2 z>YX|&1tK9#ycbqBh0|!^<-Xbf?1ew9>%ZR?;{$lc<_HawD;1@qf@~W@Y>E;B#0P)) zAc0EsVg(YUXKfhMgW*0kBP+qgYU&gh(E)e_HqGv{0-v{p^+aoJc5%s-jegXXcDB&h ziiBv(lhRn!v|eo1r3HQNropRQpL-K%g;c{?NE-Pd`UXf4X<NglnF1N-V#1t zJU{r!ik+Cycsdh)M~;WY?;xt#12dp@*7@TO#D+AmZt@vGZ&F=Z0cbA~O-7;l43uaA zk+fRu;vUStS0B5_!Gt9^`cy{XQ>jpib2pv2XdesaB$bIkinSC-fu@-42_1gb;`LLb zTambkfeGVEH!88R@!<}BWc{jtZ;iVwa@y<2g|d2Z&7Yd!DIBcp zDH=!BDX7tHCAbIEI3A$YcL4=4?O*!1HZ*SuoX-|P^|8gj^vK}CSOUkY4yBaICiZnz zb|}fOtE~*CT8)&Ktu@E02#hfDN(-WGvP*I9QLrM6m9* zz!a$POmx3@jhFq8jR4t~R0!^`BS6yu1DZ$eFMsI3)m7^EY3ic@=*v zxSAkoL>`M?7omPsiw5L~FW+l%X4N|Vo-$Na@prXw;Chasru5l~#smNyGz-RB zJf?aAKBK!-lg&m??3n_L;}EsS%pZeO@BokTP3+=ew7c{pwRtpwdF_42Z>T47S|V<} zPY8f8QEck>=pPw!)X%E9wKQSOyTlh8c6qQA25F^nUNFCd%P*G=iu7Oz6$(! z)e?B#`I2!*T3FklORq@ucDJqra?=an)Lr>8T*xMU!N9#^7~q=UyMb(~|K%+kAaR&N z-E=HdY)xPa#r+{H4rqv=Qa?wk41(_m4WmJB2$_kT6D+GF}Bfy(+dDUU63)c4D))hFD3F@&1&iH_ZBT1wGi$&ri83Inghw(x6zwh)&c8R55}Q2sQ3%H;eewSFkY36RV1IJx|2Smn5a8anY;euWe#Wt& zMe}zQ%T_?MJD^DzanpjTex`Kt9gtpBsM^`JBZ5J z{*R9NXL$3!E{8F|^Zdpzu;TvLCx3YX4&OhX_=S-L=l_1IfBxi=2z2j9AtU7fzb_s{ z`7J}={=fb*8U}pKK^L9y7k{j@x^WEAPsVK>r0Vo;rqT~%j)K#>El99B3eY%Q6a4d< zZzHu6H)49>Oc^C7KPLWOZ(NCYD-V%Tu}==a)OpH|sPfe)o%6W6(`H8#tG+qL=pIbE zUt@`y5NP%BjIv;gomOx3|Dz!9xc^#L91L5rm$xfy#3zf3m%t$%M*|M zXhtfvo0sbs>5mpE9)(i?d6=To>Ll4RF~TY01D^1nFgiTjKpgk>9xT9D@%%!Snnkp+ zyc~(oEf@S5H>Y+_3d7Bm)BacB(mgt@Nn10weQz!f-pyz{?Z9`vp4N_8E>1Li(?C2# z0!>X$l~9<-Ujtzo@dMvdEM0y%o#sV0K;EadU&9Tionf>AJ7g%sR%V_{|Hh!D=x&Kp0XZ#I%Y^*$7FV z!KpLUO+IzDz~ARAyugX#fZ-N%DJAr>UDZ9Eu1fi{DvQZ=y4S$w@yAv_X)adMEV#YE zlZVTln_JT^r2R|wP5z$;-7R~?Yso|8gXektMQ^e-tH>pa$66{QRXo-jH5q3<4ipKu zlskz)O}5>e_(!M3iI@E~0)=Q;)MPfe3^?%6N_?^x!8W72VOFdrwhPuV_UW6f14%Cs zN`ZAdLn5{6OMsX$bNnU5qf&fiixlq=)>2(;=42D21$`L>L}V1l@8k&iWfVt(3&*)v zATGIu-{FGC3iNiGzx|4cGlo%-_Yq${CnQVeALgvG_(6wBe4P~;Kx~XNp37JzQ;4hm zZ5Qi1!YJw<;gD5WcrK;>WIP8F$6im%$3Lz2pA?7PC4rxLDpg@54!0mo-RIe}jzg6I zG}{DejDp&MFa?dE*!bpmf&u`JNslI{aTP8%fYj-&iJdXXL{3v??7%jE;95-@j}}qf z_B|D&Kl89i3X*rfl5zEZDiTga#kko5zyQ8FLj$uqLy6c=s+Dz; zS*;Y~uo{Z@2Ia?k6eG+)nPHiaH6u>*6&=O*Xt*V2j9aGIm3}GAQJKQ%yh#waPLH~l z?VxZM4$B{+-tW6oF)XfO+|=)3H!hEduezSvu&!|0L$1+4k%PC+0IIq~EJ$To%VU`J znK-Y}RV`bm&=(;e^UTYYX~Y_22G&P{{uqVjDk9gJ%w2p9&B`!z-WD2LTxNdv`15xD zq?w~G;*z26#@#W1)hdp#e)}u)`h$UQ>0)uA=Y`$Xbggt9>qY|meRek08(oT3dc9mX zqrGb_uUbtr*7+`A0_1T1jZWO^B{rbm{K@3#7Gk_W$mMXu(NKyeu-txBru(W88Y*A7 zw;I=&Fq)+Z?P3#A5L+OnpaCRUY2fw0BQF}ck~ZEL8f^jj zpF9V*1u#8eBnSSTSwHznxi!P+AoJl$#W)`Y7<6Wj9|m1>_b zw1-+>h?qwGs+A%YPceAFIQJ`7OeH-j9i37szPB_O79rmHIaY~+_m%)U2x{sro~4k! zr|jVK>;^BT3THM?0-bWK5~t5QpPEggal(i01F+O}#*gtJu!c(QF6W35`_SCIxUfk_HWc_ZB6A)XN-Ak z4PoSk$|aeU!(~(~yy3;E>$=*r3&o}Yx-^&)gt8{3(G8W-Rf+&}jalF*x6|40(>8bD zi#?TQE5~W1Tz;Z8_Q(t{!m>$`C+$4fk=0T+i|S$v)Ff9ebOnq2#<7q-X9b~DIia-2 zDH(p%l zwL^~ymXor)Vk2P%nX4HMX2c3Qx&11!5efd0pC7p4Y^t?N)}x_<&?_d~M~1fbTEfs{ zEOFMOKt(k&`jlHrYkFY-&F3qF*39EXdxEgiI+Kzu9C*mAmt7EqFae`) z>)tW2r%sOIdr6RePrE1ZIU)mB@}v2(O1hi^Pv71zyp{mU%43klXvnTpZ_F2XpAVFQ$u;%|V{i*JOp_kX!n(BCHfG zn6*Nz+Ul}jyM237sZ`k#bln}7QzhRDGIz#Zg8a!m&)>W%iuw%hKqX6-pef_#Qc^;) zDBgh2l!>z$ixc$V^TT*fzMbo`N|beRJN8k-)-@<2J&To^N5y^9&lCO<8KED5GOh?K z?VwQmX~Lfry=4zosqRmE>^}=Y$+_lm%Qd80?a$OWPY*mADSkZvy^nvw6M$%%7IffwW8+jHdFyk;uzq5f;r^MZZp-N98M)6$Rekf3B9n z1PZ-O9y}+0{EG})0l~gB`aQe5<{!@5f=ys#`<8<}CSmacBPj}3(J_T8ibK&Kb%X#iuA8%>i;ym+R z%-4{=pzCn9{LYsCpTx5;@X1g9!Yb>0@b#A0TU>s1GVvD^0`@!U;>~*~YHtQrC_$ot zJ9Ov}rLpUwRQ^B6bJLu|hbfikc5GWhKD;8zI?iLn(fwp)ttP*7ocbqmTu>B(zSm>U7r=*U+sG4`M@*QnX^>dNFD##@1@tnTM(8fcEt8 zi#JjGUQKArnq8C-zgOnhbEYk)PJNrx^>+@Sp?CD7l*9vKI0BiRA&TXIGOu3anqrVr z#;2sLAOj8Befi2|sX}FYbsYSpmnc=76@69d@i%XxtA_QaTOPWKSC9FM#oN8Zuce1y z8bQIl%=}tZRwx|9>JJZUAo8^lIWO0pu zbe!{`u4;w0c10w8HToyZ2w5>c>W(+8LcYbe44qEDr=GB6^pf-lQds-(!bfJkJzL zjmL#&9v3UGhqIwoUyaD~@kirm>C%B#!v~8>X;mAqrtvsh}Ha};{_BrCc<@MI)HMg@|J=e0l@j6{ve(C7XBR}|z zR<2khMdO{tSso(4{pKgS|Gp>La)D<`98f+&e)ZBcq}%^Op6^dC9q4n(aE>$t98Xnm z$c?ad>kfMBjStz{{*YYf<|i8Q-pBOn%kMECes|%Jn|5m6&T=)+qQ95X=buh=V<8M( zJe{&CeM<6vdi~W8XwM$o5ATTgKB0AMH%K;>2N$S^q^;X1Y4}M=PGz~@r(L_^B+lDC zQeu>+{~G6cbf&9(N~39>@kmFUH!L(wdFWBw3FLk9@fT_A=aXDXwv3w3S(axR%1db# zE40OT-yTDoHf|9TClAeoIBgee8S4*5eCodUx%_fv$<23eZ6h~-E>FndO}5AaMX zgWjhz$(xk4Px?lJt8XCx=1p6rA0J^$9t7~yI!J`;=T!Wibmsh@Lx87+JU_H(4{x;K z!_&W`Y|)i-{1Nl#685U78X*+7b1y5=*liI9j1R?mZe6>6gv@I(5B3YGK*@=zGG~Pn zY9p`4!kl%@vMoF>EhBVTwh9GQ?fTVZxn@v^KixO{dK!FFU$!hOLdRKKh`BVDZ(TIP zW@D9T@gZN7H(fZvKJ&0_76D2yi_c-{7s&F!ZB;qmWWipp%E~(4yaCpCB}=mP8`GnY zr?X$Z%7H#qH9SOkREwxWArZcm6qn3KJ{2gmhCf>j#?#KNyQCgLp}uVRvYTRd#wlRqoKU1^xQXJX*VSE4A(1Ogdw(Mj0;$ z+$q^y^x%OER=AZDe`t81U`;wS^w?q;0b3GRVM{mcn2L0CVysF3W6C@lH~MFqGkqy9 zPc7ko**MA;a8Ro0Ll8WUbB8X<`LOu`lwfKSi$Nr!PAH}F`f-FK?7J?cDwfIG0m?qm zVA-l2>_I{Mr9KpcLj35G&P_$e4J&uBoc2qM>$&gBYY!%Rfq?=FKlsPP+Vv`7L7F7> z$Ff^|CBPc?!@PVIR)VnnTgYaGTM?Q^}`%P`-}s z2?>ex#8VHr%TyYab*6l^OqCBu1ZRHbt8q3(?ytt@R|n1SOwY}o_Y5@70N$D(=X&jw zTknR_IrD3rlLqM;k8_nDJCi^C%tMrzXe&w-XV7YSN~`&lkA2MLrF7o%dTaCGrvZ5o zlsC@xCH_=$Xd39Xd_B)kjz=DSl45r40-1amw9C#NXDU^y#A8_m%OWI#1J1nhLp;h= zx$R?KSwN%VRJ171mgV$iVW&8RgoGp-{_Mlz?n2A3j}`?52T)j8usiy6yjkje>lhQW zi{5+vYd02P>a2_22fYVr=?Cb!7anCFKB-dvV^7@6ZHyq z&pIMrc`A)LUMK`CR=n}Y9G>GH=6P(TGNtLs0U`86|D*I!pKN-x|6zKp{}Fm>;9=@q zE0Rv+#Mp|a6Fkp6Zht)Slw9vEJ~&5hiIX|wl<|Mj=vTj{b<4L=v64k;2fIB&K)Zty z3%=eEFxNbC=otHID=pS@V_yAMR$}!Y(2-y)lYNklJ-CY${9Mit%O#+MTq0LpF>xnA5|BQ@utts9}rRbmg$_)S-I|kw@i+5ljkiMghySu_Jz_ z&)@lhk`vPCU}}~u4@FNsfwEj(7Nx=n2W26E55_O$r**`bh#)da9ge#{nn58c^J!*L zoagfmn$;8~;BsC?*Sb?9x}|!7A>o`UY3bM;T01V=e8I_?~?Asy{kBP++(a{gQ5+ZYy@b@eTtNkbM1(@K!=Fi zl}KNI{2O&2(1yCO^&56xo&3q~Hm!>W{PiIy30xRDG9Ktyo{FHI3(7U0O18Nx;&sx2 zbJv)|d665z9t6s&m`FpY~&l5#MRVLiJB3>f+qT{+3%!UKYH zKtUROy~zt47Y9D&E0&|y9h=C23eA6~Uaj4ZF|{6AjyW0x{s{!op3(MVcg54-Ay?4E z3E$FRj5#b5_xhM91=ts8JWCX{162O`Ahz+tZYex zbJei0P*!-eQ(At&YX414+{??bGucUOMGA7|L7&H$W1_|sAD<`|sg)~N?azC8!ikr1 z9~Uj+agFgRAkfdv8z+02e|fGa>JP=FpRX@Z#uMcOM_5=D8B6x>Pm{Dju4l!H*bFCE zQGhR>`;zxjnbKt_l<8Fll!tM-Ql*L%zh{rUV1?JIhVPY)A9&zJNbfTgG6{PUDJLg~D*IL@e}7+Lp)%%hdqMlbOI~nrkoW)v zK?xoUeM`1+kJ*qlk?{=(@S`&P(tA3-85vo$ckezbSGKIQ&Ar^FAb;u7r33?v*YR;& z?-R!U=@I91=)q5BN~!@1VuAo2a4S ziu}Mkzj~=`-tLX2frn@RMI3^&&D$~dFYrUV^7X4s`}QSE`Dl~4*9Z7xT{6d^jrei8 z2DDeS;pCKLmbo~OBR0Ltfpm-)7)PK`0~U6$sD7>17(DLAe25lW5{X#>lh$XzH*<9^k$b|_w+8_$l zzJ*kbiu#CGLEi}4lxq-s!m=>w=2-mUOlKqy_R6hAw%cpOON zd++B~XsNts(pSMJnXU0K)|TQvj(&tbg|Pw?w0KrjdF$(tZ{I$4Y|j15&(D|2m-pc| zx?lPc%1=s6=J-m&6J=n+3*Ml`Du-*Y9c()Y=QO>qc$V$knh`v8HRj@$1hEyK!F_ACJV`?1ZiF5Q{jQ3g>(C*>q1;+cT zRjW#$3=YvgX}5>`_@C;Tr2J9;WFA8fu=3WYe0dp9Q6^lvTzehg3s;*$9B94au4(CM z2Pq{bMe1XZ3$}6=`S6d>q;X@4h^QfBKE^M!-N2v#dEVmv2hU?)ZXeEodw}r-&rPDb z(q1sGp~ z+j*abc-~}z$1_;C72&zzu_JWsFy^D!Jb;x-$FkV}8^41Vu|KGIlR7p!fqj~#@$%26 zRE8Tkse#9@-v_owgdTW0)N0|xhY#0|s`F$Nq zuz+g5@|?rGxK_OgO5r}RXzpri+Nz%P6SPZ&9g(|a4&J42E3sZfH0A?yr>~G@sI}{b zOFvZ$ILU-=<|-6@&c#aPVdg@D3y|O)CLqXL)nhyPU7-T|eBa6SKS;r$_Lv$L z9xMtsC;@>X{KvxxCM_j{I`(QI{7gS`!Dfp%<;BEX&GBHyTJ+|v8_Ek>Y*ajDXV|{wKo2F} zZdQWr--ii?-D~k8EQ16;+%nR0c*BF8!WvsSZ&@3|$}`*QO*);oLS1p%*U`ZP!+hBq zZKe37!=yMidJp~e%W`Vkrk+q^*VV|i(Xvz&a=_&Ga8B-K5K@00xO^(G2`w*I#U>O` z4yLkyxiw27xgK~36Fa61railO0?*58Ve*TC6-!=q(l12j#~|eTHgFVRz{*oyX#d8zBbEBaE4ra{!S*+8BI_m`!pm{_8W zYSmjZ&+DjB_+_+W#TqF~<<$o(6goEzdw{~jyE6Y;ijFNb+gCSc${Yvx?))8l4(>dBWGr`A-H>woWEPx1sgT_#VBL$9I{Bd5}w*-LpM zRfRtJcs#O6P`oEh_@3Lr6LkN*PfPyr@T&9zV}Xej#xN*?9)I)&F1syb*OnCyjo6}Y zk?_FF7M2w!5DX;*I#>|nuHFa_3JhXZ%owhz57YFnCMEiY7L@3J+Gr}F5I+k z+LkbpzW1IdS-uujt9Bo1UVi{BS-e8{z>@op+n(V2{}$ac>_NHzp?v=*fBmDR;|GdD z1SnddnA^B9Qm#>dw5=;Izk~0^9EqDS{#$Mvb=_^_qcLNJ28rK&Gld>`@I^O2#Etvv z8+vy5n>eLSytJuym8)ebqQ8HAdicSYuJ3D;L^Tq~xr+>X1qA4U(}Kb+fCZ^pkmFEbuZ3l}V*t{sO8 ze*UaXSh<3I%(}vyzZS6Kv@74sfmDO((Lb>q401p*Gw!R&qC}`&rz0z`+tQa~C%Nk# z$`gl~Gv?8?*W5*Qc^n803n5^vAL@SpZ3bP@_jW01^X6?-kMVou<#%~Pe5uINw#6V> zG6n*a7sm?Q!B^eEZRRo_FM8AU*WM%d6=_;WJ+5B0j#@V#$Zfm7^o`qYd03Pz;I(}D zDqgNMklx^SS+!~>ZdWzvnyc?*r58`)m=^;2XJAk>s#mWz_3C;peLe9fYQdX4=~yB} zuAkAP#?lMVy)9Q*;#R-P;FIcs_MviO>1}XGb8crhai450OL5T_Z@S?jdf=fKSaFaf z7^@UL z_tYr)K(m_1yHcWzs7+sf`3-e!J(%ipUHt>vaeG)QyddxX{i&zzs~|={d*#LV>B%Qv zqI>RooE5bpa_`_T`1V^L@!HpsZ^n$jSTWL2#?MQ;-$>65e}e}0yHk{>7{4&?Z*(mO z1wE8Yp`p!WoW=FscRa;y%3fl*V#R9izx`#rfdX{o2cLt4zWerPQCilmdo!06L9i-E zK>hZxBJ751@0B(X7S@8t==W)Nl5M3bL>@msd_RrbXOOgutFF9_ex3Fw`&tU&`r8&U zOL=TMY0PKkCIaMZ5Il%pd-Yu&JDYMlj-bJV?jSs8wB7wVV-DYgmfT-%;_)hiKKpdM zyq6;XS7X1C@&3MhpW-%Mi^3zS(MvD9Eg#;HAJ4i^KK_cr_<4b6;SJZ_OAF^OwUtZI zBygDV$6tB)fBxBcQP3hS?=z{D^cy@|pb%C0rcIsB?*y%we;e-i&FP)DM~P2pkL*Cj9RNXHmn)3-14xrXm?Pky&}U6ju#2Yp!E?vf?TxR2QHKXLr= zuXC##xv#xRZ5j=cHsj~t#r-^xe6D`*`)@O;Yq$2)s(E!jJ|OQnP{=`POBBP)j7RZ( z>?k-ALQJ@wlo^^>Nm7-#u~b$S3^;%RpZ@2n|7>C)4rZdAHFh? z_9gIU3A};~A3!iC?K`*=D~6BK*!O;>pU2InCcIHYzd>E(ogN=4@b7wCkk{WMImbBf zFU(W_TD35e#=Jh6 z7SCEsJqERApL4Z@I+QnNELXk^1%yD(k)HzO;CQ0l8-7ll9Kp8v|?U0{TU9VuF0j{MPj z`Js=jg|k;!sVN6UCf@Ks(pM~6Z@oSI3u}@q-}Im7S*)C6V}KJ<{@N9r+-2>Gis!sz zEjIg=IM8T)*lD9RcH|FIkI&!#-g^D9PpvtBED>HH=H;%|gpa0JBVHJ1eeuB$*2GVy zS|eT@XYsbj!UH(*PN~9o$CeoDt*1VhdV>~xQ8)gQD*w}enrprP!dJrM?We!6mdsx* z`OJ?&;B*L}4J9QdS*!?>cBk$4boow~4!#JpX8px)3PDzOmfe>Tr)BU%6qnZaZBcle zux=i9ueECBT8kBO7F!co5mmZbqdxr9;)lPLyf4MNwC6PzzpP81g$tK*o;p@^RE%8z z_UjDc!4q_gzxrAH^2*oYR^;ZbR%&Xh(C~}86;!Uh#S<2x89#0^)07e3AaM5I(I1Yr zZo2V)k%K3e*2^!wZFO#ch2-<39rfX7QZ~wB#g4@aK)L?;r(dMpUw^S><4LHLG2@Tf zk{%PYTha&gzd^2-EnR7`g`CBcExF#XVY8%PedQh2Xf6X`$>QabHgE1ii>)3ko`}o! z?Ah~J)(koS?bqD#kS8-%)qqZtclE0ElK$SiqpggL4C}Ai^W~bqrdyj?c3#G1U3JCH z*03Ay6M9zoNc#8RPmytkCs}+QW{n^Bjimqh!!$`B`^6;T$BH4jW`&@nCnu*^tUR+G zxPQ3CRy@mlIl6 zMp}J(4Yh8)`F`e~EM;6X_;$&U%=72{ZB_AYXR%_;suR)O>e+3u6}Nkj@SVzhn>V`5 z3*T(M$H%R{y|1;dx%xJXEq0h@ul3*qPYGY#BZMa&d(j#?HcI{f~rKVxm3P_v<^9uS2En1B0(8eJ|;(bP!(JmvFrC z`g^QrhrcHA_~A*Q&;p+|YwY{$**2#CK2zvNj{L;B;_{oNe#+p@*FUg$@-COGv=UyA zKl;3dve`;2PoJ>cSD5uT_dSG%9(cy`Ua!59-n+*&UhfU=qb+xhllm`Pr%K)-SKY<^ zXsnzAOWbRO?c1V7#wVY6QLx8&LF6ZK%a^U>z;_(-(CiQzuU*$=sRf;-VQ>XqW z?FV(jSi=eo;kR(%61kqs{R#Jum34B>lYB|P{4(^-P-&OAH{X9ZMbg)<*&yj(Px{Vk zT<20bU$t_bq_IygX^(6nWZiJxUDB2?CZQgK2i;~p{nX1m9_Gkc@xc90F-8xGY+$18 z2K0S<4YNM`bR3V($GEO(+?G37tZbCB*sqk7_12psrC;sb8N=gcXNwh+lFrs=l8(NJ zHiy1hkNZHI7MEIVbt*Jk7A{_X@g3`~J06#KZ3mw9=+Sksq@zCpLsojqHE_Rn$lVsk z3%200J{t46)uYQ0={spGH-BKX9(nKu>xJju;J$K5`tJ2Z@3!u_^9jixwR4y7W1nSm zP1IDL8@SN6k3Pmr@2s-a%KGugDOP$~y2U;Tx&6d)-ip@sjB`wMtl;#*^KVF8N{T)1 zKlQ}R9)0x#uYDCb-*=DQ&oO52+z~DH;SU1V5FQJ1`}zk~gPOhMzOX`7WFPs#Co%@I z-$|=RXcwzS)%No2U<*%4XN8E=4L@36{-7gq{re8HKIHre=)1u7wO8J^fCpP5TI_>R z;@B^q(CC=YzT4#bf%~7fnl zn6y2WH}9BV)%xno$x_xl9#fJ3r5D~3tfQlMaoLwzcii@{q-)ziJ_nm6y*p0EQH)0jPR#LaW(!Y==Z_Ln{*Bk)Ezbj14qL;YewpLyTWrZJG}uAz9*3rG+TgUd#%&#omSGGR34jypKM_tcNyhF2bip3xNti^Lz$sCt`!dbjwpv60kT5P!CX3M?> zc^{hg2}>5I#Eq|89*P(%FN+*zu#h?Ll#@l z$cycYU-QH$Qzlb7na4{%g7akxeGCt6wuG~G?u@oR zWaUK_ze{8?3tH{N7^~`pceB2k{3D_z@X`@3yFO3yr^)q=*WYJ7_sknoCge%jgGpI6 z>yJNd#YnxH-K~#C+sX!H0MFpE?X7RWv3atEf%Wm2FN7B++}94dOV0IY_*1V~ce^If zqep#ab!vB|j7d;NV6p*h5bVhoSuxSJ;twAdx^^05v2~uZVg-af;X%aw`HLj~u9!H% zF`dVpF{8e)+P1n}=utnSMtR0oDEzv1yjqkWAi~6+H{K9>Z$Iz8J=(go$Iv`u=&L+| zWNRLYgCc^L+F85|Nbd85@!yC{P@=Nab~$HDAvbGY=4*XB`Db|{`+K21nX4Jr*zV|A_?L4TOYE9vqA^q?YBN;MMK`U z@${42Htw_)D<6OSrFGT7Tl2iEzWwHhtZ05f^4rQRVg*5rT;QjCQ+i+YXDZg{+QkuaGn- z5FmGc3OJ{nM9r)@bLL4t{HQW(F@KoQpdWOgM8-G{-czTXzOSN>4ZHq+_eUP^gYuHd z*Mh>xv#&=*?Xs3FwH4q{&S|i5CdmuMILcqPbd@Hv($H2oqKzS3Ip9|J2bQ_4cmlmD zW0204PS%jC?yz{-q>RJ+_?~y|colz)m?#rN&_l_iLB|&;X%U>`$B(R_3aQk={ho>R zFFv1Og;Z{jQ%eW4OifI%mF$Rwat$(IGCXbC?^a2=gq5%R zMArTMo()C4_RqK87-v+ZyF&t@jAe zE)6sP{7dcut`|6-+s=E~wd0^X_g(Xv!E5i8$5w2sEV%l{*- zqkBGQ<=aoz(YTMT6GwB$aCe^bIGM|aAWz*o!h(^AGhjZ6|5F9$Sgds3;xx^9^hW0` z&Y7n$&hx8de({ANgW+iqI2{7T`Jq~%0ZWSDw?hNWPBp-<4*n6~#|*oXAi#We(x~64 z>wuQL(@7&8OvUIpy#V%=KM?beorLq7J_`A)&dOI+S;m>68gF!>=6vHDHGu z1eMJ{AlK&&=$+VV9&|QVuUA&14@)Y)M3Kyg8ni3bv=Z4MLfk zea+xCl!NV{xRR8EYwX|{6zW4CjrxX0zyBjIYd=h(;r1AV{-Qzq4o?#44c?jWyB}B3 zu=?PV}Z&k9A_zAMV@vx^l*GA?xK&;T=GA%kDLsXxu7-={2Nv-@Mb z15;^^-_O1+Y$wWFqtba9Nx0BrNgOtx>3(@rUT(He;>5`;$05YUCh}6Fa9J*e%3@4~ z4{d&^_58lPgyQ0LO93ne*Y$s`ojgB4st|k7CoWAYsdr(^Z6dgHYJN&)# zwx=mNGL_1fFU~j~qDC#N3P04ZMdPY+{}i`CUQ)0pZoiC6Ai~mqeyz(RuPu!I%L)yu zTfc@}@JlV5`4?j>BIuh*e+u8&T?zE&8zbqnFJ{u!SF|Tz-jIhaANiks-m%Xm1o+HD z;Exxwv})*egXH=cFV{tgieE?_I=;!ij>_=TLcTxj3y&?~cL^=d|lKR?OLKRTW_Z-FH!jd_XXYC6%X1&#gcL*6lRqmV`K zjN@gNC%28MKh3n+NPEQkjNJAv&noVd2r6@Nmk%V!g7%d+9Adwt#dwLZ-9NQnSdwYi zi`^g`KkD9n*z?{D9x_na!3Wkyye#|G*S~V~U+!PIqU9~tb)_;E<9mp}FU{g-s$|LH zat;?4#o5mr0>&7G-*}nmtwZ0XVE+o#Z%A`WO}3XeBW-tV0xxZ@A?2c-BJ{qrn;g+r zG7lV~;412Z!rrZ|ZL1oxybwfqFTf^F2&S|}u9U$`>an;5EWi`T#fz5FBlo>Q8@C_gWr}TRFZ;KPs2cOIjjy}C;OML$Hl!V&LcIA6DJBQLXlk7mx^L3iHPg|ZK2vX38IUZ)t| z&b94>ANoDU3C~cvR4(TF9tk>DKrrd4`)V#P+t*xW-i=TLmXB8rs86rI{3$*An6s~! z5kJ4jjzgxJ;!9M=FZk-xpqMhc8kKu=wHMH6D*7Bz1pBnZc*3jBxXuX)$+TeRM(Wk+ z7I|irX8%#^wr-)J*Imwj4fhLOh4S`&g$(G2?1aU=Od15*k6AHBoqO6F0_a#6QKKp) zrlkrWjPD5cn9u(3%9oHazkX9ZUv2+&@B;}Si)d$XCsENgHUcaDuuVs36J2@PJ(QN5 z!@iS>@@7P-bk{>YrGKJ+A>5zPZ_&&=j@MI5{q_QgP(7^V)h7xdr`*m z*gX7qN2Srt_jMKd&~{riIr*8iFNw!&26^A!{nV*veWqp1fjj@V@6g81%QB%(id6#d z8aeL|PuzD=zsqeO%s>D32`_*Dn3s}AaQ;TTyZhsG-SvarzSxART@wG=&w6bSr5x=w zcZ|s0%uU<8j$ucSY8p!}<5XClzF)@WBbJr+{9LhVJ?~-jwh^wp`TG!4na#2A5wQC` z`wHZxrxq_YrDN!WJjXkpN>)*B`|SGTL<*Lgb4NkIeJ|qqJhqecSKF7iAC1RR-@R+r zt4^2SP?G&0+Ve@|0X_Po1Uw5|BNE5Tx$?tN%K)vN&(5gvN{e*mt+Yy`*G^icM}6J0 zAd&-%h+ipBc}QNDtls(9@_FW0-pU8*$glA>y%Z?%p80WYf@M?0V%H9xMMeC=!GKnJrsoiklh z?B0&kJRQ@MPHDAF$>93YIF$p@h|^B)nT~5Gf9JWTDSzhT9u$?IXE{o1js}4Xi9mTD zObl!%`V}hFcE8-NS-pYUwQnto5OsR24}Hj6wv7F9@WH4T*auQLPv(xwLl_D$IJv&< zmWTL7w=_FbULj8Tckb9lAC7*@?F#~a9r<;e9i7`REKs;dZ%d^Y-?*Euxn>YM1kd4@ zdnlAXVQ1jBa>VYRMcAowDm7`+lD_!-Gy3AIk&@2KHK|wczHa#;BSI18ALd()l31aD z0Obx_+tGr>Tj;?@>=zSE$OjMY$vgPnFA5+`D%dhZ_~M1XaeY7WnPlh3<^vY3U%Qho zySyu+WP*>ECxj}ju-~>VhUEZnn}1v!lyX%CANZlW_wFa?6ZV6*owrVhl0%)!JN;w` zGycI)=Nvoiaq+My0ZWvyCxKs1c$X)2(q5QBF58&Y(&mfzQOHd|a;_Q@H z%f=B{#O~VTO1CElak~?!dCOYtm*)@-9da-AXB^Vgm&inqm-*4>V@C>qv;zcQ)+R@M z(16dS)vMOB5~aIKhUV-e?{4batpm;ZYaw;-!9GkF`z!k2N!MK0`((b%sX_(&BT>qJ zdvXir2M!#NGEmpbqCi_uFTDH~w~6lT?=G92iQ~Q>VWondS0`~ktN=mKi7h6qX=zZ( zZQ-_J%Q5JX4-?~~M_3VS-(E!Xx&3^AqwTLJJx_1G`Wan%S$n#A(5=*&67shyyAqr&uG1{84z2k zGif}R&pu{ceJanr;eNG#{U&P5n-;J|DEo0Oc2fVfWzSopw=0FlmeHO_yXAEymgY(6 zk|oROnxTV;mvdA7`gKJi6d!-9^ilA|?&90IKLKm>WdycX5~t|3Yu6Ixs`fpkvptcm za8m)8-g%#dfg{a5rZJ}2tb}_FE2|!-)@@oyyT$l)l<#-05*+=!2(4YaUKCnv*+s2d zHJ1%to`3dD?kfpWgx&S+NxjxPS59m|Qj#)hwI~Yp1Ek%C?RIQ4@%(iNjwHvW)(|+wP3QG9Vd+W8a zl78}!qhLoOa4yFV$z6Iqfo9Q5bRML%3va+)!4bK^TI4;Y|sNZLOA@?73gc1=- zd-QEQ+w@jx{h>5N+r`)z#{QQ!uHPno3UxthXOWJ7`1L%_ZKZkhCi4EE_aC_T;16M+IdEs|bap0hkJ}9z z)TOV+e@GvE_^OOAojbRevG2CqZxFe2e}EbOa}U~|oN+A5NkQvif5>ztOH*gxU|cUv z*Jn8DrSDUo&uwJG`-uq`2LjUm&>4!Arec*YrxOPj(1}B_{KCimiQA)fU?~;#?N3FD z<2?rr`qaud)Joffw;F06sTNU%Hy5blCOIh&w?n(1+a%6&#GFL$;^ZyfGtTqcmDPR7 zFWv4Nb_dBr;~}du%0t7E&iwh&XgrQ*lHW;h&J6+ujlk)9`#F^8*|41~oM||hYaVyP zss+=KoBPo%4-KMW_gqPho7Z(`bJMwF>=S3a@NuN0Gur97w2ov~nyY+Af+rs&d5d#o z$(NVX*m9gauz2!SI*E75uRL(flkQ9~=LUfbfPl8&`VHz({hB@L_18!6m+)P(0~jxD z;!O))WarJdiL+&1(sz=Ca4Jp|L5mkJVMp7rA}K->#!sek<0i|C=Pususdn86R>qZ= z-47>E{$6-!x!741Ve#T+vYQ+xx?{brMgRan07*naR1ZCVEj{_*7;*4lp+ZICWo#_R zv$FFYX!Ru)%05=>uvJ@#SXW^KgEwCvL+vl=ZciXU>DF$v$XBZ}^0r~Gi5j7dj$L=fG2+Z!?wz|My3&xST{pH1}} z*oqa%rB)y9JGQ2YUymVP<|j%7UbaH7zBZhC_vyl8fGyPZH(X60j(L-2%w9-+`}J~3 zss~o~;APGg^rcL%?PIV^nrhdoC6_CfuVjUak62`l7%_%^{dI=KLoQhHcm{i?TDuHP zs78z&Pq^n$j^&nY=fVW_m)|GQAJb>^E|l5C%h2eFryit!{d>p+ZrRFN6wVeJK0f7T zr$JsW#ThG!60HjFmfEOJFL3~m&3B+of^+Lj`}A<%C%-bq=$`v-r3vG{r5-&y(}MYn zMd`O;%QC7S;e{_N4zLMEn-=})<1ynzK@4lT&p#b60z)~59TM-p^D*8iVT$ZjSFW57 z&0oM4LC?M>n@`v^vwvY70*CG&y#KlEw3)+>m#0nrT@q{5h>&9uR%&Tmv2(E%7wA z3&_aKG>jP|CxxJTDKYnKS2z*cjJ-`Q>-Eq8a5L zdo&+*KSc=S9dj{h#%3|Ez3~hylhS-7FCT0|VKzt2AxdvYl?ew%{$0ScsUee2Qm>3Cg z1;1xdsiF8ko4$&hVmG5)ATVA(aNiRr_4Q|lzsi065L-Xhkm7l1BwOTW%0@RM-v5GX zRqrJI1o=C)zkZz??q@PqVMpZ2lYbEY`VjyZdMoSJtwV7sfAhu>Jl=8}gYxP2JKvy| z?IR=)l+Flw$NZ0Y%>P5;^?AWduVpt{Yzi>?!!LQ0k~_uns~+>ursZzgup=(U#idJ^ zOMYp4x$xRN`4=l)5ZYYQf+m0WiHuQ@ZxLI8zV+@4tk|>LeWS(=DEaV`y!@YgO%(0O z5B?|hM~+veE$Y7`cAjj4#7on;EpMh~%^MRhs~5%t8=kCWTDk?^l zoI{7)DbHby@r@fdlxI;k?{e-vxD;R7IGseUIB!X|(%!xwyzEzU+4b`P(ZvtSeDBZg zkLY)PZlB!NoPwD1e;xt*J{BnxLB)b^q~f6uQ}L?9`TsF07IZZgEmzYelK1<4F7o2N zP2Y9TCBMmI5HJW7J_0Ad*%W@6CzrtEjt&;EV!;c5UY|^CVhjQXfr|kFyy&5y!kTF6 z@1IZ-@1}&EDg%QqrF!*i^X^~a^v-)Pim2M3^-CL+O|V>8xpE5KbMK4Pw)FtE5a~(p zKL0&+>)u(uhQIs4bM(j~_ffcSH)_}7YMy)~F|P{lu>s4<-g{>Z4Z7-b!ftYyu-$Rj zP1Ns-mTU!3pL%o|Ot9kU)vGgA2?-K8bixwC*VuLLvi`lPdBeVR&7k{OZa-Ff@HX&{ z_aK$~rkjV-6$3iTE{PQ@cB1LO&1HTKM9~1o0|xdL#SnIE?A>E1wd4tFn>Nh}JHVl? zuwuBKt$Ode?KxH`cA|cl^&?xwo(-MCPZbPgh}L%Tq~Piy}B{h?c|<6@#rh=$qknzJTOUa z)vOQKcLH0Fb*08l8ql40Jj(UyEsCX?fBs1~+;9ywsL_*pcNxYOJ%>3T@7Tu{8MqhU z{5X<6c=u0M1ax8fy3(Xi7mH#Q))v?)Yk$rvnRE=}dxRbBaL?DW;&svAv%K)F;#PEi z`@&j4++XjH@x5x-{u0?;wn~*?>d@v28uh_=svF+T-8VZhX79Z_Ml82lG`gHR zva*96#Z#X?y!?mz9eavpIUM(fZ$ZK?+%LQR!g?o>`+zez@zXI)mvw&r<=Zs=)R)^jlx$FpYrR^vZf@@i%{xJMyyOac=E--df8T4x(h6mXB@toQ!`zbX zCdA86S=m>uS{Uz?`77Oa+l{QW=}0}=-b&TNLwWga?vC)eIqju|_7YEywX2q=9cVqU zM7~BuIQg*BIXt`$4eUQmc5-}rS*c&+jQaAhcdESwNU!`r(fxgJ8zP);L>h)PykzL`S{q& z_`!SR=$C2Kn0NR&bP0v9bG9)8zyD^0THR-Es49 zx_MX+N=?a>4?0j1LrI-?%wNy_!ggZ-Yc`^Awi=BlU*FEW18+Dj`h5qz{K}J3CO#VR z1`pJ=D?eMiU&A}4hVuAwn4d{aBpv+}<8to3=C;iD7V!w^kL&}Km0#^xzRvXQQ}5F? zgKy(;CPy%8!2G}aHZT9Ij9mWcLkZCtdGJF!NXk4UWi)059;`1f?bDr_*1eqNY9zaC z-*oe}QhpBK3so|D!yPU&@L$=t5@XUvp2L@2dOg3dwB!C2NLLQJT=+PDY|GRbiBjI$ zpAhM8|Bg1S_yh*|%g3XeZ@FH^ee6(dFL6(F=K~L}qJ(4oE`glAbx>SS9PJqh1PH+` z!3XyV?(XjH5Zr?M5G*)@y9IZ5cXtmEd~hAym*3mn+V^(1YOD7Do?AV)Z{OSf?Q=e7 z|DzknU3&Qm z=vK3DvQ)eU7n^Xmaji!Tz{nUy9gZ^~n0GbU?We=1tCO%dq97$z?JbRF=@AdJEswc- z?D4Bhkci78#&E^Ae~EDR56uTdx#H0}Frk*NG3+-IyeZHwsWkppxD*v1c&q&WJJxaLnJ8kYNa2XsE5NHu4)bA-2?e zY!fCLyj-A8$Kg)RlxmRz(Q>#wf}*VtZ9>KQwQq*I5Vk=z?rb-&GgR~bg%6{6Jjtsk zfccD)N~fKGRM$KRE6JwOc0uiodD{^Ul|=#s>OAv~dfe*!J&II@dcUC>0Z2$rN}2?P z#udYw5{%yoB_~~0#?(fl*5i9v@NX04^|MfMGNm(C)`~gmv^YWdP9r#BjK&(&ydXDQ z?O!+zp54{WApS`(#7~}wWaqguFt#XghPK5Y%WYk_QO?aJy>BUoU5$)BEDadkB1I4; zL_8kBVf%dd_s?YrUL`+&P7486hirdJ@(>pG+3-wd^|7I>B`JIlM5}Rf_{i=sqgDEw zvZ&2{D5Ca*jIKVY^k#78pTP1c7RxsACaA>hW0n;yE$wV)b-UWfb5eRpDH=O9aK215 zUHJN9rw_jEY5a#oZyx#a4VDw=_KMMx(fwdlo zhUA@EwdCD#0?OX#5MEckF=VjoSD{msb1nY>qLf{c?de7kW)2p&;{kq?&=utk5V7XG z^Snlz*M6ZZsm1p6Y|^bcxU?XAZpnn9pT{%R_}2M0`Sjt-_oNR9*EmLD0v`k&+P$5L zpPhE-+E(e$NXmzDlzLP4+RtOeSHGO86ON$}|M~OB$L|!fXgM|8IHRbo(Q(c_&e?}! z0qofqzdzwb-4RpzNt(RVXPWZwtwAt{5AL0v2t|028A7t)o%SLnx`VIxzB^02#DI3U zqTDF|?I90b#l%K^<>SZ;%gy|8agT?uA)YjEVk?=w>y3p$V$LC_-Y7)jKW#?&&!g~h^1{Gl6vc5Y+b+h zPocxfFM%}T9&)1cNbD{el-;QQg{-D}pP}JLT4!K?@qEA=_KQ zWHM+jUt|j%GFQ$7<)zl~Sa_)sXwk-7^zD}e=e0aaXdvt)h-3Mj!b2lh!B}0C(g9Uh zIXBa47~I9@cmHkgG&RVg@)oC_d0kuoOi@VaSEPFk$<1I&?7sFfynEuu(_l`xIPY)0 zH)7t-+aGv3ieP*;8Y=efs@$I32WkBXXWXZ=V)0A~@2~a*X5H%rJnY{IO;b?~P2LBz z>2-w8pgqI`Z`PIQ##7cQUpkp5ZF|*SkQ$ddYP|XTd+GTN@NWv*7d3e} zI4T&tA4ZI8v+j?w=*m6kjH?=WU5}StdR@y2F4;IdXE;teGm7q97heXu^67Iw6zt=j zCtS%{W?XaKCGE@Y@OkPN+c-dZj*|?%gonME+B+bZxXIZ*>y{k@Rv-rFkOD@ZuwKQq zTV467^AwV)xq9S}9gCQD z)|LwkeFx_|kb$v}Ku~L?`*XQW=qWZH7Lkv#IPsLv`nFOuEAfM|Jo8>%ve?63SXq+| z#6NG1vQtxsBRb2;CT;MzVb}eiMby=J)n$&jLVY*yQMxjv%b(iFjInsaOh;7OOFNG{2=+4p;OAcv4i4YXKSE%25V{oomHgU=GVi8+ht+_$j_x}%+*w0IV z5yK`^r?&|O3nDfR>?38>cgD@nYDRtI@1`QaFG!-+S@;M>62bd(_CFKfp4~B~@61hM z?l$Z`7VdrW?-lFT>c*jJ{oV9GheJ82_KD=!5bSBp2{tP%@yg$ z_C!xiWf<`cS?&M2=?K&?co@-rcLjv?wG4aw84DTTCl5?+FFLiz;_}>bGjprwh?jIly?+YRE z@zzmrB${?gqxBRRvsS={!*ni}u57E8Rv5OrdHBUIDg-|Mt{ghw28R^X6%aZbC zMnK)#v0|Nmgl+scr8(lbB=C=;?MsPlNcfSUzL&H#?RplJ`T50HDNh1!Xz(aIVaD#h z&dK%Z#0;|Buz~4bc<~h8pw(^(|K3CYiS$O}?Co5^;Wg_b?S%PN1h=_#SA|H=2m{>w7fISGf*!KtY32Nie*rn4lyNx%^3=t; zMWlrR(Qmbw#2|qSN@Az18dtP9yh@3|LVX%qrT~Wqx{K>AcSWl&W0o)j+$~%Je(>#q z^gTsRO4_Y#>%@9TE>zqQ?iGq!%4+;DWsAvXm407tw2RvyKMxw22w64N@+fsV2iFbR zhzQ5sE0Rr|T{OYyuFZ1m3mslt8?oH%-`&Yl#$?{@ zEUG(;S}vumj-Gu6z0{m(a?3e7=02nNFueRb6FmGtU<~Q_xz0)bec*{8iE>t{^!8*~ z&OmeM{&19F^yVJQ*xjYeOG6NuZy#!Y#ox&Bf6T*cH6+|Mmo!Xt0VGv|Xh0yxh}jwM z=wYMGi{sorENK10-REGKKP~jWYLC3w7`uJfGjNK{-VsN;HLCI@-eV|5Jv7@s!W3xg z@Roeww2$g3Qz@(M?DdKf(?UKqAuKFxP55e!!s4^&p`+Rd0#())MDc{$dRG@6dU$6E zrrQJaASoUH&9o(q?^MNpM55$9q!(3^LZER-$VvoS2j=#6v`PPPTV_5O-8ruEjS>v{ zFpWlrSu|$`G^3y(R_rxZj1)3APvTi}O@uUzIr$>e#?uCmje5k)SFhx)n9I(c#yvkS z8z>A(xAq@*BvBvoC|XHaTC7FbFQ=0dm*8Gf7bG*oRwg*ac6(X+Ka~ zQ0DmTQA>BQV(71RC(R<2=~V?*4>HYLwQ^WBBr+|TeQY{vT+t%N@+L^#wj@{T0%60# z!p^s#Z?;ZMy0M7gX|qhcJ#hNm&!jK6xeE%s`sBv@IPbY%8!lNmBu|n%=^e*%>4S+` z8T+#KwwjqJ6bu6gD2(3!4rv2ag+d43(9p2n@-KRp!J=spW!o35k`1Pfbz=7$o0hZN zaIsvze}Zj#W$U$UwC7AOa;`@#hw1KH!w^;UyOrc&Md^@D004Y-bx@cS5)@a~i2g+p^+Vt|fR-;d z?7mD;coM_6qE%1ovA1@qWGA0Pk|4tlb3~-M4*#FTKS2PtiaCS0y+~XFg>uiObEBj< z_sXE9xuMMx$h7Ubn_f$3tXJ(vbd2IA7mo z3N5?o)9R6*jlxaAR$dvIR%FBaPlTq_rm2q)CN^182JX-)iOPhfo<$~ECM=hX$(`k= zpx@nPajt$0OP}0NYmy-uat~%Wae{9sEs~hnVeTdqZiHX2F;RWL%VKOQ$eloTmuECm zpJ=lg#SCQ9SS3MD_$t)nl3OFTIQsw+M#`>^mq)E8<<`ob`~=a?lT5qnBKi@tbWCf$ z>@|{z$jqntx3CTbWf8K={;ZE&HRq%X#G&G#!7$ZTWvX7nmp%+Bsfpf`jk~QY!=|mB zY>utDhxG4$69)O&yXP={R)vzm{P8UXZ~Cl<9!~}v-aj0`OGCGA%R72z>CW#9tIaC% zZpE5+(ffZNw65R3p0$wuouEIcj>MP5DM9R!rRx*4YM~+V^EA>53KGBkK3GE|x)Nez zL{HIXs!NDw@AIljY9Vr}?Qeokv6|FDy@%6>lj!8%e zuwE!Fb$*Ef=t!lO^YZ2LQ1Ej#vyAPN?(|EG1%&{LRdUFNqlsjHWml0v#EZRLA51`$ zU_q}h1C#@h70SceeWga--Gcl=K(muskaC&WV^VT5m_nScL8P~4$EO#zR1L)~E zoxsGJCQaPR$5C*EL*4ADOan#PE+%Ri^F&2OMQf3u!CIWoju}uFq!vR8y@EouDoaa6 z#hvE3TJf%QnmhrLs`t5oQ&i--l>>vyf&rS{v6_1^>`U<+jnlMY@@R3}D*N<$*_Di} zq-dE$x_3I#*Ht>SxW&Fq`#@iy+4Dyq=ChIH%M)iXvvhnSv2Bs~t{Ph>S<#oO??24U z$^=4!)ivJ@#&OZkk)o6KkrCnH(rQ$6r(s76qROdhQaqu2GZ))=Oe%kujuy)3=B5Ll zMf#m5hY8EISuq7V*C#uXQ8AxiUL2=7+*O|D)5ZdtQj){lO)rr$R4Ey3CJe(A0b6yR za|(RW3$7pyWXQc2Ev&*1q{VNC-((8MJ$qCFT0v4r!|m}c6#XfByx-Z#UO5K8P8S&QX)ZE-W*E+GZ z7*|IeGH-{cr+?1KBmY=13SGy>#8mksT}2kUd{$3+tOOa5jp^b={kD2Xma9pvuBoIZ z?{QZWO?W#c$nqsP_3!YSGkTBwabLQQP0LBP=G0F$do{FFAAbeEJx(?)C|7B{UFE2S z{$B#`G(rFRGdqm+x;!lRM5&ApAWBFG_y$IF;1FdspNi{Tw54B&?f5w~(;Xs2k1%(| zP1Tuk1y2DL3!KWn!&0=~PP`yaNKW{Co+EV6^F3a~03&gW(o{6{FQM+ajPS)yyGD<) zA<_^(_(xuH7tqH;5NhA;{ks*fjvM-?Aoo^FWl|)`_1}IhI-Pmu>q43G+@$buH6uLj zw{pR+1Kgg&`_FeJdSPinW_OZP=+raRI}*&OquSo2mu1l>V2qZovfSPgy76uC+TNl97C(^#)I(%f2u0r5q5}Y~avJ zyj_V>rBu-x8K&CgrO`J)nQxhPnnhgYUdWL<^D)FHfqAw$?8_%Ww>4U8KX+A72CnUz z@t%&x(S=bq-JNyRC-9mH(k{o%Xa$$c073EMi-bXm;M*xrqmbCdQAW7glz}8Fk?8n3xldt&#fG)zd^>SzNU{~Mh@!xF>h^0sg~f$u zKBo0jh5uvJaq<2frU7|blAYRAbY^Rlqkwm|-IE;X{S}>K0`~<*lbM6+zu1lYc*OBn zd*a_;I%FW7kKwCIRl*c$_0bfx8sl8Ra{W4(z^5n?5jWzgoy*w>@b(`J_t<8n-bYsg z$FZ0q$ED%1@Al7Qa*6}$nri_~g?!+H1DZ7Z5oD3}E7_OEinfbQ-<^x6w5Z6b!3NP! zJ5fzkG-P@1`{|d@$9Fqv08JheiFLm_)sv#%{kp1#-F;}$$j`46 z%hlpT>wDgz_}y##qa1P|$&u+|#%1%-(bzoiwEr?g(eK$=%C0>3?1;;oaqecf`-PY* zkT0<~vqBb`CgMyJRmarj*LPTNXWLNB37ygl=y?Q#?ySi$c{5J-e7~l>`Fucfj%p`K zw@Pz2XUsckw2D)N>|#Y)lrBB0_A|s&=Esm-DP^pLYKqmBbCjz|)TJXucv!lufd8 zuNJ{^VcP!wInYq4%>ai%{~?MjGv5|qCg|}NU#vojsLM(6sA`%qo?L8^1wuLZy`ZIp z%k%8}bblX_JYC}KJxbr-;SM(I%EJ-n^d0nGmW&E2rI@yFgJ3+@8xf5q7~NN|Tcb)y zNO0|E)=MJxP1^l7Ig$kb@p}`vH|rsj%i<#X=VkC~iAupZT5ZkqiQL0^)>&#_*5_X< ziV|x*N~s1~Z~h2y^RfoG3DL~n&d>?yRj)YA;D3(?Q+Ap37JgnDfLZ2hNT?T^fp0?I?sYwOw*c%;IQGl3*6X{LVOizFp z0ha^B!RV}C=X=k+P~vutRukwd)^x78YX9J%@r4=M=8^F~=Bs$|Q0~SQ&lS^&qdV-$ zTRa4+3`}!heuO2IK zrX-v3x4?VQE!!7-A9(OsK&2ox6O48pXYSVckYnzaLH_GKZ!hpHClt2p!ukRcO~fF# z06wMDlN$BiJR)IJL{`58Kb(gf?f%aiH%w#}4nrVZX|_SlS_y&CWJBdgct7m~zEuv~ znaowh{CfCLTOvFa;;@B2)h?0OMRJ;v(GblF^m*SCD!3*~G5Jh}e!e$Adzre#t3Mp} znT*86MKt2+97dSoOTe>h%|-D^gbo-*^2Q#oG#Lbp)A&Z;L<$MP8P+BG2$ty#{p!e0 zhHz`tcYpZ{PVFTBa9AJfNOl`>O)%}E-c~HV1=qr-8 zNGsuk2@?yREm_!B-g^|h6PJh%r}9bw!ZPQZSM2aVKWz9_a1Sfnhgk9u8cfxnSh?@P zS8Xy<;Uq6^0<&E@#u)k($-QTUztS|XHTJrZRL%1aLlkKOB+(}!ArZcu9g)B1BvY!Wi^-S=|2C=p)ukMh=w)3<;WUqzwk$FUcS?i4m$i`p%S z9SuNhl%p!df`mkZnA<*?d-l?>@_|)lCo(kQ7oFVK16?TtGvo8j=MJQ+p|FDVSQbYC zGQ(!nSlgnk2r|QQ8|ORX-v~&}8D?!#i#X&zEUD*P?5fi&aBR4C0F~RS87=d02CAGE2Br*{d z8|YEG3ybm?OO^Pa>*``Ju-N(Uh=lVT?}|&vxK)?z1}=ekq$ZYv{awt+#0wu|A5T>% zls-1RwhrNFe{w+UpVIl2f%2r}!bKz?-=};xldjYv?d$3rnreMApGvdrDaSt026CPE zJ>XFz+oBe;8+Rt@tpZU%O`|XI!$K_BK`w;s*v9<#>1WM_>cT@3Qk~VukAU0|@!RA2 zw2xlfKSk(727eOsgsNtm-@e(x%@d6B=ApT0%d5K4v2W6C%i z7#UTm`hFhw7DNXH0$~wT6vO$Y&5cPKvEv`6vXGwB-|%wSlKMAoVdbktoP`YmC70~^v3sajBs;vo zy~!K=J)kpEV|Q#U=|u+ZT9F2a*XIrFhsHCsG-I=Y?W?N6II)%tXrq=Pi?Y~6gU|Ez zTvfQwlX;SOXV{|JxqvD2aT~S%E|aEHFbyX36x?u}xHvPw&$}}REX;{P17qHv3rayN z&~OwyCOPfs zDrpI2TTW?j-wU`7lkLB^AnrN)_axPMGqhyLuP8qwPtm0j_lqd7%6w9T4E|W{8FgkD%d=@6 zL`0Gk5gXG)7~4RmrN|e=ka&5x^ailqctyg*0;`tQ;2VG(YvTa;37Tm5(Pm?XH51;c z7RmT;>}5-_|8#@hjY@#80^~#$Lse0&LOv4xLhR%aQX5rSu;R9HrBt!IRtVynX}lV zNVh3|w;7x&&9HQFJ38@l@Pyg$Wz`J(TMfb*Y3gBfHW>G8jWhG>-?XXhUu5J}YwZjv z!Lpy_v<-3JIYQivaCd{?u3=vc_LiI+dz>+xyfzIK1X5RA6z= z6-t^VTdY>aQM$JDv4&G#Vm#q+c)3;gffhMuFXKK$6-yNI?3})9s7b4m|M$9R#;ZpR z&doBi*}YRa7}BYkz?A0jV99l9%$9b;<-FaOwdk~A~ zd8wM*VM|R`c?{O*>Wsd40!luk%*C|4#l(HP`-?^+C*VIgmn~LzxTEfkj7#hs_hE$X z1q-Xi>D2R%z$UAXztpeRf{Vv@-O7yexfxEo%suC_zQ*!l!MT{F8Vi;G@(&qqL4|lr z%kWAyUIPjK@1!e3@x(ITor69SKnMlmfnEM}iGx50V&@Sl5 zH0VIi=b^d_CAwJ-9aEs4tac3yajbAS8|Gh)JbL%Mov%BlI(U-+(-ElYu8 zZnk?%?63|ZsgyRv*Lhs~XW9{BYbgAkZ6L0!p{T31xJ=9?19HJ|MjcWjlVwnnv!TRw z!c#1VBOorRTv=P?ZTWXQQH`Zsz*_+P{9|h+^|nEZf=R`P0g45a><2`UeBShP+y2bK zznS4xS2zU2=Vi<(FTRg2F%wT0XCa27AU({ZE|2Wl99jJaX$T|r-2h8V2(=Gv*P`pp z_E56YTd;Sm_jh7=N!1LJk?jLub!Zx=eAid-UO!ciIGc&#gIq%d5kvZ0yD+Y*tm`GF(9e?rh^X1v$Nv$Ktv8PTk0E4it=) z3L<=8t|T~9Kq<;;Sdz3V#%yg38D#`GQw+(^9lwJcbHZHlm-~b@mk62a?$uuS@`xeq zyoTLli5`h!A1B?H5QBTM8%2Ha^RL7AtqvgqF z%FPiKpdiLYc&91`jVX1$q!vef=*0TdM~XdPpN{EjGi(#-j3SkI`J;HW#nr`gVI`># z_U(6{*SMW%?3?eL#0!a*eYL{0+I*0+@xp)pHVVmVYvV5h0o+hh|O2vl2}Xhdrd&K_Y!dsyc^)swPDuscpPsVP4J%ZSVOrk z01eLD?Off%<#1NJqdw&K@9onP;7;ZUt6KXlf&0db`*eLdK0aG<$jEtQAHv+ant6su zyYvMl*$W`_YvLN<#wrgeqp9GWVR^D%3{fjkqUKO_^_PcYe- z{Ly}~5=bF*q)I^Z`EK3sqcgike!At3z9&RT{fz5nGOTcszDgj9zybfWpP=AP^?Z{9 z(00up1L>7be5Jz=-XN7r!s_9jD8BPMy;2=wibkZdD=#JnH?RhQOZ>zX+5MF3g%-k2%z?jsi3ob!o1a(;BQzc0-FUt`vQ^ z%{&2mYw&=4*h93_7c^?JRs-y}RV?hs2CBw>0d%24UESN<@Mtp!2mL5e^9Y|tpq?7m(1Y?V{=_;Fo_L~Z~@9=qS0 z7QQUX$R!1#_guDa{cQNN&m(X1GgNjV1G+mlx1eblZAGFe0*hq0BxFi96xdLJflzNk zv_yZ}uvnqH+2JlQ=w1g>Uy^~F;26lzTmc|k4ENIVN`urdk3s?SN7xmWNfl}Ic8w(t zJ_V&v6*zY0Ka0u3Wg@I>QJpa(CQkp_6w$6vIKHYD@dYI@rVAf=TJ922sPD(!k87GQ z{nZ|tskGCDbk+QF%vDZJ_;EvB>SmWkJ?FwLH(?sgZ74<=`p}d@H}&MnBX-4*E5TK@ zQ`-D=rW>nQoz}l++~5(ui<b&6)YCLwu{9$Pwp(KOXiAadZpC4j{-YBpPokBwN6Y zx73ILNfPOOe^|8{5AITTHdz>L_{wsiAU4NfFup^;ZXMd$@mrbPy@Rgkhck580I|HD zn;rwidk&K!DbfqCx2VV1p2Nb*RP6e3cd(xxrG~GwIB0zqnVZ*ylnVS%6NYH3F%>uF ztqZuOTYyceS{7qEV|%l1iCrGFQd77h_usxwUEMv;8_tSu5}P-jeZ% ztpp~&QyXk~t=G=T%D&0B6Zy(!ci}F4(*GhjsroI@8m~cuw!w}St$)^b7H{B^8Xa^j z6vSpzj9XmHoa#|87jAJbv_Sc+?Jvu+Z3cXy?BY2??JvW`wDW*3hU2Xo&hHhe`= zWzFZ{)GB9*S=#7IkP&>^Pwz@ zb&a<+$&P5QxVkM86!C&jF2Ow;DZdEP0cNSL9b*}zy7hR*C)x7^#cVLz)K7rDHWRl} zfh48BtWG}#3l3>kqA>y=bBt68kxt~&Rtf>`e_`g^Z&mJRuIH2YW&#|yZg(=`=cnhL zZwFM8oe;!;c~DRIo1u7h)l!CLG`cpCBD~Gd457$wfyM~sGGrDO<)Ucn=}GxIw|*Y} zr|7!ipcE&3dTBC7O=uCedN$&a$QNR_QBC5CKQEMQa2k`95hjYTtp<|5+wvs^@{%}) zU?m`xrX)pwb;n{lTN3s~mzCeYw`Sf4sEpy z4*M^D_>~TJG5ypq(PWh1{Y31I2aaKaZ5r;B%L~o61T+kZ$cmA>X;Il^wjPxl9-C5q zYP0u?EIliEW|2Hae$=yCEG!JiBe4-ee*BdO#3hdK%)PgcBL$VS^^l_Bw&*3wh?vD; z^T2(I+cc8ejj$R^k}uJ|VvsIwX|DFwsr^Snq(r^;OC?aJ4Q zj!h97h9^vwS_=3mm4$*lgBUy=d%Y8`m`J>2&@o5x2-Eb!{WytW56=|>_|y<+H^ea( zljR4)1bMwcftHTaF?_RVL_dt-ka{T2DWqB&Q(q1hR}G!v-*5;)EGptPQb{6WRy+&hVdpn}2#_=3-|o2d+eR znD?|xahu_b8N}rA@Ak)+CBrGIOKu$byi(K6n8tDA8$;+`nI~bfoD)P3euymzPh`d< zKBr2YyHd+NC3vzN(c zSSfvp^;?9gx%52NO*>k^3+|D0XG!oUbP0vxEqqIuQKsbwLxu7>(8_>LV6(gtdgq_E zkQIB4wBL?UM>d3#^F8&I254&nq2$=+ovy-tN=zx-?)7pLI;y*h;Xk5*N~I;4!NM5rQ1+9sa}#HZTEl0)cGN2EHmaMYoaae_K-mbfQ6a9;wn#_>*mY0PN2 zjb4?@8M;L-U9F@G%*v!l8rTlVXh$)x(h5(AZrh_#wxiw8G{t*;+v7sA+S4rhRQtMI zvAgH!4{n~?BlYV8+_UAN^~iuOa{i{mUHb21NHDs@`C$fie-5uKc&$J*aA2cn3YQg4 z^wyoFCY5g_at%#&C1l6DS|VYHm$jw9R;kq7K`$^aBx{c4;j`Lf@WrXqnxcb|dUZom z=`zTDL?u!5sMXI+b(c}P>JG>GqA(EIIWMJ^fys3eXDC-y=4O?5gfYv0fsxi4hn>(U zRV>hqhe-trTv^f!nBU+eJ1AW&7Gu>$I`Z0Fqm8xc{>EjG;cpGEMg*ZG0daA#+-}=U z#s5f4HZ>+1A>S>wxcOigcFx11j8z&ZFw;=@ZZw3EK;u;4wX zfpb1&DjAe@{ZD%1CrgsRdWK)HbUU~|w?E<)f!=Vpk^WJ@iQ$YZ`b1W2snc$z+Dd=E zK;vJu{L@UKud`0L2dxTIRL}<4kZGv5n?2MXKMdCne=Fd2Vm`#oGx}o3SHV8r>bm9u zOTL;O9-($pMQ^z!kwujeqwcjF^fxV08j3z_#sngzsz5dVu%rRN$a zaIc7s2ay0ac(`kW(e_9N>A(7{z~gSypd8$W6DL)kLoGiA6spp}(NSq7cw(LUq#HCH1FJ z$jZFWuNX#;2>ly7C$wRo68Cn} zqmKF90CE9vEu~az%G4-CTMr@ovkOa$#0#dPQ_g7a_E${tq-HwVq!w)l+G44 zxHrLO(H;dv^Et%QyPe}Zg|#-4LKi8OC}_RE)O^g!rSh+DODV)na^M6e?k9AXYI%kL zmG4Kkkt&68(PK94eS#C}LPIbLwiG0dkqQi!r1P4Wol8WKEC=@#bDUxn2rZW_M zPCdO3ixe^OP`8Dl;d_)Q#~0gWbqTmx3{XH?WUf4Q1ie&s)7YyFW8cV_!@~c`0?;4l zw&2gxjTbYNj4sL9i|%NT32SQ{aMByqP?G0Mio{O@s<~>XKRdD9JlB~SwTk~d8Fpw)Izc$7|zea1z~DuEtBqXDFylrmT9+gHe=p;r9AYhlah z8HK^=JdOtBN9FCd^fC>iKMxnmco*$YWabvt()fX@0=NU$`jr?+x84z(^gY?Y9raR; z!CwHogN<``^``5F7$Cn+yb9DRD(;$HcT2krGfv>~8|7g;@nPOHeLG8dbp95F{8w>S zdQvjEC`IVFIAYrkCPa(BSl%>$Tn9G0SV=bTH%qYX7_SWL#-C(5vTm@c)|Jz`=r+frRY zD^>_3X#vx`k4ZL)&tWmnXB?>cTb}+l=-7>`VKD&Yh6B5)Y3d$EQWE z(ob3wE?q-wD#eej@$g*{UJ;S>bpxdj!^uoH_SgO-_@vkCGEr=m!DFL%qXe^ykWU2ij zsVP=jWXY${ts6Z;=Qw1)pEK}7y~M$K=tUHPK^?=p%{cLJ;GD(0dqRf2Z6RwpX_13q z(SC}m-p%e|Pc-ajqLd_HUyEq!>r8BDbH45aMOKMT1f;aV&VNT87K8KH;z#B3Zyh$X zMW`AP3(9H1&DXy>9_4semsHByBA5mf@{+`WKzJL#hlS>`=A?Aa@!>0{o90n>Bh05k zmmrk$qG3(|A|xv&x!Z!2`cr~4&$Hfc+FTbNOsXo&wfFYi;r0xc087`sZd|OSJ8AGU zJi`_%aW;-jctlK^Zn&(jhDhQs27{?_%_GIr4K0wd{ggyoI-|zgdS-}Hi#4gB=}d46SM>Miu)Wud?*a)fUby){st7i# z*%Yy*&(AVZrM8cme>?5)&YF+eT@F@+kZi?@ZZSFR*W{d=jWBU2J)Ta{tOOp)!Zpzv z`O>6GoTx3m92s7@)_tE;zYvg>NkYqN`vfEJ^~><|B@7#3Eksre8TACJ#wh9hEmxeZBSJy#WA)80_{G|gspVoF}^J_Q3gK3y`z zoihgEK>`&DHlim(l$6ljmzy3fm#ko<)(K$oCQMnf@8! zs@u{j%7JuzG9D>|W0=3;R*UVlw}d(Y;>gLg8-cYsJyD$C!2`#o(l5B&ma$VhzZ>wP z5^HZm7c+fpbr^Ghqt?;P?JdqX7u(0?I{V$ndN$GZYW^50EfT_h-MkNPDY5*l1HIqM zS~5E=PP1HvV*0S}@Iu;@q<*Bb))tHZJD@2#tQ~gxBsuqkSn59wedks~;ePlyQVWw= zEN%;`S>no1Od}IqMq!OF_6K|GP}FnAZEt0frZb|;n|DSZjV3ehwwi{hugkc{$=^E7 z0vi)`IVsjo-6;G!gJ4_|LHREAsoaNgBunV031};a@Je_TU6)`3PDgXMByGbX-CVws z$j`Dt8hL6YS$V>W5=w!J?cW{IL54|X3rxr=iktnDFI+7@>t;*msNyHJh0*!wo&eb- zU-B7izXsiN#pB2gWK;(grq)7BE%6~xGrq(0U<$?NcQPS?wuZs|jeMk?N{GT%Y3dQ> zG!I$RSNzENbB)d2v#*rA4|gcT*;sjOA^qjRYG+f534>mE>NxcmBtf9)<%)|qY#6vS zPK`-QNM6y~yWMj3$6GVNHEhwyNHVseIioxmg*ro(wONxOe@eGtT+!F+6U~qPo{>46 z!=Y$eOty#B0U2ba;ijF46nDc<0oF_Pt>j{bfuv|>%a~S%4B{H&7?`>PQv2b(f3xi+ z3X-DA+u;fy3;xACTuG#Tq5ktYz?4RXIy*T!UV&VBdn~EZ#;Aoq)VjS%zgK6w`sdC9 z;5)`t)+}ecno=zF4NHFV;@z@9qfoy7n~-S}uycYh7QtdMU_b#hEE=SB_G3^H)Q{Xm zo#&!H)O6v(0V(T=r{0Y9A`I;_`deg_8pue~iJaxB#|IQB1}Dib!NcxhFcI6dhb`ss5^wm1g1 znK#1T1{Qm><^xwr4GA{K5_{$jbeV5os&K3<)z6v_AY$KVofkmmy0lh2`a_5OSM+mg zH_D>JD5I`xO7rJ@U`SfIn=5Dj&scH*Q(1j28$}{w(p^~bZ!DW8^5iL^(V_H6aGQ{w z6rg{XcyqOps=>fd6F}uFa6@qAjfrj^?<+6rs(Ju*9_}*;&mzvu(kJkGZoTsXQ!IT zcXw5RA)n^^LdTAFAjkMyXPxu56RRWb8Do?bP7y5J!;4oj9il8}PM$wh%I>?*$md({ z2Jf&zip`&szCqXNlINpzZy;FL>FR z`b2--zm%3TeYz|hl~l^_;q&WFzQ$%LnNFXWh5``-k5Gk({&1;8w@D!7cJgkyMvy30 zZ^31x6}&)(B64yMg?GA$@gJp5W(YMxvkI2HH_$M*Cj)L$I~FrUc-AmzRX#eo^T>!^^i0t>Zs||hXY>=|Z;v@Zq z0C=*C(lP{->*AuB1Qwtr#|K?^V0S%Qmy*Ca!&>toZCLov$C|LHe__bSXal}?k%L!2 zzOc4)kA87`&LX{;Xz$brBbO5ofX!vMdh$l86m>ANA#Oi-SuT#Tc4e>NrLqr*+%@Pb zdfo${fs85ecwsaCYK;E^i#siu5~WAh>B%PgnY8l=X6iD?0z;u-zPv2_9T?~czia>* zbe~zVlBopsG-2t`^)zy?GJ_sdnVU}wl_~C99V63AnUfyq^5e!^L>>j^oR#*H(F}vu zec#OVrk~Bn?_B^5EFD&;tx090lkV1lm9)UfxLR)NwCpF2*kPrs@li_0wp(4DEKKsf zoJBGcjn;eDr+1mc%v;?0!Cc_d6!dTNRW!!D0%7I<#@Aa%#r14`-a!%|xVu~MKyVH2 z5ZocSySuvucXxMhXbA4^?yimN^zXTMX72OO%=_0_wO04(K2>#U*WSCnpUt8Udiu?k zwva)@CQp!#7GTTWq}T{ohmn}Vzg25T(7H1M@wk)F#=36pe~&#?S;Q>cic`pd*5~B3 zvBqJyuLAY`Chn!q<=i9PUrp5L<|Pmia(xkuN`Co~48r^USI zZW~UoQRTf&Crl$sWdRH9FkF3O?$Z?TQ6D}xj?x&vqjb5d%G&C4h59Ql3cx!LpEorrq7e-6)QH}FcrEx{2zSI}gcVCRm3`zb zZZS%(b$i??+>#0vw8p9A8_}f8?6)&b+J2%=? zpJ)Li|wyig&)PH=ffoaMj4Cce3dQt z3~E`lrv}x~=c!t3p}GOW;t91c&4=6QgaayC$mCXYNw+naBPzdW67cX0lHHCp7*T{i zOo9Qb7IN*&EJca@qnCjwObFZF9VDSaOYfdke{0-j_iST?A2Wo1jpwz|xeIAdrD*ql zhX$8i?B-^3N2Z#l+k-VuGD_5^aF=d#pkcz}QU<%7v23KTv>Xv);}5ny+i{nqb;7J) z@29SPSIsPoWQNDtlV(Jk2)?l}YWJ(gsw^3=qw;JUo}D~Fm&X$N9eLKM+#N-u2z6o4 ziQPO%$8nyEquH3lo~%Racb4`GK~^s;ZF4^FnNoaLEB65O25`mFD;ZAnM|nKS^~pYB zq(!plagxJq#HsxHSnf!2i_^(8GbdZfcP}2)w(WCrLyB$&_;F9JMJ#!4Ffyeuy$W?j zlv#8RBX3`Ua(*wKIbTJTA^@=zSec8O3wB%BPGT(WuJ+|?K{1DtGHQwy!D2BTa;WvH zn*`{=9W%Teh6KRtfC^3PMgBNe6FiL0l=>TcIh)@URF=2q1sR?D{O<;kQTjh zQB#^0@hV|gcpOOGad0{MgG<4spjBZCoHh?nfVS3ta8hx^aV;D6NlY7DD5p(FOIQ9C zV=;0yH@ZzIwt(``*A|Nnb)^}Lud8b5V&g8WY~`!pz{POWRv+jf0jZ0@WROK36Qprz zZPvsAZaHxzz@GXk<%$7)uY;2k)~SDtQ~}BrDp|^;JGJB2X|PI)<1UvjcE&pjWWvM6 zCF0l?TIgjv&&i^A*we0l#hESs-%h$nfh8FzPplWa&&}6pQ7A&R5>xyXMz_vM* zo(zxp=H>gmkh#K-{tvzDl?$5paZ10sMj$k4*cj!}H{1_ELQPFAj3t2L>@ndV@+jc>n?3ApMt*4bhD$dU6*yAYc9(AKBHO}>*pp?QWI~|#^<{c=>%~09)de9 zr(EWtux3WANATtgmls<2fhxP+jT4Wkn4%)fX?0~76b&_1btv-SwR>3*GBul-m}MHS zW@~Zc=xH^8_j^gv^d<`NK%db>EPrm06RMKDhINx*Z_HA?J9GXc3y%2UPE+ZyS{74I zyFfl$$;lz-S4Pc9xy*BE6bA_`rlGMhMLZ#}v)@a%Z`>s5>D#cR)}wfZ?I5WdkmU2N zjbdPrL2Pd%09FW6)S-Wp?3tlVvxxSh(-I+FDZyyYEM1!`;5TK=b%jbrxmWA3n?z?l zS>;d)vtyPe3o^w7%l=&a$mM!;%^nIOrv{Dc$k&+aZS6tzgCzxnZ!emC#k8_flx7IV z%+S_5m4l)OF_ltu-dMcO?VYmieC>d!xKx(V&`_=hV`F2Q1T8`}RQ}<)4XLfasP&~n z))pUT3A+T(qRNKyX?Ul+>E3W5_m*M@0jZTkYsn;w8YWaV3h9uez0H|}{gS?bIjCeR#k@q+GvoL0STSb4{42kt@s?I8wpB^bAOSj&{sxPj zS}RS||GHDs={`Hg;r3%J-AM40GTzYi>Rj!=iKXQ!2rC&qg@*pkF!B4G$?=Yq@W%Tb zjYj>R?@b|i7s_EsK@8BjKMu$rKdz8cG8QefUkcef}~PiDxc+Mig>7M@$e zM_B{-&jg?gc*cvv^vGr&@?bM>X%C~0ccNzk^ZGJ@f@rMMR4c)rp#rfUm;7V>c`?;v= z-Ow+DBA}{YV@qWal!n&Gb;RD%JM{3=$OvkWLjg<>O%|N8NtCwy-bo{WKXnmU7Qqc# zuEaVjy+9{&eJd_uaeaI0AcIbXUe^=Y=wQRm9%W8qzTY1tW@b+6N=g{zF8tU5mx+c) zNxb2ZS;=e?z+z^Vwqf@sczuFo$_uK9Jh*B{R~*l=q4gpF9@0)X50_wdj4?}oG^8Hy zIPghKfkX#SJG)>gYS#Q7u}yQIqD+^G-)-8peGLwD`ZnFK_YWu|Nv<}I2RCt=enJPs zX;}5!`{Re!h^E1}u|A>4_vfUydAtvcll4r5LYHD=^C^hn=aV zcPNI0&Cl}4=hDj}_eWJ}9A%C_mU(~D2*${YI=6WaH>S)EUW`bm#|ZocTI?A4%nnqU ztyVWN9>^>{Wx_GSU>0>mx?&%aO}KMAkFZv=dT_YR_BG07eY2pxC}h|6e2#x11QSS= zpu+);%WUa|SIcwTm1FzeSqQH7jQtZ&b6Hld_V-`cz_;O1!u5P!Cdw)6YKU{?H)>1R zW}MLJFzP`eEi<0~Oqa z?zi5*9f-$~=lI0FzFnK~@7o*GmJQZalJas#%OqXO9PbCcg`*E@W5v46+ppUa^yr+RD*?}YFR*XGrP)pYbRHVTSv#|uBlcgMJ^33U4NaiLw zJ(0pDi89En6ElYbMjTNR+1G8+1D42#4K|_+H)WfAF{#x&?r`~cysZP{@}7o_L_-2a ze7{amr32H-=?<~n5W6oUBw3elr=-(r%{aOfQ+!sxsER~wI8C`%ZbI&9+~FFEPp17g z#3-Io%s=W_N3owy`m+Dxc^pRhQ5DSf`bA=7QF$&pSrcIsp~?X*YHADbb{LTP>9yWQBR8Fll4Yns~XAuN|#p`CDeHsu*_}WhI}`Q`MAJM>z#-s z6Mm=E%%0hs(i%$EHQ(Rd8)gl%P28=qR1p%K!U>BJ8 zAL1F!Z!Q^YIygOb8DvMN4(~gY^U<9QTseY3%P`X#>YTh04sc zix(24RLEO6?==qFB|Br#sparh3u%lQB^=W4aH0U!RBSFT=E%^kX^X0gMkV;8Gy0C* z2&s>o-K@zpPTwsto~S@VljQS!%VxN8%VcVDIE`ycH|oRp?Q$7vDJh-FG-OTyVeMZD z?cd7H%|}nTDyw<3CKbB=+S{d6k4h0Lwq%}iu4B3G6Ii4DI1|&N-a6XTSbFNkOJByC zDdZq<7T+{_qA5TKE=%73c33H#bJ{s^SgIs?dOsA-r;{@MGF!xTU`fhG3bo26BJxq) zuKd*5sVg~sc+V~Ym@C?KA_`v=EE#U&tC4fXHkF>$nO3Owq})&lb!1#Rbz=BE@j(Y$ zx=FsE-Qe+kU~`JFWonEk|0~XtM;bad6d>Ae^54Y)rOqj+d@N(2mF@%OgK&(a&dQcxG0F_#~jA6bh8w%7&^>gp6eYp;oEWw$C9l+_PI zA8ZIRzVANJnV^fynw2@Te@IxAkoE25sobE&pJ|m5;im%cgFUZqS^M8UJR43A4;tqE zX2X&)EQ+XqW!@I`o+VNcU~8cyC?NxjwY805nl^|iu8YTK_W8#5DV5>(yYgL0h7~V3 z5)CTl*;VxyU8%A*rIM_lTsLRul~e}^{(%%7Ms)j%Kvn0%>wpb!hggSn!>00DktG** z4qt3c0`I-sA`5uNTKvP_*8;Y`jgh@Mt9bB z^Nl;22Z?I-S06O1`Ep_$lZr;O7}psGb=-9pvgHTOpG-b3MYe8ZnLp%Y-eqd`HD?z8 zJg(Nm5ZcE67z6`n{Qcg*_>w(b+%NuLQNKO7XzMd3{6dB7lYh6(E?G8oO zRs_hBu&>RT@nhdu^)SIDQrL|vg^7M=NGsr$k8jrCRKaC6%UgWkSfru;Tg&eQwIOErLV3=3w1g^J~i zVr*0erzSS_#gh{~{W+Rxg8>qmO5`L&kNDpEJo8n-k5j3$ghq|bpd2{qV{t{rud51w z0Sl=WF{$G~Jcu@6DwuFJ7<X2Q^eOg4%(neW!c%c_(yP>ZlV}vQg-O*QQ@cvE0C`;Ko&L_&lh~C1Ejs4owaTl@0;I6!h*4L$Z zexkX`13l;aeM4G2$MqeJoVx>wwb$J~hyD20DJD&sUW{>Y=gTF2IJ05)-p!n{v&kQR zB;bWfQ@cSl-Znw(;Jk&aqSy)=*2Y(2-`lhix{NBVmI`jy^G3Uzt1;=XJQ|1&Yf6)4 zn0Tu#=Yf{hZ4l?Hw+e>eebzwbuN&a%MGxH|0EP=2=U@!vco6+;{QPno9T+!>Q!w7OVAz7u^Eg+sN3WJ z24i>W?WzwtuvV{kf@rE}-GT2_+7&>`dQFPW;!u}XSY^Oe+eMU5jcdf5oOe=C$r zpd1-aP0#x?*6S^gakc7-P6JRcOkbF>fAz9U#=2H{|M6{Ceq)fCF^Q3`v#^NL@UP>p z{qjDP-L$B-eIzkOvHXWr69=7^myY_xplE^h$lk-;6S_Qqgk=qWfX7|_ygL!xcR1uV zjxUiZ@1@UfEFcO4BwNM8Y_oViUIPT5R37+-uJ_~>%OvKfs+Q>{Ez>iyX?36vtBLOi zrexbHv)dJ@T*gPxKLWc==yrIt79|^(nx)omI`;8;FvlJ=&LP2q#h@862}}*Cs3s^@ z1)v6084gBH)%Es+rO&ofJlE~p!l?M3L3d-yD>gqNFFHPK8Z8%-V@_A;5V_-$QgWzy zb`pL?W1F14S*xzvgvbW(Wr;qcy;1Rdc2;5y&Rf$;j)M2$iFS&d9&V+G^d(Ng2^# z&EdaR4Dfyv0&JWAX>w9Si}a4q9-PX;GpF0)!8LHezGk3sUP5QKq)^toUS?DHaOcYB zWJ^f!#=xNukTP#`rho@`y#|*hY(;0~xbU;PqGCPwk&ivc?dhf#VPxA0c>$5o+O%6b zS427^hTuYto}P0hN4_A{-m1L7_@HqL;;(6e55P}Cc#XMg9sGf!t$d_&=HEYklZXhk zan*F3KR0#9lsXaHj@~-a4mUA%y~6Uio)0`;$5sHcZ;B>S@6R>@`=xybR+Tmf1CjZ{ z*en;g;W&}2NxtbHUN}FRt(1V3-G*1rsV>hmjVx3Lf5sAPSF zcwd%k^}R6{v-YNQd(_GeJ5fW^HPJ=W3&M-EY}(?y+eOmK_}LF|={nYCaqllTYwm3U z*AZk-dlVcGj%zM244h6^l#jDcYN5;pIeqcQ@R^*JPb?-75dId<1JaCjc6twk9-`fd zcutrrEiI}U+6@QDqFq_1I6=W0eHp1QQd6lpNYbR6#lFnKak+}ch9%%^;ARDP`|{M$f`Z{Bd0zlCy=bj)(6Ny zcqd{0;sL{@_yM6B9BkJR#loq(t$*B|I2|6pOV;A-|2P9pnv@=0UD;t^&$<$L=ON}v z9^T>-?}p&l^xk07O;rqjqA%hqdt{r{-~QWwa&@3((>+~apUV9ttnGcL67gxaxV2^7 zgJ~cR&~ZESK9ZA$fs$jhY%%{01)q^;oWzaQX6@Hg8hjyg69AyyXtA7)r_+#RlKt2& zEhSY%wKZqg%uN`SLv<*Q?yTZTxvxEC$E@grS( zcNvlm{^IXT0(qF@M^_hCj&BRtSXh?;t5;=Em4#9zhbEFgLraxKCyk0C&_`280zd=g zu~EN1;%h8^K~?H@sxr9z5h1qslAc+3Jho5`BbNGK9&lN8YB*of;fN!|4%df9Ko;cw~_#;DM6TwFyXPRe1e zGU?S{my?pyg&bFfl60G|f3jn19j&|x0l2SmEpBwGa!1+Bq@>-r zt`BsQrYWd`FM7hV?CI;ep6kB=kAF{TJ>js~><~5Sb=&%HQN7D&vuEOO*6RNT$^6)j81YJr$PODwfbM3{jbIAU(F8&=!sP_gmx(1 zY~2&Pg~iQZj&$L82G?^JE77{09;I$oaje^Irr+aC;w}L^xRY`?wwP*tvZ%5g0t)c( zQTdKQ*rr3QKfnyXkULFbSOx*#(LE(qqa>1wsDVLh zJHap*vytaemg#kXJA+NTJLiTQNCm)uZ9Mk+>=HymDRMq80|f3c1pSlxxy zM4n-|Wt@^9CarB5-6^F_swyOB6SFcpK*o}HGV?}78K&PGk}F%m$eQ7;yg$E}hT_5w zuU$g02*o5HIXT}d-Om5sV7N7^V(C2PxQ{`9s-^zSQ!8U%>A~}UJb1Mlzg+GH200-y zv$Ow#XaC2=`@gJJ{~8!ya>&ChzgZbsqj8CJju89(@$?bmlvFp(o*B)R7F*(R8RXfq z+fVn3p7a91Pr67qqF{3R_D7bspJ0G)o)S8XN`$VAWw&9C3N&@u!PMnE}$2O&7+XK%MZ^b z*|#;vCv(z)^fu4s2X@3!@C#9^aMgEilQGWp*aIH6YY`q?! z!*FY$%{yYjoZuHfH_iYy#pL74!X$X^X)Kx>ip*0SH+Ofk??a1{E*2`CO0|`O^zdIX zyPPeW{_?d%tGq?T3WRWN`qr%231%!AZCIsinGO!B}Tt{h@5BN=I@8t^1u41I=pZm1o$JKUPiWfYk-Q zn}Vqyqb(7I37pdsqa!1NQVt=11z(ROQ4(eWYhD&@MRYTD8ld9GgN)@ln~pEGKv41s z`q?@Pyqb4^Fy^cIiUn$cCVI8fAyO*KzD^X5J@6uc>~^7Yy?Ep#`c^dHH;v#xK9YCc zTN3jh74;u-1jTx7_17wY3E3O=Yxg)mfBEuz0>JeBaYQQ%UQps4T=JSohuc+A^c*iR znZAMTzXN;!V_?8QhzGJQ!JU0TIV{|Da(cQHVl(ZnzX__zJ)`mT^~Z1mb<%NB4EEr= zO1ZKMp88-caml@^@g37K8B-cn2>4x52~r?aQ%20g(kdEBa=LbSiMmB#EdG<SBbG;aZnUu6+(Fh>?Xb4*h;7<* zeD-{*sU~`OapH*W%D=KDSKYx`QQd$K4BW>&0E-{u!ms@l`V(nZ!e%3zZQ34d60@^D( zqvR66@zAWn?CQ}|&X{_H=pRd?rxFa}6V6=Wv-@ZEn1s?A9aappMAYsSOU7EvCYJwS ziu8X>$}M1Mw{MW&>|R)hO%|iI+B7hDEh$dr@mXCGYmk<$rW<|7}42qxon{YWJ=t_-1?8 zH~0VdpZ>8ok1%9lp}6l>ZYtHkVc-7`JM?-<0{-AfRvjzfKj*dnzsQzI`JRyyW14l?;)?ZKry3E7mD*>VsbS)wdI(HRRj4HorXlvH zA?p%R@`9^K zJL#@(C)S)k^q=2q&XDxU$ z>>1cC0O$WPM26sidIT@XYIJw~bkxeDq3V4o+#dH&X@vjVeDQA(|GDAK29c=tD`+mE zO+scophcXf{Mj?VJ{BfFz}udJ2I@G?z0waljYZnHXBPSmDKjxO;`8Qvj0(_Zpu7k_ zi_!sfQ)jjDiyXY^Jqcs_2zp}>VQ$OFW9?w0 z;(cM_zTpA@fLcpX&xhe9&!@`r>L%cE=fei>@1ssN2*IDweKrP?QQ?yG;n$rdVxU7x zDiQR8NwkjNqRQ>JRGqG=`XS(t^M7c*jCDD-PAuU>w6d>xPF#5U9%ldW^fkpS%pS>q zRh8qek#+2#RqBHFr$g|MB!e)0-^PDX9YnmB1#vXoWhJq-RDpQF>w^OZG_-$Ytlv}Y zdGP(c&T2iQEg^8~+AHO`-S(7wb04?gI(77vecXKE+|^b4!Q5tX&DZovySag7GtuN? z_a*!EI`!qb%UY68@FxliG&J}Tz?Uv$$S+S{=HmCXRIH)!!u;?T$Wc^8jG`|HLmHMv zmohSusd)^NRwU9Z+VIRM(W=M8Qz=_)=Z#O&5SDnBNUP8rrBR!StjG=7mAMNv9U4}@vuOO z?t~D`d$%LU)TK^|VOBx2PfbXRO)uA+mp2pn9^E-gDjh;%r-6E;3K_#8=v9EVhiQ0u zPhR?syg7#mh3}<5|6^+-8DG#g`F8BCIDA&krylpZlYF{Do_8HkRY+}X=?;5^*!3_< zeoKN2W9or&^zLHAl`CQbgCwnJ-mU{uc+i(ia0GYz5fOAd=>56cS|g<;#&r?_s6(f> z==uT=u(cX$M?8JxV7K%CeCs&hj_df`f}7xs>*#&j%*0y#(w^$AeS}lgMM44#3mM=C zzG!#Cn%z`2))U!U^9EbhznRGIXvw+U2E3`-f4OMzl1tq7LtcG`C~qzLIEa z^8G$!LuW^NhyHa)C#HMKikjzY<;z006ToaHg0|tU&owh?LIW8iNiT2fnwX?a`}brj zJ7KB)j3oXGMQ+kF({M#VED)POqCY`&#G>LPtZ_uxNCqb)`a<6GPS;{{Tuq{;!i^q4 ze0Zl~s()U8zVvvkOMw_E=x&Y~XI=F;4CS~b9kgW{$x+T(GOxPWE6@jz%G|^0{vB~# zWTdT?d%Ib0LI|e}$fB>Nw;C3^`3i~X99>FU*5gKogZ=9C#UAcn{eD`EVAUJzLgdR0 zueq|_gPqE*tUyNeBDPONH!QK6Tbn`uixx9z;Tng#JSUj$$m%Sf3RasD`YbztiZJUm zTHe^5ZR2C|D3O+LJ+g*?@b27X0>T~H}$xD0z$(5m?pYKakQ&bg>eJtd*Mbwm1R3jK*4H{|1l&o<};uV#0$$Lpx|4 zPK;PKv|i!9AYRn;U5r1buTB~6u=43<+45aXj2zW#b8v7F<8xT`*G~d}3JOB3t*>pJ zpBF{2CcOP&tKj%Oc@b!lEgqBkQ(qr-`OGdTC8gvuC^1plYPB6dJlx)bckN;r-L&*V ztglaOdh-jlw1$m(tU_!-11pGtD`%CSWX$IpB#wfM8B$w|qB+NsOqq6@_9s zZqi&=Rv?`TA}GL63oG1B1!c>n);`7@=Kb|9OqaawcB$C-<-7gD_uCWv*ttD~#6Pr_ zn}U3a(3+@aB_=s^KYy1J$H$hGz16kk@Sr-#4#|x6UtPa#?VgquuEfWh{$30rmy)Wk zt;Mk+VjNk>=(^!`O-|-%e4zk%^G#Lc)Md{;0XAsqzx6Cx!sy>bDO}y!4_?R)q7ZCH z)(-t9;B(WAGj)AG@wml92}BQ_$PcmFT)*4my*Y%sY^I{RushEhYY??5|up zAAzH7j?|2`%Tn_V3L17ULMOn%k`z{NT3jV zK=%g%$J?2vGAgsFRg~2)9hJcKRV4lOn{!S_GFik-jtS3ZV$~4L+4zP!(^Y-S?2$AN z$G#amo9qcacbs~4`i5PC)IuIvLreNz;Vx$aNnK09KOf`@tEDC zX+yXDqK7aEnQnYrdPUIplWWdaG4bDHoXRr|Cvlq}X#4v~$zx|{R=gsP7KNhtFwr&c zXA7VmhXb!ud&jj*TSnj8BS}%Cw|i4~^J(=+;Kv=Ch^YAQm*#bC8HNLs2@hDNk4+wn z?A4ZwzjNlu}7T;6XjZHBq z^+joaHTIz0YXYcuy6In3o%wGI0KRl1e}&K`Yo798uPFSQZFCsD7a-#9~*N})2fB4N4MjFk?0+RMO&-r(r)?3j{vHl0H& z!%jd6iAwa^JHRM6co*C-tF--_T_vvUwRNOR!JHECV{oEJU`$K0*j{YYKfLt=nPayZ zrdrtG!z`08E}Y~2nnsR5QuS`k5=(BY^{MxiSl9NB@K5QS{N~Ff%h`$-Y<5>Q#r|R; z!B5tBJe%LJoha1v>Qu|>#;m;D5|XE){UJT8n}qWe$Hl7;6b4nUKe9HMrJ9=OUnE3Kv%y|V{cqSY(b$v--_Fo+$fDydnH4S82?iG)gNZ z$`L>2+`VbAfV-rAvNs63n# zAdu%WXZB(_n8RDoTonzx$J+8F%N-^UbwLBv*GFtTHpQ_f!ra_^HDjI$*xDko<4-`+ z&i?pzaEKlM%^MvO@|8h1<&gm^GO1zDO3MAOqIn+3yq4AojTfvQ{_*_s?a2%3MSX~Pxar}j4VV$b7 z@{HTtFF|Mxx^e$m=UPg`7Mlw>w}XCgvU2j`m!lOa0hrzB=MJhFe7r6|#lV1t@$?+^ za_2qsj)3DxCfeor^AmCzM1qe~w7*qXYlJ%$o2}LSjghg))GXR!FwM&4drUg-4mLhz zQPEr%RDf^*tm&?xDUqu^>U>R^KM+V9J+FeSL)b>>)75oVvv@trL)0C~^pUmk-o7<0 zz`E7u3-GhwEkXMN{x&$ox-0+j0$bf?lCK#0cnHM5UdV|2ei(B4CpldZ%_gqVuf8Ps zKtja_Tq7s-yFRO~$2H>GM@5H?*zIdLF#brSVU(D2PgiXM|h9r4Vr^E#pt^#CT1#)v=j!P<3PC#v>{J+jMDD z!ZuE~SBpw^vCVAE1qO-u@Wruq@J5I=&Cv)8p2xpN^ zQ+qL&5PnWBacz@V40{omwJz1J~SjnbhwM|YAa3W)Xk3nTDo>_9J1<` zCrx*~Mf>^)iKN2}$l(g@n)lDNELPmb9iZH;gfGqz+!EAt-SsHwAGZ!{AFt8an)w28jLL-y?gJ4?Z%v!xIQd#$O4oBtl6B=~& zcj$ImNV)ajPHLY+9(M;kOGwXU*xwtj3;`c24g?#%ig6CS59s2Ga|1`k9o4<1;ep%$ z!~Flr0H+0uxh*kO z=kUe<|`{HbgAc8ziPOmM#3NB&*1 z2P)GxE-$;EpWJh~z3VZd3$meAW_t`;1BFygV)mC?Jr{kV@VSVmrw!pi?`~%g@^tkv zJlr0)&{WX?bYIT{cQS&K^5@x-jhNYz;S1Q$d`OtvpGo6v*ly88BF`J_H$r_MK1~!8 zsM=B@metT!mz7^>iMf)24kj|Hc8+mzPlkXnu1w;U>Rn=Swjb{M=QV$9H6yOK@(M&~ zCw}!6m&@pZPr!%(ufV5iph~>!jd0`a$&XjY$#)#lw(r_#M}lf{HkAnqH&H^V-w$ow z;(a`U?H>x1ZP;jdh2KqSEZ?;h#mf=kvAZM`eR^&^zYdZk^ZAPtd7;&GJy)08zNtvE z%cdVQ*ua%J@5R~gU}>tK1{))GrZJH8_7d@DqjM*fcy2kMdjFsI{3;+|imFRl1S(cUjAUra>F88HBzB$dz4b;evLIhTM5VT_%I$i_$^N z-$z_wRFsoIBeDtgPXhu&YUYt_9L;}7q+pkh1?^IEM&L=zS&?369FMi|uQw{_=DIS2 zb(i#ojU^Gw;_6qb%&jFX@jS_H%ZJ-~j(5wX9MAWrG4`)WI6C|me(oO$(4+Es3{FYk zu&_>h3@78~=ISZla7~+iNgIf}@3y2QJhM7a%xZn>h{*#~Dn>_!%TQrF1=A(O3?fq% zR5n7wxaRycHjnnum~_-vSt%vz!QlnOYR)EOseVJ7`FnpXxAzTJn-tb52bw^>^o{>S zuz5*+t})E!Xm)U>_PO_buZR+#V~ritxIani#P~@ZAHgL9$3|7dIF>qF_d-f2ghPs; zu`wzl6&U4BTyzyaUDg$z#)lkpMc!%G`<@V5f-h76)!lroeAK!a-RcDo8St}(toz}7 zz?#_LB7jDOHM6(PF%5^cRKQ^P0=pvOVyO=PQ*^FjG>y{?_=>>hs zb%&f6w0JlzG3m#Kzo8Pu3;gW4*W%m%`gyk2XBVcFLb540*ZgRiPOvPaJPA^A+!^!M zF$gXz!zNq$qza$e;?}NS&jrD7AO>6l?OU-9kH+%LHwGGO>cS`(QN-n=Z%j;TvY^$D z*)+?zv}xj(2j5S=^{2&><)9b#la(2R{J5z7i^3;|-#b<_Y=+;>XE@hf2BTpSZpGOo zp(laYaDcZ3L)K<4*5vcl@AeSQR=NSYo#>@9B;eqEnM=5b4Hnh~i45I$!yCTGmmf@9 z!716KWt(16V5Ilt`>v=}*8{n+c(wQrZ*9<8&ikugW2=y_=78RiJ=l`zno z;NxxS!(e!ZV-6mbD95MQ<4_*^_thVWAv`U=!S_R-+sjE2bBdiE!#14HJ{R#C`lF8O zl(Ze5KPk$H{%|lc3Zj_}A2u7@-%(%nc;;*!XdRR}t;a?*`qp8PDA-t7ac9lmWHi&5 zizSzL*!K`vt+Ym8;RX`wT@2*p_@E|G#g=@=k%qlcnTgbHDQiRhaJ#_$j`|vVm`ydm zn3c-r$^CqHT2=j$&UShoI_M(|>|K|TIuV85#s(Me%D4jh`pAtBtGmtUVYNq{w7lL^ zY2qg+7l;0Eh&lKxFoFETmkTPUP%2K)HYwIikm*mD5vcg{Rc2^f5Jj2DbBYHm;)?)Z z*q@D_Z$+OS%`IrEKXNo+shv@YX73zLcBXm^alY5eFZ!Ok3H`HU`*(0`D?pw=OD5THu1J^C(NzRH% zR4BvFDmULV(v}(xkokSAtKzi{11yIgH*lCIroK&EgX+>2>X*$wOYp^2#itp85bygs zk=MiY6Fd#a2YE`XyhYyKQ8i4(6|G(kGBbIVIZE#k)pjTibz}oqUK}$Q)t&b!lNTQe zQhA-IN)Qf*5at(>U=o!#Q*ogZ8Mt)i#Q_^@QV0r(E?jWS$N?LJ10iDU)aA(tF%WQo#{u$|QnC zvU7H%GK>qC@(AiT3XR48sNWk0Bg5#$|Vn`g;aaLeU~MX3yMw>!iP0Wnm>BKarJFlq9 zPD}Jaj!OaJsqNbr8~kP34*QKxqZ+GtS{9En*jl5F2;)->h`|^g^?(I}R_iLwQQBMr zpO-BrlpGX8#^MPLN;ZlyVz6QJCZKYN9rS({`O@swhEW5&XOz5%vviU7=z#MT?HyY4J{(z+0YRU}TrpPojw>w7r+-pBRCcl|47bz<)v+Lw^bt-EF8Y#+7r(6@T+c`ARH?JhnL=*2}upDzJ2~ixUGLv8Ths4p2*QQ__xX+Fh z9uxpQzbX~WDL*Za1F&|*#wiDhOfeu@Jm#s^d^az@Tg=%d`JP&Hpb56hl<_rwNGcq^ z_8XQ~l?vZ(NknDyeU08rvz+z?#_sjf9Q|N{uPnW6hfSHi<2BrQi zGXVLp-Gh-x*QWK9gX0^dY>7QSKo>;TVd-d-7BG!2Enzn)W^SXLkcQ#IJfhTknCG6% z_U-cg^7&kQG(FwAW%K3AOZt89RLtP-?Y0s5l17^T_FaqbpPXRyR+9s>TjCX^>rY+h z2i0b|7Tjm&tn8#h%YC3bkgB0^$FR$Jv;SS@KG+J=z&hd66>&&#iF9{9FH-(yVvtE@ zF3=Ha&U_@Y&y$sqP$zMxq7nU7Do}SjEmagQs=+2WK%_pS7^PJc z^*82N9#p|Rv20*epd$4+H4RBui8$Kz^$DFVDuh!f8l5R}@)=dOZj3Va11NxrvE3V7*@;z+iN!3NyrRY85 zzu%o@j1;eXM)LQ3czTeQMdS6QlER6dH}Yt2Nr?fsM+VY}GVt9S_q*k&my-CC`>l~!YT(WW$*AmyC zLl%DK=p5fceQzPmrvVMVAz=-|ICtKh@A2&bn*$8d)N+dfqbKG6jJ9^89ueY4eNK2G zW28+z1H@rrRYhxn1xw*$g{-xmdLG-W%1Bx@aTHJNNkc9Ci6)vN>f zJTX5s2K=o_LHsGhbV#}zh0V*lF}sD1F?jG3rZFUB+=&#s+L)-r-uA?3;Dj2gKd7IN@psU(IDgn} z4c(B*#7>GT+4nJVRCBhZyVmy@IH>@J7(n_h5k{aIwohTsJ||IV-LXLQB*}?<%I& z;ze(>^NYeCodErWXTPE=&LexxucP7rxT5foguVw>VIl>d$u^pAg9+g%rfM)`KQ-qd zw+|oQFj_Y4(U|e1Rn0lZn4`p~ zx{Veui6rUnh6XYPpPNoAuv`XA8xc1i1aE`6>F8>-6ov;U$XYC46@2|uQ)xbbmYS9N zm>{5Id8^~GFl&}_ROOv$+xjcdt|FbuZ`Q~}BkTl)Ji}F1u~4S}t>cwh`}M)Xb*J2k z!}(NEtM}Sd|L&vIW-!5EF6!HiS9NVVe7*B4CVzGaMcZLFx7Y!1FYxj17Cxd8M@_bP+^oUq`Nku5@X|_1 zk%e0-$X4R<134kMc4ayZfa1*RJUxAVumqA+$HXV6n4(p2oP1{Ow6WK(gie*dCn>lgZ^l8x(ye_o=QFP#uZoVS{Xy9}K@&Gk8=6880uP zU{{9izV-@3Dmh}VE*5fu75Vb}1btb0zI2SB&^#z}g2X_`ZsWp+IJ$UGav*ID-oeXD z@tT~Sau(yphYPQ-Hrdz=&3Lp98@qu>5X1*JBYfPEJ9|3g{1YIUGun*8>H7{A=hEX_xU|ABbgGevBj>_(da`|toaThFORf~R}&YHgojr?$WFfd zzVZ7V!~3T5cah^9heYoN^7zAfacD(sZt&(61wmH@ek1G~)UBxGwK|Usb;?D&*H`$} zg`^g~fs8dM)Fa2&MXJ{`0-pg;{W3UR&6N!)Y2ugZbK0gXRb>WX(8j$KM+vipy(p&e z@e?O_Va0zP^T}16z)#$--NlxAttwQw|6ncwHKQSeGU?vcm64T`lcV%D2Rd>EV_Myi z1eiv8s@*ej;Uy7kFh;tU|HCZ1uLK-dTBd}9zk}d?%_6V68R@s%n|k%gQ86hpd)Y?b z^^$QW(bYT@B&6uDqJ@3d>~&YGs%kt;No}ctNSxgM zo)Y-w#fo-n>F4h{#Igou9Gc8VwAL+eV#K~Sq{`bI)eQ}JBP#7uamf=PE`gyvD&H+X z5L}1N@o0_fGpG^CINaf2O(N49EN$QdD)z|@ z*F;07YbUpZq@TYCZJ+){vhzv@T*-9mXB$s_OCR?T7)KyR2b%WWRsJ)0-E zQ}msB4GQDXkk%V)kgc2U7#?5Z3G^=)Da$l#Fm2kN@QFzxUYw3+0hqHcRPMJSJq+IW zl<)PIFt1xvg$ZqCLp#=_6~D?c+4tS|-qSoxiP-miiKYxA_DLn5zIdZKSc%03-gb;quDq(~fgg}k4)7Dt_;*R%{ z-yOQSnNUG`a>gT%?m)t6z$Z&JX}jwF&0DmrYbFH0Uv+t-kY6_ubi)zZ_ssk?G2TC@ zgD{bF^GA9=QHLH5T4Zm~oyJeRmgZ)z+aojyS+spcE|hN({EP<6XB>dIp)M9E_#m!R znEd6T`VX0&$MSQ0Qk_-9b`|TqvrgOXxj7`4>)T{un6OSbP!k_0ZclL}@inE2(~XbW ze`q%=#cFkO(EjqF;d|e8;(6UfG1RHd6m?QU$siNmJuF;{MTqvVP*pZ6C$m~_RnK#7 z{q_d`K~6gJE6$GC1QWDwP@kh8777IdMcye_c=sqV@$BbNwHo1QKUybo!`1c~j_NB+ zYzrLuSb0CP3Hm_xCGupU=@sebxr8~rH4U6YBSpOF1{3{zl!an<3b~A4Uj7!)QL?xg zV6sHSI{%L9&bc7ps;o*U8Q*fL2nBv+e7R7|nkouqX^pq*#oEipWx|-JKSY`;Vr4d5 zP!-CHY= zf+8v^YKWTWHak;NEkZHlsM z3riry(_tPK!E)0FX@^yIw!X3k7>Po1W)elz8RC^1@9*x$mb06PAnN5?`8l##r}x9- z)lyS6lnxBk?=3EUl*+kcHA<^<#78L)3=BlSjySo($+NSZAK>@9xK@*o4Nx?>ejNM~Cvg zzcK9t4RI=BNN*O$VYqK5vt#zVZgyD``78)MY(A1|Ev~LY=;-*o9>0rEm8#+be!qp4 zT;kw;|1#sFLZ@}TkdMh?K-lWvCJ#E1-ILOd$Y7$>&<&V_txS3}HXdMU8ZkCYFXi?r zhB=C4C7PJO=|k>8l!%}T(W{Ur8t1^>tWACEkNqv1DyqSwzXL|s#90etA8XfVEXrVU zV&_(Pr3|$4H9imi$^0|}p*2~+&Z&DP3rL|~36UmYL&HTolLeQ+YW_O!HgD&^J%6B;a7Mk>+|K#_+M(U&kMIU|dc^u8k6sR!KR<7aEmkoY zWb%;V!rS=PK%gGL1ia_XG}D%I

1x1oD8Gx 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�y2%chMcN&%Eut!6Ve7$v&n+ZY&Znzt#uOdUh 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

f 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%0A{h3KunaUN)5pQ}!?yf@ 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

^MR7Q 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 Programming +Web development +AWS Lambda +Sentry +Sentry homepage {% include "blog/external-link.html" %} +Sentry Python Quickstart docs {% include "blog/external-link.html" %} From e3d672e0daeb60d607e8c5f064617a854067610c Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Wed, 25 Aug 2021 06:52:57 -0400 Subject: [PATCH 27/42] fixing typo and some additional broken links --- .../pages/01-introduction/03-why-use-python.markdown | 5 +---- .../01-introduction/08-best-python-resources.markdown | 10 ---------- content/pages/04-web-development/28-celery.markdown | 4 ---- content/pages/05-deployment/04-cdns.markdown | 4 ---- content/pages/06-devops/11-caching.markdown | 4 ---- ...3-performance-monitoring-aws-lambda-sentry.markdown | 7 +++---- 6 files changed, 4 insertions(+), 30 deletions(-) diff --git a/content/pages/01-introduction/03-why-use-python.markdown b/content/pages/01-introduction/03-why-use-python.markdown index 8c036951b..86a0e3ecd 100644 --- a/content/pages/01-introduction/03-why-use-python.markdown +++ b/content/pages/01-introduction/03-why-use-python.markdown @@ -33,10 +33,7 @@ The IEEE ranked Python as the [#1 programming language in 2019](https://spectrum.ieee.org/computing/software/the-top-programming-languages-2019), which continued its hot streak after ranking it -[#1 in 2018](https://spectrum.ieee.org/at-work/innovation/the-2018-top-programming-languages), -[#1 in 2017](https://spectrum.ieee.org/at-work/innovation/the-2017-top-programming-languages) -and -[#3 top programming language in 2016](http://spectrum.ieee.org/computing/software/the-2016-top-programming-languages). +[#1 in 2018](https://spectrum.ieee.org/at-work/innovation/the-2018-top-programming-languages) and 2017. [RedMonk's June 2019 ranking](https://redmonk.com/sogrady/2019/07/18/language-rankings-6-19/) had Python at #3, which held consistent from previous years' rankings in [2018](https://redmonk.com/sogrady/2018/08/10/language-rankings-6-18/) diff --git a/content/pages/01-introduction/08-best-python-resources.markdown b/content/pages/01-introduction/08-best-python-resources.markdown index 81113487a..6677ba3d2 100644 --- a/content/pages/01-introduction/08-best-python-resources.markdown +++ b/content/pages/01-introduction/08-best-python-resources.markdown @@ -47,13 +47,6 @@ should skip down to the next section for "experienced developers". and problems rather than jumping into a specific language that's recommended to you by a friend. -* [A Python Crash Course](https://www.grahamwheeler.com/posts/python-crash-course.html) - gives an awesome overview of the history of Python, what drives the - programming community and dives into example code. You will likely need - to read this in combination with other resources to really let the syntax - sink in, but it's a great article to read several times over as you - continue to learn. - * The [Python projects tag](https://www.twilio.com/blog/tag/python) on the Twilio blog is constantly updated with fun tutorials you can build to learn Python, such as the @@ -61,9 +54,6 @@ should skip down to the next section for "experienced developers". [Choose Your Own Adventures Presentations using Flask and WebSockets](https://www.twilio.com/blog/2014/11/choose-your-own-adventure-presentations-with-reveal-js-python-and-websockets.html) and [Martianify Photos with OpenCV](https://www.twilio.com/blog/2015/11/getting-started-with-opencv-and-python-featuring-the-martian-2.html). -* [A Byte of Python](http://www.swaroopch.com/notes/python/) is a beginner's - tutorial for the Python language. - * Google put together a great compilation of materials and subjects you should read and learn from if you want to be a [professional programmer](https://www.google.com/about/careers/students/guide-to-technical-development.html). diff --git a/content/pages/04-web-development/28-celery.markdown b/content/pages/04-web-development/28-celery.markdown index aa05b783a..1eca55be1 100644 --- a/content/pages/04-web-development/28-celery.markdown +++ b/content/pages/04-web-development/28-celery.markdown @@ -186,7 +186,3 @@ right configuration settings in place. is a short post with the minimal code for running the Celery daemon and Celerybeat as system services on Linux. - -* [Three quick tips from two years with Celery](https://library.launchkit.io/three-quick-tips-from-two-years-with-celery-c05ff9d7f9eb) - provides some solid advice on retry delays, the `-Ofair` flag and global - task timeouts for Celery. diff --git a/content/pages/05-deployment/04-cdns.markdown b/content/pages/05-deployment/04-cdns.markdown index 6f59ac4e8..bd4e516fe 100644 --- a/content/pages/05-deployment/04-cdns.markdown +++ b/content/pages/05-deployment/04-cdns.markdown @@ -12,10 +12,6 @@ servers to improve web app loading speed. ### CDN resources -* [Mastering HTTP Caching](https://blog.fortrabbit.com/mastering-http-caching) - is a fantastic post that goes into great technical detail on how CDNs and - caching work. - * [The 5 hour CDN](https://fly.io/blog/the-5-hour-content-delivery-network/) explains the basics of what CDNs are and how they are a combination of many standard web server components, but used globally and at scale. diff --git a/content/pages/06-devops/11-caching.markdown b/content/pages/06-devops/11-caching.markdown index 5a8e94abf..73d9261aa 100644 --- a/content/pages/06-devops/11-caching.markdown +++ b/content/pages/06-devops/11-caching.markdown @@ -54,10 +54,6 @@ A cache can be created for multiple layers of the stack. covers monitoring, tuning and scaling for the very high scale [Reddit.com](https://www.reddit.com/) website. -* [Mastering HTTP caching](https://blog.fortrabbit.com/mastering-http-caching) - provides more advanced advice on caching dynamic as well as static - content via CDNs and other configurations. - ## Caching learning checklist diff --git a/content/posts/210823-performance-monitoring-aws-lambda-sentry.markdown b/content/posts/210823-performance-monitoring-aws-lambda-sentry.markdown index 40cf73c7a..9ede782ef 100644 --- a/content/posts/210823-performance-monitoring-aws-lambda-sentry.markdown +++ b/content/posts/210823-performance-monitoring-aws-lambda-sentry.markdown @@ -3,7 +3,7 @@ slug: application-performance-monitoring-aws-lambda-functions-sentry meta: Learn how to use Sentry Application Performance Monitoring on AWS Lambda. category: post date: 2021-08-23 -modified: 2021-08-25 +modified: 2021-08-26 newsletter: False headerimage: /img/headers/python-lambda-sentry.jpg headeralt: The Python, AWS Lambda and Sentry logos are copyright their respective owners. @@ -194,10 +194,9 @@ and the value of the DSN string that you copied from the Sentry screen. Add the environment variable in AWS Lambda. -Click the "Save" button and go back to your Lambda function code. +Click the "Save" button and go back to your Lambda function's code editor. -Update your Lambda function with the following highlighted new lines of code -to send errors to Sentry. +Replace the code in your Lambda function with the following code: ```python import json From 49f5aa938ae4da789ec1dc390da8aa5eb6f5c7f9 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Wed, 25 Aug 2021 10:18:43 -0400 Subject: [PATCH 28/42] cleaning up broken or redirected links --- .../05-enterprise-python.markdown | 2 +- .../00-web-development.markdown | 8 -------- .../pages/04-web-development/02-django.markdown | 2 +- content/pages/04-web-development/17-css.markdown | 6 ------ .../pages/04-web-development/28-celery.markdown | 1 + .../04-web-development/42-websockets.markdown | 16 +++++----------- .../04-web-development/46-webhooks.markdown | 5 ----- content/pages/06-devops/11-caching.markdown | 5 ----- ...be-recordings-speech-text-assemblyai.markdown | 2 +- ...-recording-transcriptions-assemblyai.markdown | 4 ++-- 10 files changed, 11 insertions(+), 40 deletions(-) diff --git a/content/pages/01-introduction/05-enterprise-python.markdown b/content/pages/01-introduction/05-enterprise-python.markdown index d96558641..c50052847 100644 --- a/content/pages/01-introduction/05-enterprise-python.markdown +++ b/content/pages/01-introduction/05-enterprise-python.markdown @@ -70,7 +70,7 @@ best maintained and fully featured pieces of code for any language. Meanwhile, some of the traditional enterprise software development languages such as Java have languished due to underinvestment by their major corporate -backers. When [Oracle purchased Sun Microsystems in 2009](https://www.oracle.com/corporate/pressrelease/oracle-buys-sun-042009.html) +backers. When Oracle purchased Sun Microsystems in 2009, there was a long lag time before Java was enhanced with new language features in Java 7. Oracle also [bundles unwanted adware with the Java installation](http://www.engadget.com/2015/03/06/java-adware-mac/), diff --git a/content/pages/04-web-development/00-web-development.markdown b/content/pages/04-web-development/00-web-development.markdown index c23e05a2b..5839e8907 100644 --- a/content/pages/04-web-development/00-web-development.markdown +++ b/content/pages/04-web-development/00-web-development.markdown @@ -92,14 +92,6 @@ world. the creation of the URL. This is a great read that provides historical context for why things are the way they are with the web. -* [Web app checklist](http://dhilipsiva.com/webapp-checklist/) presents - good practices that developers building and [deploying](/deployment.html) - web applications should follow. Don't worry about having every single - one of these recommendations implemented before getting your site - live, but it is worthwhile to review the list to make sure there is not - something obvious you can handle in a few minutes that will improve - your site's security, performance or usability. - * [The Browser Hacker's Guide to Instantly Loading Everything](https://www.youtube.com/watch?v=7vUs5yOuv-o) is a spectacular technical talk given by Addy Osmani at JSConf EU 2017 that has great bits of developer knowledge for both beginner and diff --git a/content/pages/04-web-development/02-django.markdown b/content/pages/04-web-development/02-django.markdown index 47b59b9e1..3061d2eee 100644 --- a/content/pages/04-web-development/02-django.markdown +++ b/content/pages/04-web-development/02-django.markdown @@ -121,7 +121,7 @@ These books and tutorials assume that you know the basics of building Django and want to go further to become much more knowledgeable about the framework. -* [2 Scoops of Django](https://www.twoscoopspress.com/collections/django/products/two-scoops-of-django-1-11) +* [2 Scoops of Django](https://www.feldroy.com/books/two-scoops-of-django-3-x) by Daniel Greenfeld and Audrey Roy is well worth the price of admission if you're serious about learning how to correctly develop Django websites. diff --git a/content/pages/04-web-development/17-css.markdown b/content/pages/04-web-development/17-css.markdown index b248828f8..d50968d09 100644 --- a/content/pages/04-web-development/17-css.markdown +++ b/content/pages/04-web-development/17-css.markdown @@ -190,12 +190,6 @@ web application's design. talk about tables, because that was the only way to position anything back in the day. -* [CSS: The bad bits](https://www.joeforshaw.com/blog/css-the-bad-bits-and-how-to-avoid-them) - examines global scope, implicit percentage styling rules and the z-index - which can be difficult to use and require some restraint to ensure they - do not cause issues for the rest of your stylesheet rules as you create - and maintain your frontend. - * [Improving Your CSS with Parker](https://csswizardry.com/2016/06/improving-your-css-with-parker/) shows how to use the static CSS analysis tool [Parker](https://github.com/katiefenn/parker/) to improve your stylesheets. diff --git a/content/pages/04-web-development/28-celery.markdown b/content/pages/04-web-development/28-celery.markdown index 1eca55be1..6746997d1 100644 --- a/content/pages/04-web-development/28-celery.markdown +++ b/content/pages/04-web-development/28-celery.markdown @@ -176,6 +176,7 @@ web framework of your choice. looks at how to configure Celery to handle long-running tasks in a Django app. + ### Celery deployment resources Celery and its broker run separately from your web and WSGI servers so it adds some additional complexity to your [deployments](/deployment.html). The diff --git a/content/pages/04-web-development/42-websockets.markdown b/content/pages/04-web-development/42-websockets.markdown index 8c11ce936..2a902f79c 100644 --- a/content/pages/04-web-development/42-websockets.markdown +++ b/content/pages/04-web-development/42-websockets.markdown @@ -7,10 +7,10 @@ sidebartitle: WebSockets meta: WebSockets are a protocol for full-duplex web communications. Learn about WebSockets on Full Stack Python. -A WebSocket is a [standard protocol](http://tools.ietf.org/html/rfc6455) for -two-way data transfer between a client and server. The WebSockets protocol -does not run over HTTP, instead it is a separate implementation on top of -[TCP](http://en.wikipedia.org/wiki/Transmission_Control_Protocol). +A WebSocket is a [standard protocol](https://datatracker.ietf.org/doc/html/rfc6455) +for two-way data transfer between a client and server. The WebSockets +protocol does not run over HTTP, instead it is a separate implementation +on top of [TCP](http://en.wikipedia.org/wiki/Transmission_Control_Protocol). ## Why use WebSockets? @@ -193,9 +193,7 @@ own project. * [websockets](https://github.com/aaugustin/websockets) is a WebSockets implementation for Python 3.3+ written with the - [asyncio](https://docs.python.org/3.4/library/asyncio.html) module (or with - [Tulip](https://code.google.com/p/tulip/) if you're working with - Python 3.3). + [asyncio](https://docs.python.org/3.9/library/asyncio.html) module. * [Speeding up Websockets 60X](https://www.willmcgugan.com/blog/tech/post/speeding-up-websockets-60x/) is a cool experiment in coding loops different ways to eek out more @@ -204,10 +202,6 @@ own project. of how tweaking and tuning can produce outsized returns in some applications. -* The [Choose Your Own Adventure Presentations](https://www.twilio.com/blog/2014/11/choose-your-own-adventure-presentations-with-reveal-js-python-and-websockets.html) - tutorial uses WebSockets via gevent on the server and socketio.js for - pushing vote count updates from the server to the client. - * [Adding Real Time to Django Applications](http://crossbar.io/docs/Adding-Real-Time-to-Django-Applications/) shows how to use Django and Crossbar.io to implement a publish/subscribe feature in the application. diff --git a/content/pages/04-web-development/46-webhooks.markdown b/content/pages/04-web-development/46-webhooks.markdown index 6307fe02e..6583c526d 100644 --- a/content/pages/04-web-development/46-webhooks.markdown +++ b/content/pages/04-web-development/46-webhooks.markdown @@ -33,11 +33,6 @@ otherwise independent web applications. explanation of this concept that also contains some basic security considerations when using them. -* [How to Listen for Webhooks with Python](https://blog.bearer.sh/consume-webhooks-with-python/) - has code examples in both [Flask](/flask.html) and [Django](/django.html) - for how to receive an HTTP POST webhook request, as well as how to test - it locally with Ngrok. - * [Webhooks for Beginners - Full Course](https://www.youtube.com/watch?v=41NOoEz3Tzc) is an entire free video course that shows both how to use and implement webhooks into applications. diff --git a/content/pages/06-devops/11-caching.markdown b/content/pages/06-devops/11-caching.markdown index 73d9261aa..c8aebbbf1 100644 --- a/content/pages/06-devops/11-caching.markdown +++ b/content/pages/06-devops/11-caching.markdown @@ -45,11 +45,6 @@ A cache can be created for multiple layers of the stack. reading even though the author is describing his Microsoft code as the impetus for writing the content. -* While caching is a useful technique in many situations, it's important - to also note that there are - [downsides to caching](https://msol.io/blog/tech/2015/09/05/youre-probably-wrong-about-caching/) - that many developers fail to take into consideration. - * [Caching at Reddit](https://redditblog.com/2017/1/17/caching-at-reddit/) covers monitoring, tuning and scaling for the very high scale [Reddit.com](https://www.reddit.com/) website. diff --git a/content/posts/200809-transcribe-recordings-speech-text-assemblyai.markdown b/content/posts/200809-transcribe-recordings-speech-text-assemblyai.markdown index 96926ddc2..80f4a7344 100644 --- a/content/posts/200809-transcribe-recordings-speech-text-assemblyai.markdown +++ b/content/posts/200809-transcribe-recordings-speech-text-assemblyai.markdown @@ -470,7 +470,7 @@ transcribe recordings with speech into text output. Next, take a look at some of their more advanced documentation that goes beyond the basics in this tutorial: -* [Supported file formats](https://docs.assemblyai.com/overview/supported-file-formats) +* [Supported file formats](https://docs.assemblyai.com/faqs/supported-file-formats) * [Transcribing dual channel/stereo recordings](https://docs.assemblyai.com/guides/transcribing-dual-channel-stereo-recordings) * [Getting speaker labels (speaker diarization)](https://docs.assemblyai.com/guides/getting-speaker-labels-speaker-diarization) diff --git a/content/posts/201009-accurate-twilio-voice-call-recording-transcriptions-assemblyai.markdown b/content/posts/201009-accurate-twilio-voice-call-recording-transcriptions-assemblyai.markdown index e178de998..a041498f9 100644 --- a/content/posts/201009-accurate-twilio-voice-call-recording-transcriptions-assemblyai.markdown +++ b/content/posts/201009-accurate-twilio-voice-call-recording-transcriptions-assemblyai.markdown @@ -14,7 +14,7 @@ is commonly used to initiate and receive phone calls, but the transcription accuracy for [recordings](https://www.twilio.com/docs/voice/api/recording) often leaves a lot to be desired. In this tutorial, we'll see how to connect an outbound phone call powered by the Twilio Voice API with -[AssemblyAI's deep learning transcription API](https://docs.assemblyai.com/guides/transcribing-an-audio-file-recording) +[AssemblyAI's deep learning transcription API](https://docs.assemblyai.com/overview/getting-started) to get significantly more accurate speech-to-text output. @@ -546,7 +546,7 @@ that needs high quality text-to-speech transcription. If the results aren't quite good enough for you, check out this tutorial on [boosting accuracy for keywords or phrases](https://docs.assemblyai.com/guides/boosting-accuracy-for-keywords-or-phrases) as well as -[selecting a model that better matches your data](https://docs.assemblyai.com/guides/transcribing-with-a-different-acoustic-or-custom-language-model). +[better matching your data with topic detection](https://docs.assemblyai.com/guides/iab-categorization). ## What now? From bd441b876a9c9d362990c0450239c044c05a94ee Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Thu, 26 Aug 2021 11:37:24 -0400 Subject: [PATCH 29/42] fixing more linkrot --- content/pages/03-data/01-databases.markdown | 2 -- content/pages/03-data/02-postgresql.markdown | 5 ----- content/pages/05-deployment/03-static-content.markdown | 4 ++-- content/pages/05-deployment/28-jenkins.markdown | 5 ----- 4 files changed, 2 insertions(+), 14 deletions(-) diff --git a/content/pages/03-data/01-databases.markdown b/content/pages/03-data/01-databases.markdown index 5eed45185..cfc1a349b 100644 --- a/content/pages/03-data/01-databases.markdown +++ b/content/pages/03-data/01-databases.markdown @@ -112,8 +112,6 @@ library. The most common libraries for relational databases are: * [cx\_Oracle](https://oracle.github.io/python-cx_Oracle/index.html) for Oracle Database ([source code](https://github.com/oracle/python-cx_Oracle)). - Oracle moved their - [open source driver code from SourceForge to GitHub in 2017](https://blogs.oracle.com/developers/oracle-database-python-driver-now-on-github). SQLite support is built into Python 2.7+ and therefore a separate library diff --git a/content/pages/03-data/02-postgresql.markdown b/content/pages/03-data/02-postgresql.markdown index 26954a7f8..8237709b3 100644 --- a/content/pages/03-data/02-postgresql.markdown +++ b/content/pages/03-data/02-postgresql.markdown @@ -129,11 +129,6 @@ walkthroughs I've read. for many use cases. If you're going down this route, read [this blog post that explains how one developer implemented PostgreSQL full text search with SQLAlchemy](http://blog.garage-coding.com/2015/12/18/postgres-fulltext-search.html). -* [django-postgres-copy](http://django-postgres-copy.californiacivicdata.org/en/latest/) - is a tool for bulk loading data into a PostgreSQL database based on Django models. - [Say hello to our new open-source software for loading bulk data into PostgreSQL](http://www.californiacivicdata.org/2015/07/17/hello-django-postgres-copy/) - is an introduction to using the tool in your own projects. - * [How to speed up tests in Django and PostgreSQL](http://nemesisdesign.net/blog/coding/how-to-speed-up-tests-django-postgresql/) explains some hacks for making your schema migration-backed run quicker. diff --git a/content/pages/05-deployment/03-static-content.markdown b/content/pages/05-deployment/03-static-content.markdown index 7d458e27c..f5a118f54 100644 --- a/content/pages/05-deployment/03-static-content.markdown +++ b/content/pages/05-deployment/03-static-content.markdown @@ -21,8 +21,8 @@ Django framework calls these two categories *assets* and *media*. ## Content delivery networks A content delivery network (CDN) is a third party that stores and serves static files. [Amazon CloudFront](http://aws.amazon.com/cloudfront/), -[CloudFlare](https://www.cloudflare.com/), [Fastly](https://www.fastly.com/), -and [Akamai](https://www.akamai.com/) are examples of CDNs. The purpose of +[CloudFlare](https://www.cloudflare.com/) and [Fastly](https://www.fastly.com/), +are examples of CDN services. The purpose of a CDN is to remove the load of static file requests from web servers that are handling dynamic web content. For example, if you have an nginx server that handles both static files and diff --git a/content/pages/05-deployment/28-jenkins.markdown b/content/pages/05-deployment/28-jenkins.markdown index 463e1f04c..e217e9aa7 100644 --- a/content/pages/05-deployment/28-jenkins.markdown +++ b/content/pages/05-deployment/28-jenkins.markdown @@ -35,11 +35,6 @@ used to automate building, [testing](/testing.html) and is another solid tutorial that also shows how to send email notifications as part of the build process. -* If you're running into difficulty adding an SSH key to your Jenkins system - account so you can connect to another server or Git repository - [this blog post on connecting Jenkins with Git](http://dcycleproject.org/blog/51/connecting-jenkins-and-git) - to get the steps to solve that problem. - * [Running Jenkins in Docker Containers](http://www.catosplace.net/blog/2015/02/11/running-jenkins-in-docker-containers/) is a short tutorial showing how to use the official [Jenkins container](https://registry.hub.docker.com/_/jenkins/) on the From 9812ac71a23660baef7fe0d1899ba3f95febd16b Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Tue, 31 Aug 2021 14:16:34 -0400 Subject: [PATCH 30/42] fix broken postgres link --- content/pages/03-data/02-postgresql.markdown | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/pages/03-data/02-postgresql.markdown b/content/pages/03-data/02-postgresql.markdown index 8237709b3..34284a7e9 100644 --- a/content/pages/03-data/02-postgresql.markdown +++ b/content/pages/03-data/02-postgresql.markdown @@ -126,8 +126,7 @@ walkthroughs I've read. * This article explains how and why PostgreSQL can handle [full text searching](http://blog.lostpropertyhq.com/postgres-full-text-search-is-good-enough/) - for many use cases. If you're going down this route, read - [this blog post that explains how one developer implemented PostgreSQL full text search with SQLAlchemy](http://blog.garage-coding.com/2015/12/18/postgres-fulltext-search.html). + for many use cases. * [How to speed up tests in Django and PostgreSQL](http://nemesisdesign.net/blog/coding/how-to-speed-up-tests-django-postgresql/) explains some hacks for making your schema migration-backed run quicker. From 9f3631c2a33d5a08953416f1c517abc8c13b2043 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Sun, 5 Sep 2021 09:36:14 -0400 Subject: [PATCH 31/42] trying plausible analytics --- theme/templates/base.html | 1 + theme/templates/index-sidebar.html | 2 +- theme/templates/sponsor.html | 2 +- theme/templates/sponsor/assemblyai.html | 7 +++++++ 4 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 theme/templates/sponsor/assemblyai.html diff --git a/theme/templates/base.html b/theme/templates/base.html index 6c14fbb83..e88241418 100644 --- a/theme/templates/base.html +++ b/theme/templates/base.html @@ -7,6 +7,7 @@ {% block meta_header %}{% endblock %} {% block title %}{% endblock %}Full Stack Python {% block css %}{% endblock %} + {% block banner %}{% endblock %} diff --git a/theme/templates/index-sidebar.html b/theme/templates/index-sidebar.html index 5fcd2647d..ef55aa559 100644 --- a/theme/templates/index-sidebar.html +++ b/theme/templates/index-sidebar.html @@ -1,3 +1,3 @@

- {% include "sponsor/sentry-assemblyai.html" %} + {% include "sponsor/assemblyai.html" %}
diff --git a/theme/templates/sponsor.html b/theme/templates/sponsor.html index 6485b9e0a..9583a8c90 100644 --- a/theme/templates/sponsor.html +++ b/theme/templates/sponsor.html @@ -1,5 +1,5 @@ {% if page.sortorder[0:2] == "01" or page.sortorder[0:2] == "02" or page.sortorder[0:2] == "03" or page.sortorder[0:2] == "04" or page.sortorder[0:2] == "05" or page.sortorder[0:2] == "06" or page.sortorder[0:2] == "50" %} -{% include "sponsor/sentry-assemblyai.html" %} +{% include "sponsor/assemblyai.html" %} {% include "sponsor/carbon.html" %} {% endif %} {% if false %} diff --git a/theme/templates/sponsor/assemblyai.html b/theme/templates/sponsor/assemblyai.html new file mode 100644 index 000000000..9ce17932c --- /dev/null +++ b/theme/templates/sponsor/assemblyai.html @@ -0,0 +1,7 @@ +
+

Sponsored By

+
+ AssemblyAI logo +

The most accurate speech-to-text API. Built for Python developers.

+
+
From 5215c1cdc71530db93bd30aa48cbf4df246c2930 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Mon, 13 Sep 2021 11:29:46 -0400 Subject: [PATCH 32/42] removing link rot --- .../01-introduction/07-companies.markdown | 2 +- content/pages/03-data/00-data.markdown | 8 +++++- content/pages/03-data/01-databases.markdown | 2 +- content/pages/03-data/11-redis.markdown | 4 --- content/pages/03-data/12-mongodb.markdown | 10 ------- content/pages/03-data/19-bokeh.markdown | 7 ----- .../00-web-development.markdown | 6 ---- .../27-task-queues.markdown | 4 --- .../pages/10-working/18-developer-demos.md | 28 +++++++++++++++++++ ...recordings-speech-text-assemblyai.markdown | 6 ++-- ...urate-twilio-voice-transcriptions.markdown | 6 ++-- ...pplication-performance-monitor-django.html | 6 ++++ .../choices/demo-software-developers.html | 0 13 files changed, 47 insertions(+), 42 deletions(-) create mode 100644 content/pages/10-working/18-developer-demos.md create mode 100644 theme/templates/blog/sentry-application-performance-monitor-django.html create mode 100644 theme/templates/choices/demo-software-developers.html diff --git a/content/pages/01-introduction/07-companies.markdown b/content/pages/01-introduction/07-companies.markdown index 7eb7a78f2..c4e02cfc8 100644 --- a/content/pages/01-introduction/07-companies.markdown +++ b/content/pages/01-introduction/07-companies.markdown @@ -37,7 +37,7 @@ below). at job descriptions on sites like [Glassdoor with "Python Goldman Sachs" keywords](https://www.glassdoor.com/Jobs/Goldman-Sachs-python-Jobs-EI_IE2800.0,13_KO14,20.htm) and - [Indeed for JP Morgan Chase](https://www.indeed.com/salaries/Python-Developer-Salaries-at-JPMorgan-Chase). + [Indeed for JP Morgan Chase](https://www.indeed.com/cmp/JPMorgan-Chase/salaries/Python-Developer). Salaries and responsibilities vary widely based on the role and whether Python is used for data analysis, [web application development](/web-development.html) or DevOps. diff --git a/content/pages/03-data/00-data.markdown b/content/pages/03-data/00-data.markdown index 493ebd45f..39a767500 100644 --- a/content/pages/03-data/00-data.markdown +++ b/content/pages/03-data/00-data.markdown @@ -12,7 +12,7 @@ subsections, including (in no particular order): * data processing / wrangling * machine learning -* data analysis +* [data analysis](/data-analysis.html) * [visualization](/data-visualization.html) * geospatial mapping * persistence via [relational databases](/databases.html) and @@ -154,6 +154,12 @@ sets. have evolved over the past 20ish years based on his first-hand experience as a leader and member in that community. +* The State of [Python Speech Recognition](https://www.assemblyai.com/blog/the-state-of-python-speech-recognition-in-2021) + in 2021 is a practical overview of a specific area in data: extracting text + from voice recording data. Looking at verticals like this one can make it + easier to understand changes that are occurring in some parts of data and + programming that could be applied to other areas. + * [Automated Data Wrangling](https://catalyst.coop/2021/05/23/automated-data-wrangling/) covers cleaning, labeling, and automating the bunch of activities that are typically necessary before analysis and data usage can diff --git a/content/pages/03-data/01-databases.markdown b/content/pages/03-data/01-databases.markdown index cfc1a349b..ff780eff7 100644 --- a/content/pages/03-data/01-databases.markdown +++ b/content/pages/03-data/01-databases.markdown @@ -181,7 +181,7 @@ speed on SQL if you have never previously used it. elaborates on one of the trickiest parts of writing SQL statements that bridge one or more tables: the `JOIN`. -* [Writing better SQL](http://www.craigkerstiens.com/2016/01/08/writing-better-sql/) +* [Writing more legible SQL](https://www.craigkerstiens.com/2016/01/08/writing-more-legible-sql/) is a short code styling guide to make your queries easier to read. * [SQL Intermediate](https://www.dataquest.io/blog/sql-intermediate/) is a diff --git a/content/pages/03-data/11-redis.markdown b/content/pages/03-data/11-redis.markdown index c05d04741..3600ddae2 100644 --- a/content/pages/03-data/11-redis.markdown +++ b/content/pages/03-data/11-redis.markdown @@ -84,10 +84,6 @@ Redis should be customized out of its default configuration to secure it against unauthorized and unauthenticated users. These resources provide some advice on Reids security and guarding against data breaches. -* [Pentesting Redis servers](http://averagesecurityguy.info/2015/09/17/pentesting-redis-servers/) - shows that security is important not only on your application but also - the databases you're using as well. - * Redis, just as with any relational or NoSQL database, needs to be secured based on [security guidelines](http://www.antirez.com/news/96). There is also a post where the main author of Redis diff --git a/content/pages/03-data/12-mongodb.markdown b/content/pages/03-data/12-mongodb.markdown index 1e9f15161..665144fec 100644 --- a/content/pages/03-data/12-mongodb.markdown +++ b/content/pages/03-data/12-mongodb.markdown @@ -99,11 +99,6 @@ security controls so make sure to lock down your instances. installing and using MongoDB on your own instance. The post covers authentication, SSL and firewalls. -* [Securing MongoDB using Let's Encrypt certificate](https://zohaib.me/securing-mongodb-using-lets-encrypt/) - gives a configuration that encrypts that traffic coming from and - going to your MongoDB instances using free - [Let's Encrypt certificates](https://letsencrypt.org/). - * This 4 post securing MongoDB series covers [Data Security Requirements for Regulatory Compliance](https://www.mongodb.com/blog/post/securing-mongodb-part-1-data-security-requirements-for-regulatory-compliance), [Database Access Control](https://www.mongodb.com/blog/post/securing-mongodb-part-2-database-access-control), @@ -111,11 +106,6 @@ security controls so make sure to lock down your instances. and [Environmental Control & Database Management](https://www.mongodb.com/blog/post/securing-mongodb-part-4-environmental-control-and-database-management). -* Lightweight Directory Access Protocol (LDAP) is common in many - established company environments for security. This post on - [How to Configure LDAP Authentication for MongoDB](https://www.mongodb.com/blog/post/how-to-configure-LDAP-authentication-for-mongodb) - goes over how to authenticate users via LDAP who are using MongoDB. - ### Python with MongoDB resources MongoDB is straightforward to use in a Python application when a driver diff --git a/content/pages/03-data/19-bokeh.markdown b/content/pages/03-data/19-bokeh.markdown index b215de42d..22f8d55cc 100644 --- a/content/pages/03-data/19-bokeh.markdown +++ b/content/pages/03-data/19-bokeh.markdown @@ -99,13 +99,6 @@ basic syntax will change as the library's API is not yet stable. project has the code to create a simple chart with Bokeh and [Flask](/flask.html). -* [Bokeh vs Dash — Which is the Best Dashboard Framework for Python?](https://blog.sicara.com/bokeh-dash-best-dashboard-framework-python-shiny-alternative-c5b576375f7f) - contains a single project that was written in both Dash and Bokeh. The - author gives his subjective view on the implementation difficulty - although the web application only contained a single type of data - visualization so it is hard to drawn any real conclusions from his - opinion. - * [Realtime Flight Tracking with Pandas and Bokeh](https://www.geodose.com/2019/01/realtime-flight-tracking-pandas-bokeh-python.html) provides a great example of combining [pandas](/pandas.html) for structuring data with Bokeh for visualization. diff --git a/content/pages/04-web-development/00-web-development.markdown b/content/pages/04-web-development/00-web-development.markdown index 5839e8907..919cc6c94 100644 --- a/content/pages/04-web-development/00-web-development.markdown +++ b/content/pages/04-web-development/00-web-development.markdown @@ -71,12 +71,6 @@ world. [data bases](/databases.html), [task queues](/task-queues.html), [caching](/caching.html) and several other critical concepts. -* The [Evolution of the Web](http://www.evolutionoftheweb.com/) visualizes - how web browsers and related technologies have changed over time as well as - the overall growth of the Internet in the amount of data transferred. Note - that the visualization unfortunately stops around the beginning of 2013 but - it's a good way to explore what happened in the first 24 years. - * [What happens when?](https://github.com/alex/what-happens-when) is an incredibly detailed answer to the questions "What happens when you type google.com into your browser's address box and press enter?" that diff --git a/content/pages/04-web-development/27-task-queues.markdown b/content/pages/04-web-development/27-task-queues.markdown index 9533a586d..70ec128c2 100644 --- a/content/pages/04-web-development/27-task-queues.markdown +++ b/content/pages/04-web-development/27-task-queues.markdown @@ -176,10 +176,6 @@ when scaling out a large deployment of distributed task queues. is a straightforward tutorial for setting up the Celery task queue for Django web applications using the Redis broker on the back end. -* [Three quick tips from two years with Celery](https://library.launchkit.io/three-quick-tips-from-two-years-with-celery-c05ff9d7f9eb) - provides some solid advice on retry delays, the -Ofair flag and global - task timeouts for Celery. - * [Asynchronous Tasks with Flask and Redis Queue](https://testdriven.io/asynchronous-tasks-with-flask-and-redis-queue) looks at how to configure Redis Queue to handle long-running tasks in a Flask app. diff --git a/content/pages/10-working/18-developer-demos.md b/content/pages/10-working/18-developer-demos.md new file mode 100644 index 000000000..aa82c988c --- /dev/null +++ b/content/pages/10-working/18-developer-demos.md @@ -0,0 +1,28 @@ +title: Demoing to Software Developers +category: page +slug: demo-software-developers +sortorder: 1018 +toc: False +sidebartitle: Developer Demos +meta: How to give technical demos to software developers. + + +Creating and executing an appealing technical demo to an audience of software +developers is a ton of work, but there is no better way to get people +legitimately interested in your product if you land a great demo. The +inherent difficulty involved in exceptional technical demos also creates +a large moat that prevent others from easily copying the work you put into +the demo. + +The most important parts to a standout technical demo are: + +1. show how to solve a difficult technical problem, as easily as possible +1. take the audience on a story arc +1. do it live (especially if you include code) +1. rehearse constantly, both happy path and recovering from errors +1. speak plainly but accurately + +Examples: +* [Twilio Phone Calls Demo at NY Tech Meetup (2010)](https://www.youtube.com/watch?v=-VuXIgp9S7o) +* [Concurrency from the Ground Up (2015)](https://www.youtube.com/watch?v=MCs5OvhV9S4) +* [The Mother of All Demos (1968)](https://www.youtube.com/watch?v=yJDv-zdhzMY) diff --git a/content/posts/200809-transcribe-recordings-speech-text-assemblyai.markdown b/content/posts/200809-transcribe-recordings-speech-text-assemblyai.markdown index 80f4a7344..4a5027fbe 100644 --- a/content/posts/200809-transcribe-recordings-speech-text-assemblyai.markdown +++ b/content/posts/200809-transcribe-recordings-speech-text-assemblyai.markdown @@ -3,7 +3,7 @@ slug: transcribe-recordings-speech-text-assemblyai meta: Learn to transcribe speech in recordings like MP3s into text with Python and AssemblyAI's API. category: post date: 2020-08-09 -modified: 2021-01-18 +modified: 2021-09-13 newsletter: False headerimage: /img/headers/python-assemblyai.jpg headeralt: Logos for the implementations used in this blog post. Copyright their respective owners. @@ -457,9 +457,7 @@ That's it, we've got our transcription! You may be wondering what to do if the accuracy isn't where you need it to be for your situation. That is where [boosting accuracy for keywords or phrases](https://docs.assemblyai.com/guides/boosting-accuracy-for-keywords-or-phrases) -and -[selecting a model that better matches your data](https://docs.assemblyai.com/guides/transcribing-with-a-different-acoustic-or-custom-language-model) -come in. You can use either of those two methods to boost the accuracy +comes in. You can use either of those two methods to boost the accuracy of your recordings to an acceptable level for your situation. diff --git a/content/posts/210105-django-accurate-twilio-voice-transcriptions.markdown b/content/posts/210105-django-accurate-twilio-voice-transcriptions.markdown index 94df3bed8..c4b7d0018 100644 --- a/content/posts/210105-django-accurate-twilio-voice-transcriptions.markdown +++ b/content/posts/210105-django-accurate-twilio-voice-transcriptions.markdown @@ -3,7 +3,7 @@ slug: django-accurate-twilio-voice-transcriptions meta: Use Python, Django and AssemblyAI's transcription API to improve recording accuracy for Twilio Programmable Voice phone calls. category: post date: 2021-01-05 -modified: 2021-01-05 +modified: 2021-09-13 newsletter: False headerimage: /img/headers/django-assemblyai.jpg headeralt: Logos for the implementations used in this blog post. Copyright their respective owners. @@ -692,9 +692,7 @@ The second part is just the plain text output from the transcription. You can take this now take this base code and add it to any application that needs high quality text-to-speech transcription. If the results -aren't quite good enough for you, check out this tutorial on -[selecting a model that better matches your data](https://docs.assemblyai.com/guides/transcribing-with-a-different-acoustic-or-custom-language-model) -as well as +aren't quite good enough for you yet, check out this tutorial on [boosting accuracy for keywords or phrases](https://docs.assemblyai.com/guides/boosting-accuracy-for-keywords-or-phrases). diff --git a/theme/templates/blog/sentry-application-performance-monitor-django.html b/theme/templates/blog/sentry-application-performance-monitor-django.html new file mode 100644 index 000000000..6d581b5ea --- /dev/null +++ b/theme/templates/blog/sentry-application-performance-monitor-django.html @@ -0,0 +1,6 @@ +Learning Programming +Web development +Django +Sentry +Sentry homepage {% include "blog/external-link.html" %} +Sentry Performance Monitoring docs {% include "blog/external-link.html" %} diff --git a/theme/templates/choices/demo-software-developers.html b/theme/templates/choices/demo-software-developers.html new file mode 100644 index 000000000..e69de29bb From 91610ce7d519efa7c7bf15a5f84770963283f145 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Mon, 13 Sep 2021 20:34:08 -0400 Subject: [PATCH 33/42] removing link rot --- content/pages/03-data/16-pandas.markdown | 4 ---- content/pages/03-data/17-scipy-numpy.markdown | 5 ----- content/pages/03-data/21-matplotlib.markdown | 4 ---- .../05-deployment/32-configuration-management.markdown | 4 ---- content/pages/05-deployment/33-ansible.markdown | 7 ------- 5 files changed, 24 deletions(-) diff --git a/content/pages/03-data/16-pandas.markdown b/content/pages/03-data/16-pandas.markdown index 9ac2c3bbe..a0750eaae 100644 --- a/content/pages/03-data/16-pandas.markdown +++ b/content/pages/03-data/16-pandas.markdown @@ -82,10 +82,6 @@ is a data structures and analysis library. [Tabula](https://tabula.technology/) library that makes it easier to extract table data from PDF files. -* [Analyzing Browser History Using Python and Pandas](https://applecrazy.github.io/blog/2017-11-12/analyzing-browser-hist-using-python) - shows how to take data from Google Chrome and start to visualize it - with pandas and [matplotlib](/matplotlib.html). - * [Time Series Forecast Case Study with Python: Monthly Armed Robberies in Boston](https://machinelearningmastery.com/time-series-forecast-case-study-python-monthly-armed-robberies-boston/) walks through the data wrangling, analysis and visualization steps with a public data set of murders in Boston from 1966 to 1975. This diff --git a/content/pages/03-data/17-scipy-numpy.markdown b/content/pages/03-data/17-scipy-numpy.markdown index 62ec16355..00763c2d0 100644 --- a/content/pages/03-data/17-scipy-numpy.markdown +++ b/content/pages/03-data/17-scipy-numpy.markdown @@ -44,11 +44,6 @@ following resources are broader walkthroughs for the SciPy ecosystem: plotter. This is a very cool example project that ties together the scientific world and the art world. -* [Lectures in Quantitative Economics: SciPy](https://lectures.quantecon.org/py/scipy.html) - provides a good overview of SciPy compared to the specific NumPy - project, as well as explanations for the wrappers SciPy provides - over lower-level FORTRAN libraries. - * [A plea for stability in the SciPy ecosystem](http://blog.khinsen.net/posts/2017/11/16/a-plea-for-stability-in-the-scipy-ecosystem/) presents concerns from one scientist's perspective about how fast the Python programming ecosystem changes and that code can become backwards diff --git a/content/pages/03-data/21-matplotlib.markdown b/content/pages/03-data/21-matplotlib.markdown index 14f4d2f64..9c60d3740 100644 --- a/content/pages/03-data/21-matplotlib.markdown +++ b/content/pages/03-data/21-matplotlib.markdown @@ -21,10 +21,6 @@ toolkits. is an awesome getting started tutorial that breaks through the confusing beginner steps so you can quick start using the plotting library. -* [Web Scraping With Python: Scrapy, SQL, Matplotlib To Gain Web Data Insights](http://www.scrapingauthority.com/python-scrapy-mysql-and-matplotlib-to-gain-web-data-insights/) - is a long and comprehensive tutorial that walks through obtaining, - cleaning and visualizing data. - * [Matplotlib Cheat Sheet: Plotting in Python](https://www.datacamp.com/community/blog/python-matplotlib-cheat-sheet) contains some handy snippets of code to perform common plotting operations in Matplotlib. diff --git a/content/pages/05-deployment/32-configuration-management.markdown b/content/pages/05-deployment/32-configuration-management.markdown index d4b43ec30..23f4b07ba 100644 --- a/content/pages/05-deployment/32-configuration-management.markdown +++ b/content/pages/05-deployment/32-configuration-management.markdown @@ -32,10 +32,6 @@ operations, such as querying the database from the Django manage.py shell. is an openly biased but detailed post on why to choose SaltStack over Ansible in certain situations. -* [Ansible vs. Shell Scripts](https://valdhaus.co/writings/ansible-vs-shell-scripts/) - provides some perspective on why using a configuration management tool is a - better choice than venerable but brittle shell scripts. - * [Ansible vs. Chef](http://tjheeta.github.io/2015/04/15/ansible-vs-chef/) is a comparsion of Ansible with the Chef configuration management tool. diff --git a/content/pages/05-deployment/33-ansible.markdown b/content/pages/05-deployment/33-ansible.markdown index a64409f26..bbdff142a 100644 --- a/content/pages/05-deployment/33-ansible.markdown +++ b/content/pages/05-deployment/33-ansible.markdown @@ -38,9 +38,6 @@ be able to structure your playbooks: configures macOS with various applications and developer tools such as [Docker](/docker.html), Homebrew and [Sublime Text](/sublime-text.html). -* [ansible-nginx-haproxy-elasticsearch](https://github.com/gp187/ansible-nginx-haproxy-elasticsearch) - sets up a server with [Nginx](/nginx.html), HAProxy and ElasticSearch. - ### Specific Ansible topics * [An Ansible2 Tutorial](https://serversforhackers.com/c/an-ansible2-tutorial) @@ -63,10 +60,6 @@ be able to structure your playbooks: * [DevOps from Scratch, Part 1: Vagrant & Ansible](https://www.kevinlondon.com/2016/09/19/devops-from-scratch-pt-1.html) -* [Ansible: Post-Install Setup](https://valdhaus.co/writings/ansible-post-install/) - -* [How To Use Vault to Protect Sensitive Ansible Data on Ubuntu 16.04](https://www.digitalocean.com/community/tutorials/how-to-use-vault-to-protect-sensitive-ansible-data-on-ubuntu-16-04) - * [How to use Ansible Variables and Vaults](https://www.expressvpn.com/blog/ansible-variables-vaults/) * [CI for Ansible playbooks which require Ansible Vault protected variables](https://www.jeffgeerling.com/blog/2017/ci-ansible-playbooks-which-require-ansible-vault-protected-variables) From 3fdd4290a6bb57fead8223afaec2b8f695cf96e4 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Mon, 13 Sep 2021 20:42:19 -0400 Subject: [PATCH 34/42] fixing link rot --- .../pages/05-deployment/28-jenkins.markdown | 4 - .../flask/flask-app-badrequest.markdown | 8 +- .../examples/flask/flask-app-flask.markdown | 351 +++++++++++---- .../examples/flask/flask-app-headers.markdown | 75 ++-- .../flask/flask-app-immutabledict.markdown | 4 +- .../flask/flask-blueprints-blueprint.markdown | 2 +- .../flask/flask-cli-dispatchingapp.markdown | 2 +- .../flask/flask-cli-flaskgroup.markdown | 32 +- .../flask/flask-cli-scriptinfo.markdown | 82 ++-- .../flask/flask-cli-with-appcontext.markdown | 149 ++++--- .../flask-ctx-after-this-request.markdown | 57 +-- .../flask/flask-ctx-has-app-context.markdown | 3 +- .../flask-ctx-has-request-context.markdown | 84 +--- .../flask/flask-globals-current-app.markdown | 422 +++++++----------- .../examples/flask/flask-globals-g.markdown | 14 +- .../flask/flask-globals-request.markdown | 96 ++-- .../flask/flask-globals-session.markdown | 245 +++++----- .../flask/flask-helpers-flash.markdown | 8 +- .../flask-helpers-get-root-path.markdown | 23 +- .../flask-helpers-make-response.markdown | 30 +- .../flask/flask-helpers-safe-join.markdown | 2 +- .../flask/flask-helpers-send-file.markdown | 2 +- .../flask/flask-helpers-url-for.markdown | 10 +- .../flask/flask-json-jsonencoder.markdown | 137 ++---- .../flask/flask-json-jsonify.markdown | 28 +- .../flask-sessions-badsignature.markdown | 108 ++--- ...ask-signals-got-request-exception.markdown | 79 ++-- ...templating-render-template-string.markdown | 24 +- .../flask-templating-render-template.markdown | 200 +++------ .../flask/flask-views-methodview.markdown | 9 +- 30 files changed, 1062 insertions(+), 1228 deletions(-) diff --git a/content/pages/05-deployment/28-jenkins.markdown b/content/pages/05-deployment/28-jenkins.markdown index e217e9aa7..63c64d57c 100644 --- a/content/pages/05-deployment/28-jenkins.markdown +++ b/content/pages/05-deployment/28-jenkins.markdown @@ -40,10 +40,6 @@ used to automate building, [testing](/testing.html) and [Jenkins container](https://registry.hub.docker.com/_/jenkins/) on the Docker hub. -* [Securing Jenkins](https://wiki.jenkins.io/display/JENKINS/Securing+Jenkins) - is the landing page for Jenkins security. If you're deploying your own - instance, you'll need to lock it down against unauthorized users. - * [Updating the GOV.UK Continuous Integration environment](https://gdstechnology.blog.gov.uk/2017/02/10/updating-the-gov-uk-continuous-integration-environment/) describes the configuration improvements one infrastructure team made to Jenkins, where they enabled diff --git a/content/pages/examples/flask/flask-app-badrequest.markdown b/content/pages/examples/flask/flask-app-badrequest.markdown index 3063a6da3..a2c3c3abd 100644 --- a/content/pages/examples/flask/flask-app-badrequest.markdown +++ b/content/pages/examples/flask/flask-app-badrequest.markdown @@ -20,7 +20,7 @@ that accepts POSTs. and ImmutableDict are several other callables with code examples from the same `flask.app` package. -You should read up on these subjects along with these `BadRequest` examples: +These subjects go along with the `BadRequest` code examples: * [web development](/web-development.html) and [web design](/web-design.html) * [Flask](/flask.html) and [web framework](/web-frameworks.html) concepts @@ -90,7 +90,6 @@ from ..const import ( ## ... source file abbreviated to get to BadRequest examples ... - API_SELECT_COLUMNS_RIS_KEY, API_SHOW_COLUMNS_RES_KEY, API_SHOW_COLUMNS_RIS_KEY, API_SHOW_TITLE_RES_KEY, @@ -99,6 +98,7 @@ from ..const import ( PERMISSION_PREFIX, ) from ..exceptions import FABException, InvalidOrderByColumnFABException +from ..hooks import get_before_request_hooks, wrap_route_handler_with_hooks from ..security.decorators import permission_name, protect log = logging.getLogger(__name__) @@ -274,11 +274,11 @@ def get_error_description(exception): except AttributeError: return str(exception) if isinstance(exception, Forbidden) and description == Forbidden.description: - return _("You are not allowed to access this page.") + return _('You are not allowed to access this page.') elif isinstance(exception, NotFound) and description == NotFound.description: return _("The page you are looking for doesn't exist.") ~~ elif isinstance(exception, BadRequest) and description == BadRequest.description: - return _("The request was invalid or contained invalid arguments.") + return _('The request was invalid or contained invalid arguments.') else: return str(description) diff --git a/content/pages/examples/flask/flask-app-flask.markdown b/content/pages/examples/flask/flask-app-flask.markdown index b8ab9467b..0702a72ad 100644 --- a/content/pages/examples/flask/flask-app-flask.markdown +++ b/content/pages/examples/flask/flask-app-flask.markdown @@ -19,7 +19,7 @@ application's functionality, including URL rounting, and ImmutableDict are several other callables with code examples from the same `flask.app` package. -These topics are also useful while reading the `Flask` examples: +You should read up on these subjects along with these `Flask` examples: * [web development](/web-development.html) and [web design](/web-design.html) * [Flask](/flask.html) and [web framework](/web-frameworks.html) concepts @@ -167,23 +167,23 @@ def test_that_request_path_hijacking_works_properly(): def test_theme_fallback_config(): - app = create_ctfd() + + class ThemeFallbackConfig(TestingConfig): + THEME_FALLBACK = False + + app = create_ctfd(config=ThemeFallbackConfig) try: - os.mkdir(os.path.join(app.root_path, "themes", "foo")) + os.mkdir(os.path.join(app.root_path, "themes", "foo_fallback")) except OSError: pass with app.app_context(): - set_config("ctf_theme", "foo") + app.config["THEME_FALLBACK"] = False + set_config("ctf_theme", "foo_fallback") assert app.config["THEME_FALLBACK"] == False with app.test_client() as client: try: r = client.get("/") - except TemplateNotFound: - pass - try: - r = client.get("/themes/foo/static/js/pages/main.dev.js") - except TemplateNotFound: ## ... source file continues with no further Flask examples... @@ -204,66 +204,159 @@ forms, and internationalization support. Flask App Builder is provided under the [BSD 3-Clause "New" or "Revised" license](https://github.com/dpgaspar/Flask-AppBuilder/blob/master/LICENSE). -[**Flask AppBuilder / flask_appbuilder / tests / test_mongoengine.py**](https://github.com/dpgaspar/Flask-AppBuilder/blob/master/flask_appbuilder/tests/test_mongoengine.py) +[**Flask AppBuilder / flask_appbuilder / tests / test_fab_cli.py**](https://github.com/dpgaspar/Flask-AppBuilder/blob/master/flask_appbuilder/tests/test_fab_cli.py) ```python -# test_mongoengine.py -from flask_appbuilder.views import CompactCRUDMixin, MasterDetailView -from flask_mongoengine import MongoEngine -import jinja2 -from nose.tools import eq_, ok_ +# test_fab_cli.py +import glob +import json +import logging +import os +import tempfile + +from click.testing import CliRunner +~~from flask import Flask +from flask_appbuilder import AppBuilder, SQLA +from flask_appbuilder.cli import ( + create_app, + create_permissions, + create_user, + export_roles, + import_roles, + list_users, + list_views, + reset_password, +) from .base import FABTestCase -from .mongoengine.models import Model1, Model2 logging.basicConfig(format="%(asctime)s:%(levelname)s:%(name)s:%(message)s") logging.getLogger().setLevel(logging.DEBUG) +log = logging.getLogger(__name__) +APP_DIR = "myapp" -DEFAULT_INDEX_STRING = "Welcome" -INVALID_LOGIN_STRING = "Invalid login" -ACCESS_IS_DENIED = "Access is Denied" -UNIQUE_VALIDATION_STRING = "Already exists" -NOTNULL_VALIDATION_STRING = "This field is required" -DEFAULT_ADMIN_USER = "admin" -DEFAULT_ADMIN_PASSWORD = "general" -log = logging.getLogger(__name__) +class FlaskTestCase(FABTestCase): + def setUp(self): + pass -class FlaskTestCase(FABTestCase): +## ... source file abbreviated to get to Flask examples ... + + + self.assertIn("User bob created.", result.output) + + result = runner.invoke(list_users, []) + self.assertIn("bob", result.output) + + runner.invoke(create_permissions, []) + + runner.invoke(reset_password, ["--username=bob", "--password=bar"]) + + def test_list_views(self): + os.environ["FLASK_APP"] = "app:app" + runner = CliRunner() + with runner.isolated_filesystem(): + result = runner.invoke(list_views, []) + self.assertIn("List of registered views", result.output) + self.assertIn(" Route:/api/v1/security", result.output) + + +class SQLAlchemyImportExportTestCase(FABTestCase): def setUp(self): -~~ from flask import Flask - from flask_appbuilder import AppBuilder - from flask_appbuilder.models.mongoengine.interface import MongoEngineInterface - from flask_appbuilder import ModelView - from flask_appbuilder.security.mongoengine.manager import SecurityManager - -~~ self.app = Flask(__name__) - self.app.jinja_env.undefined = jinja2.StrictUndefined - self.basedir = os.path.abspath(os.path.dirname(__file__)) - self.app.config["MONGODB_SETTINGS"] = {"DB": "test"} - self.app.config["CSRF_ENABLED"] = False - self.app.config["SECRET_KEY"] = "thisismyscretkey" - self.app.config["WTF_CSRF_ENABLED"] = False - - self.db = MongoEngine(self.app) - self.appbuilder = AppBuilder(self.app, security_manager_class=SecurityManager) - - class Model2View(ModelView): - datamodel = MongoEngineInterface(Model2) - list_columns = [ - "field_integer", - "field_float", - "field_string", - "field_method", - "group.field_string", - ] - edit_form_query_rel_fields = { - "group": [["field_string", FilterEqual, "G2"]] - } - add_form_query_rel_fields = {"group": [["field_string", FilterEqual, "G1"]]} - add_exclude_columns = ["excluded_string"] + with open("flask_appbuilder/tests/data/roles.json", "r") as fd: + self.expected_roles = json.loads(fd.read()) + + def test_export_roles(self): + with tempfile.TemporaryDirectory() as tmp_dir: +~~ app = Flask("src_app") + app.config.from_object("flask_appbuilder.tests.config_security") + app.config[ + "SQLALCHEMY_DATABASE_URI" + ] = f"sqlite:///{os.path.join(tmp_dir, 'src.db')}" + db = SQLA(app) + app_builder = AppBuilder(app, db.session) # noqa: F841 + cli_runner = app.test_cli_runner() + + path = os.path.join(tmp_dir, "roles.json") + + export_result = cli_runner.invoke(export_roles, [f"--path={path}"]) + + self.assertEqual(export_result.exit_code, 0) + self.assertTrue(os.path.exists(path)) + + with open(path, "r") as fd: + resulting_roles = json.loads(fd.read()) + + for expected_role in self.expected_roles: + match = [ + r for r in resulting_roles if r["name"] == expected_role["name"] + ] + self.assertTrue(match) + resulting_role = match[0] + resulting_role_permission_view_menus = { + (pvm["permission"]["name"], pvm["view_menu"]["name"]) + for pvm in resulting_role["permissions"] + } + expected_role_permission_view_menus = { + (pvm["permission"]["name"], pvm["view_menu"]["name"]) + for pvm in expected_role["permissions"] + } + self.assertEqual( + resulting_role_permission_view_menus, + expected_role_permission_view_menus, + ) + + def test_export_roles_filename(self): + with tempfile.TemporaryDirectory() as tmp_dir: +~~ app = Flask("src_app") + app.config.from_object("flask_appbuilder.tests.config_security") + + app.config[ + "SQLALCHEMY_DATABASE_URI" + ] = f"sqlite:///{os.path.join(tmp_dir, 'src.db')}" + db = SQLA(app) + app_builder = AppBuilder(app, db.session) # noqa: F841 + + owd = os.getcwd() + os.chdir(tmp_dir) + cli_runner = app.test_cli_runner() + export_result = cli_runner.invoke(export_roles) + os.chdir(owd) + + self.assertEqual(export_result.exit_code, 0) + self.assertGreater( + len(glob.glob(os.path.join(tmp_dir, "roles_export_*"))), 0 + ) + + def test_import_roles(self): + with tempfile.TemporaryDirectory() as tmp_dir: +~~ app = Flask("dst_app") + app.config[ + "SQLALCHEMY_DATABASE_URI" + ] = f"sqlite:///{os.path.join(tmp_dir, 'dst.db')}" + db = SQLA(app) + app_builder = AppBuilder(app, db.session) + cli_runner = app.test_cli_runner() + + path = os.path.join(tmp_dir, "roles.json") + + with open(path, "w") as fd: + fd.write(json.dumps(self.expected_roles)) + + self.assertEqual(len(app_builder.sm.get_all_roles()), 2) + + import_result = cli_runner.invoke(import_roles, [f"--path={path}"]) + self.assertEqual(import_result.exit_code, 0) + + resulting_roles = app_builder.sm.get_all_roles() + + for expected_role in self.expected_roles: + match = [r for r in resulting_roles if r.name == expected_role["name"]] + self.assertTrue(match) + resulting_role = match[0] + ## ... source file continues with no further Flask examples... @@ -308,7 +401,7 @@ from flaskbb.plugins.models import PluginRegistry from flaskbb.plugins.utils import remove_zombie_plugins_from_db, template_hook from flaskbb.user.models import Guest, User from flaskbb.utils.helpers import (app_config_from_env, crop_title, - format_date, format_datetime, + format_date, format_time, format_datetime, forum_is_unread, get_alembic_locations, get_flaskbb_config, is_online, mark_online, render_template, time_since, time_utcnow, @@ -773,7 +866,83 @@ from app.models import User ``` -## Example 12 from Flask-SocketIO +## Example 12 from Flask-Security-Too +[Flask-Security-Too](https://github.com/Flask-Middleware/flask-security/) +([PyPi page](https://pypi.org/project/Flask-Security-Too/) and +[project documentation](https://flask-security-too.readthedocs.io/en/stable/)) +is a maintained fork of the original +[Flask-Security](https://github.com/mattupstate/flask-security) project that +makes it easier to add common security features to [Flask](/flask.html) +web applications. A few of the critical goals of the Flask-Security-Too +project are ensuring JavaScript client-based single-page applications (SPAs) +can work securely with Flask-based backends and that guidance by the +[OWASP](https://owasp.org/) organization is followed by default. + +The Flask-Security-Too project is provided as open source under the +[MIT license](https://github.com/Flask-Middleware/flask-security/blob/master/LICENSE). + +[**Flask-Security-Too / flask_security / utils.py**](https://github.com/Flask-Middleware/flask-security/blob/master/flask_security/./utils.py) + +```python +# utils.py + flash, + g, + request, + render_template, + session, + url_for, +) +from flask.json import JSONEncoder +from flask_login import login_user as _login_user +from flask_login import logout_user as _logout_user +from flask_login import current_user +from flask_login import COOKIE_NAME as REMEMBER_COOKIE_NAME +from flask_principal import AnonymousIdentity, Identity, identity_changed, Need +from flask_wtf import csrf +from wtforms import ValidationError +from itsdangerous import BadSignature, SignatureExpired +from werkzeug import __version__ as werkzeug_version +from werkzeug.local import LocalProxy +from werkzeug.datastructures import MultiDict + +from .quart_compat import best, get_quart_status +from .proxies import _security, _datastore, _pwd_context, _hashing_context +from .signals import user_authenticated + +if t.TYPE_CHECKING: # pragma: no cover +~~ from flask import Flask, Response + from .datastore import User + +SB = t.Union[str, bytes] + + +localize_callback = LocalProxy(lambda: _security.i18n_domain.gettext) + +FsPermNeed = partial(Need, "fsperm") +FsPermNeed.__doc__ = """A need with the method preset to `"fsperm"`.""" + + +def _(translate): + return translate + + +def get_request_attr(name: str) -> t.Any: + return getattr(_request_ctx_stack.top, name, None) + + +def set_request_attr(name, value): + return setattr(_request_ctx_stack.top, name, value) + + +if get_quart_status(): # pragma: no cover + + +## ... source file continues with no further Flask examples... + +``` + + +## Example 13 from Flask-SocketIO [Flask-SocketIO](https://github.com/miguelgrinberg/Flask-SocketIO) ([PyPI package information](https://pypi.org/project/Flask-SocketIO/), [official tutorial](https://blog.miguelgrinberg.com/post/easy-websockets-with-flask-and-gevent) @@ -889,7 +1058,7 @@ def connect(): ``` -## Example 13 from Flask-User +## Example 14 from Flask-User [Flask-User](https://github.com/lingthio/Flask-User) ([PyPI information](https://pypi.org/project/Flask-User/) and @@ -972,7 +1141,7 @@ class UserManager(UserManager__Settings, UserManager__Utils, UserManager__Views) ``` -## Example 14 from Flask-VueJs-Template +## Example 15 from Flask-VueJs-Template [Flask-VueJs-Template](https://github.com/gtalarico/flask-vuejs-template) ([demo site](https://flask-vuejs-template.herokuapp.com/)) is a minimal [Flask](/flask.html) boilerplate starter project that @@ -1013,7 +1182,7 @@ def index_client(): ``` -## Example 15 from Flasky +## Example 16 from Flasky [Flasky](https://github.com/miguelgrinberg/flasky) is a wonderful example application by [Miguel Grinberg](https://github.com/miguelgrinberg) that he builds @@ -1077,7 +1246,7 @@ def create_app(config_name): ``` -## Example 16 from Datadog Flask Example App +## Example 17 from Datadog Flask Example App The [Datadog Flask example app](https://github.com/DataDog/trace-examples/tree/master/python/flask) contains many examples of the [Flask](/flask.html) core functions available to a developer using the [web framework](/web-frameworks.html). @@ -1138,7 +1307,7 @@ def before_request(): ``` -## Example 17 from keras-flask-deploy-webapp +## Example 18 from keras-flask-deploy-webapp The [keras-flask-deploy-webapp](https://github.com/mtobeiyf/keras-flask-deploy-webapp) project combines the [Flask](/flask.html) [web framework](/web-frameworks.html) @@ -1202,7 +1371,7 @@ def model_predict(img, model): ``` -## Example 18 from sandman2 +## Example 19 from sandman2 [sandman2](https://github.com/jeffknupp/sandman2) ([project documentation](https://sandman2.readthedocs.io/en/latest/) and @@ -1283,7 +1452,7 @@ def get_app( ``` -## Example 19 from Science Flask +## Example 20 from Science Flask [Science Flask](https://github.com/danielhomola/science_flask) is a [Flask](/flask.html)-powered web application for online scientific research tools. The project was built as a template @@ -1352,14 +1521,14 @@ def create_celery_app(): ``` -## Example 20 from ShortMe +## Example 21 from ShortMe [ShortMe](https://github.com/AcrobaticPanicc/ShortMe-URL-Shortener) is a [Flask](/flask.html) app that creates a shortened URL that redirects to another, typically much longer, URL. The project is provided as open source under the [MIT license](https://github.com/AcrobaticPanicc/ShortMe-URL-Shortener/blob/main/LICENSE). -[**ShortMe / app / setup.py**](https://github.com/AcrobaticPanicc/ShortMe-URL-Shortener/blob/main/app/./setup.py) +[**ShortMe / app / setup / setup.py**](https://github.com/AcrobaticPanicc/ShortMe-URL-Shortener/blob/main/app/setup/setup.py) ```python # setup.py @@ -1369,23 +1538,23 @@ import os from flask_restful import Api from dotenv import load_dotenv -from app.db.extensions import db -from app.db.models import AuthToken -from app.views.index.index import index_blueprint -from app.views.internal.redirect_to_url import redirect_to_url_blueprint -from app.views.internal.favicon import app_blueprint -from app.views.internal.send_verification_code import send_otp_blueprint -from app.views.internal.shorten_url import shorten_url_blueprint -from app.views.your_short_url.your_short_url import your_short_url_blueprint -from app.views.total_clicks.total_clicks import total_clicks_blueprint -from app.views.error.error import error_blueprint -from app.views.page_not_found.page_not_found import page_not_found_blueprint -from app.views.api_doc.api_doc import api_doc_blueprint -from app.views.get_token.get_token import get_token_blueprint -from app.views.your_api_token.your_api_token import your_api_token_blueprint -from app.views.verify_code.verify_code import verify_code_blueprint - -from app.api.api import Shorten, TotalClicks, GetToken +from app.server.db.extensions import db +from app.server.db.models import AuthToken +from app.server.routes.index import index_blueprint +from app.server.routes.internal.redirect_to_url import redirect_to_url_blueprint +from app.server.routes.internal.favicon import app_blueprint +from app.server.routes.internal.send_verification_code import send_otp_blueprint +from app.server.routes.internal.shorten_url import shorten_url_blueprint +from app.server.routes.your_short_url import your_short_url_blueprint +from app.server.routes.total_clicks import total_clicks_blueprint +from app.server.routes.error import error_blueprint +from app.server.routes.page_not_found import page_not_found_blueprint +from app.server.routes.api_doc import api_doc_blueprint +from app.server.routes.get_token import get_token_blueprint +from app.server.routes.your_api_token import your_api_token_blueprint +from app.server.routes.verify_code import verify_code_blueprint + +from app.server.api.api import Shorten, TotalClicks, GetToken def create_app(config_file): @@ -1393,7 +1562,7 @@ def create_app(config_file): project_folder = os.path.expanduser(app_path) load_dotenv(os.path.join(project_folder, '.env')) -~~ app = Flask(__name__) +~~ app = Flask(__name__, template_folder='../client/templates', static_folder='../client/static') api = Api(app) app.config.from_pyfile(config_file) @@ -1425,7 +1594,7 @@ def create_app(config_file): ``` -## Example 21 from tedivms-flask +## Example 22 from tedivms-flask [tedivm's flask starter app](https://github.com/tedivm/tedivms-flask) is a base of [Flask](/flask.html) code and related projects such as [Celery](/celery.html) which provides a template to start your own @@ -1555,7 +1724,7 @@ def create_app(extra_config_settings={}): ``` -## Example 22 from trape +## Example 23 from trape [trape](https://github.com/jofpin/trape) is a research tool for tracking people's activities that are logged digitally. The tool uses [Flask](/flask.html) to create a web front end to view aggregated data @@ -1577,6 +1746,8 @@ from core.db import Database import os import sys import platform +import urllib +import requests from multiprocessing import Process trape = core.stats.trape @@ -1587,13 +1758,11 @@ db = Database() class victim_server(object): @app.route("/" + trape.victim_path) def homeVictim(): - opener = urllib2.build_opener() - headers = victim_headers(request.user_agent) - opener.addheaders = headers + r = requests.get(trape.url_to_clone, headers=victim_headers2(request.user_agent)) if (trape.type_lure == 'local'): html = assignScripts(victim_inject_code(render_template("/" + trape.url_to_clone), 'payload', '/', trape.gmaps, trape.ipinfo)) else: - html = assignScripts(victim_inject_code(opener.open(trape.url_to_clone).read(), 'payload', trape.url_to_clone, trape.gmaps, trape.ipinfo)) + html = assignScripts(victim_inject_code(r.content, 'payload', trape.url_to_clone, trape.gmaps, trape.ipinfo)) ## ... source file continues with no further Flask examples... diff --git a/content/pages/examples/flask/flask-app-headers.markdown b/content/pages/examples/flask/flask-app-headers.markdown index f16fe863b..e279fec3c 100644 --- a/content/pages/examples/flask/flask-app-headers.markdown +++ b/content/pages/examples/flask/flask-app-headers.markdown @@ -22,7 +22,7 @@ Flask web applications. and ImmutableDict are several other callables with code examples from the same `flask.app` package. -These subjects go along with the `Headers` code examples: +These topics are also useful while reading the `Headers` examples: * [web development](/web-development.html) and [web design](/web-design.html) * [Flask](/flask.html) and [web framework](/web-frameworks.html) concepts @@ -47,10 +47,12 @@ import random import string import uuid from collections import namedtuple +from contextlib import contextmanager from unittest.mock import Mock, patch import requests from flask.testing import FlaskClient +from freezegun import freeze_time from sqlalchemy.engine.url import make_url from sqlalchemy_utils import drop_database ~~from werkzeug.datastructures import Headers @@ -63,6 +65,7 @@ from CTFd.models import ( ChallengeComments, ChallengeFiles, Challenges, + ChallengeTopics, Comments, Fails, Fields, @@ -78,11 +81,14 @@ from CTFd.models import ( TeamComments, Teams, Tokens, + Topics, Tracking, Unlocks, UserComments, Users, ) +from CTFd.utils import set_config +from tests.constants.time import FreezeTimes text_type = str binary_type = bytes @@ -104,25 +110,25 @@ class CTFdTestClient(FlaskClient): return super(CTFdTestClient, self).open(*args, **kwargs) -def create_ctfd( - ctf_name="CTFd", - ctf_description="CTF description", - name="admin", - email="admin@examplectf.com", - password="password", - user_mode="users", - setup=True, - enable_plugins=False, - application_root="/", - config=TestingConfig, -): - if enable_plugins: - config.SAFE_MODE = False - else: - config.SAFE_MODE = True +class ctftime: + @contextmanager + def init(): + try: + set_config("start", FreezeTimes.START) + set_config("end", FreezeTimes.END) + yield + finally: + set_config("start", None) + set_config("end", None) - config.APPLICATION_ROOT = application_root - url = make_url(config.SQLALCHEMY_DATABASE_URI) + @contextmanager + def not_started(): + try: + freezer = freeze_time(FreezeTimes.NOT_STARTED) + frozen_time = freezer.start() + yield frozen_time + finally: + freezer.stop() ## ... source file continues with no further Headers examples... @@ -145,8 +151,6 @@ Flask RESTX is provided as open source under the ```python # api.py -from __future__ import unicode_literals - import difflib import inspect from itertools import chain @@ -163,7 +167,10 @@ from types import MethodType from flask import url_for, request, current_app from flask import make_response as original_flask_make_response -from flask.helpers import _endpoint_from_view_func +try: + from flask.helpers import _endpoint_from_view_func +except ImportError: + from flask.scaffold import _endpoint_from_view_func from flask.signals import got_request_exception from jsonschema import RefResolver @@ -177,7 +184,13 @@ from werkzeug.exceptions import ( NotAcceptable, InternalServerError, ) -from werkzeug.wrappers import BaseResponse + +from werkzeug import __version__ as werkzeug_version + +if werkzeug_version.split('.')[0] >= '2': + from werkzeug.wrappers import Response as BaseResponse +else: + from werkzeug.wrappers import BaseResponse from . import apidoc from .mask import ParseError, MaskError @@ -189,28 +202,22 @@ from .utils import default_id, camel_to_dash, unpack from .representations import output_json from ._http import HTTPStatus -RE_RULES = re.compile("(<.*>)") - -HEADERS_BLACKLIST = ("Content-Length",) - -DEFAULT_REPRESENTATIONS = [("application/json", output_json)] - ## ... source file abbreviated to get to Headers examples ... + if self._has_fr_route(): + try: return self.handle_error(e) except Exception as f: return original_handler(f) return original_handler(e) def handle_error(self, e): - got_request_exception.send(current_app._get_current_object(), exception=e) - if ( not isinstance(e, HTTPException) and current_app.propagate_exceptions - and not isinstance(e, tuple(self.error_handlers.keys())) + and not isinstance(e, tuple(self._own_and_child_error_handlers.keys())) ): exc_type, exc_value, tb = sys.exc_info() @@ -234,6 +241,8 @@ DEFAULT_REPRESENTATIONS = [("application/json", output_json)] ) break else: + got_request_exception.send(current_app._get_current_object(), exception=e) + if isinstance(e, HTTPException): code = HTTPStatus(e.code) if include_message_in_response: @@ -247,8 +256,6 @@ DEFAULT_REPRESENTATIONS = [("application/json", output_json)] else: code = HTTPStatus.INTERNAL_SERVER_ERROR if include_message_in_response: - default_data = { - "message": code.phrase, ## ... source file continues with no further Headers examples... diff --git a/content/pages/examples/flask/flask-app-immutabledict.markdown b/content/pages/examples/flask/flask-app-immutabledict.markdown index 899031de3..d2a334fa8 100644 --- a/content/pages/examples/flask/flask-app-immutabledict.markdown +++ b/content/pages/examples/flask/flask-app-immutabledict.markdown @@ -20,7 +20,7 @@ so that values cannot be modified after initially being set. and Headers are several other callables with code examples from the same `flask.app` package. -You should read up on these subjects along with these `ImmutableDict` examples: +These topics are also useful while reading the `ImmutableDict` examples: * [web development](/web-development.html) and [web design](/web-design.html) * [Flask](/flask.html) and [web framework](/web-frameworks.html) concepts @@ -89,7 +89,7 @@ DEFAULTS = { def load_config(only_defaults=False, override=None): - data = dict(DEFAULTS, **INTERNAL_DEFAULTS) + data = DEFAULTS | INTERNAL_DEFAULTS if not only_defaults: path = get_config_path() config = _sanitize_data(_parse_config(path)) diff --git a/content/pages/examples/flask/flask-blueprints-blueprint.markdown b/content/pages/examples/flask/flask-blueprints-blueprint.markdown index 07e39cf51..16a0bb9c3 100644 --- a/content/pages/examples/flask/flask-blueprints-blueprint.markdown +++ b/content/pages/examples/flask/flask-blueprints-blueprint.markdown @@ -32,7 +32,7 @@ scenarios. CTFd is open sourced under the import base64 import requests -~~from flask import Blueprint +~~from flask import Blueprint, abort from flask import current_app as app from flask import redirect, render_template, request, session, url_for from itsdangerous.exc import BadSignature, BadTimeSignature, SignatureExpired diff --git a/content/pages/examples/flask/flask-cli-dispatchingapp.markdown b/content/pages/examples/flask/flask-cli-dispatchingapp.markdown index facbdfdef..aa8140dd9 100644 --- a/content/pages/examples/flask/flask-cli-dispatchingapp.markdown +++ b/content/pages/examples/flask/flask-cli-dispatchingapp.markdown @@ -90,7 +90,7 @@ def _make_wsgi_app(info, url, evalex_whitelist, proxy): return info.load_app() url_data = url_parse(url) -~~ app = DispatchingApp(_load_app) +~~ app = DispatchingApp(_load_app, use_eager_loading=False) app = DebuggedIndico(app, evalex_whitelist) app = _make_indico_dispatcher(app, url_data.path) if proxy: diff --git a/content/pages/examples/flask/flask-cli-flaskgroup.markdown b/content/pages/examples/flask/flask-cli-flaskgroup.markdown index 5e87669b6..1b39ccb93 100644 --- a/content/pages/examples/flask/flask-cli-flaskgroup.markdown +++ b/content/pages/examples/flask/flask-cli-flaskgroup.markdown @@ -43,7 +43,6 @@ import traceback from datetime import datetime import click -import click_log from flask import current_app ~~from flask.cli import FlaskGroup, ScriptInfo, with_appcontext from flask_alembic import alembic_click @@ -52,20 +51,29 @@ from sqlalchemy_utils.functions import database_exists from werkzeug.utils import import_string from flaskbb import create_app -from flaskbb.cli.utils import (EmailType, FlaskBBCLIError, get_version, - prompt_config_path, prompt_save_user, - write_config) +from flaskbb.cli.utils import ( + EmailType, + FlaskBBCLIError, + get_version, + prompt_config_path, + prompt_save_user, + write_config, +) from flaskbb.extensions import alembic, celery, db, whooshee -from flaskbb.utils.populate import (create_default_groups, - create_default_settings, create_latest_db, - create_test_data, create_welcome_forum, - insert_bulk_data, run_plugin_migrations, - update_settings_from_fixture) +from flaskbb.utils.populate import ( + create_default_groups, + create_default_settings, + create_latest_db, + create_test_data, + create_welcome_forum, + insert_bulk_data, + run_plugin_migrations, + update_settings_from_fixture, +) from flaskbb.utils.translations import compile_translations logger = logging.getLogger(__name__) -click_log.basic_config(logger) ~~class FlaskBBGroup(FlaskGroup): @@ -83,8 +91,7 @@ click_log.basic_config(logger) self._loaded_flaskbb_plugins = True except Exception: logger.error( - "Error while loading CLI Plugins", - exc_info=traceback.format_exc() + "Error while loading CLI Plugins", exc_info=traceback.format_exc() ) else: shell_context_processors = app.pluggy.hook.flaskbb_shell_context() @@ -93,6 +100,7 @@ click_log.basic_config(logger) def get_command(self, ctx, name): self._load_flaskbb_plugins(ctx) + return super(FlaskBBGroup, self).get_command(ctx, name) ## ... source file continues with no further FlaskGroup examples... diff --git a/content/pages/examples/flask/flask-cli-scriptinfo.markdown b/content/pages/examples/flask/flask-cli-scriptinfo.markdown index 3a17c827b..469bcd7b5 100644 --- a/content/pages/examples/flask/flask-cli-scriptinfo.markdown +++ b/content/pages/examples/flask/flask-cli-scriptinfo.markdown @@ -43,7 +43,6 @@ import traceback from datetime import datetime import click -import click_log from flask import current_app ~~from flask.cli import FlaskGroup, ScriptInfo, with_appcontext from flask_alembic import alembic_click @@ -52,20 +51,29 @@ from sqlalchemy_utils.functions import database_exists from werkzeug.utils import import_string from flaskbb import create_app -from flaskbb.cli.utils import (EmailType, FlaskBBCLIError, get_version, - prompt_config_path, prompt_save_user, - write_config) +from flaskbb.cli.utils import ( + EmailType, + FlaskBBCLIError, + get_version, + prompt_config_path, + prompt_save_user, + write_config, +) from flaskbb.extensions import alembic, celery, db, whooshee -from flaskbb.utils.populate import (create_default_groups, - create_default_settings, create_latest_db, - create_test_data, create_welcome_forum, - insert_bulk_data, run_plugin_migrations, - update_settings_from_fixture) +from flaskbb.utils.populate import ( + create_default_groups, + create_default_settings, + create_latest_db, + create_test_data, + create_welcome_forum, + insert_bulk_data, + run_plugin_migrations, + update_settings_from_fixture, +) from flaskbb.utils.translations import compile_translations logger = logging.getLogger(__name__) -click_log.basic_config(logger) class FlaskBBGroup(FlaskGroup): @@ -83,8 +91,7 @@ class FlaskBBGroup(FlaskGroup): self._loaded_flaskbb_plugins = True except Exception: logger.error( - "Error while loading CLI Plugins", - exc_info=traceback.format_exc() + "Error while loading CLI Plugins", exc_info=traceback.format_exc() ) else: shell_context_processors = app.pluggy.hook.flaskbb_shell_context() @@ -100,7 +107,12 @@ class FlaskBBGroup(FlaskGroup): return super(FlaskBBGroup, self).list_commands(ctx) -def make_app(script_info): +def make_app(): + ctx = click.get_current_context(silent=True) + script_info = None + if ctx is not None: + script_info = ctx.obj + config_file = getattr(script_info, "config_file", None) instance_path = getattr(script_info, "instance_path", None) return create_app(config_file, instance_path) @@ -114,28 +126,28 @@ def set_instance(ctx, param, value): ~~ ctx.ensure_object(ScriptInfo).instance_path = value -@click.group(cls=FlaskBBGroup, create_app=make_app, add_version_option=False, - invoke_without_command=True) -@click.option("--config", expose_value=False, callback=set_config, - required=False, is_flag=False, is_eager=True, metavar="CONFIG", - help="Specify the config to use either in dotted module " - "notation e.g. 'flaskbb.configs.default.DefaultConfig' " - "or by using a path like '/path/to/flaskbb.cfg'") -@click.option("--instance", expose_value=False, callback=set_instance, - required=False, is_flag=False, is_eager=True, metavar="PATH", - help="Specify the instance path to use. By default the folder " - "'instance' next to the package or module is assumed to " - "be the instance path.") -@click.option("--version", expose_value=False, callback=get_version, - is_flag=True, is_eager=True, help="Show the FlaskBB version.") -@click.pass_context -@click_log.simple_verbosity_option(logger) -def flaskbb(ctx): - if ctx.invoked_subcommand is None: - click.echo(ctx.get_help()) - - -flaskbb.add_command(alembic_click, "db") +@click.group( + cls=FlaskBBGroup, + create_app=make_app, + add_version_option=False, + invoke_without_command=True, +) +@click.option( + "--config", + expose_value=False, + callback=set_config, + required=False, + is_flag=False, + is_eager=True, + metavar="CONFIG", + help="Specify the config to use either in dotted module " + "notation e.g. 'flaskbb.configs.default.DefaultConfig' " + "or by using a path like '/path/to/flaskbb.cfg'", +) +@click.option( + "--instance", + expose_value=False, + callback=set_instance, ## ... source file continues with no further ScriptInfo examples... diff --git a/content/pages/examples/flask/flask-cli-with-appcontext.markdown b/content/pages/examples/flask/flask-cli-with-appcontext.markdown index bb89e469a..e2d1ab675 100644 --- a/content/pages/examples/flask/flask-cli-with-appcontext.markdown +++ b/content/pages/examples/flask/flask-cli-with-appcontext.markdown @@ -43,7 +43,6 @@ import traceback from datetime import datetime import click -import click_log from flask import current_app ~~from flask.cli import FlaskGroup, ScriptInfo, with_appcontext from flask_alembic import alembic_click @@ -52,35 +51,29 @@ from sqlalchemy_utils.functions import database_exists from werkzeug.utils import import_string from flaskbb import create_app -from flaskbb.cli.utils import (EmailType, FlaskBBCLIError, get_version, - prompt_config_path, prompt_save_user, - write_config) +from flaskbb.cli.utils import ( + EmailType, + FlaskBBCLIError, + get_version, + prompt_config_path, + prompt_save_user, + write_config, +) from flaskbb.extensions import alembic, celery, db, whooshee -from flaskbb.utils.populate import (create_default_groups, - create_default_settings, create_latest_db, - create_test_data, create_welcome_forum, - insert_bulk_data, run_plugin_migrations, - update_settings_from_fixture) -from flaskbb.utils.translations import compile_translations - - -logger = logging.getLogger(__name__) -click_log.basic_config(logger) - - -class FlaskBBGroup(FlaskGroup): - def __init__(self, *args, **kwargs): +from flaskbb.utils.populate import ( + create_default_groups, + create_default_settings, + create_latest_db, + create_test_data, + create_welcome_forum, + insert_bulk_data, + run_plugin_migrations, + update_settings_from_fixture, ## ... source file abbreviated to get to with_appcontext examples ... - "'instance' next to the package or module is assumed to " - "be the instance path.") -@click.option("--version", expose_value=False, callback=get_version, - is_flag=True, is_eager=True, help="Show the FlaskBB version.") -@click.pass_context -@click_log.simple_verbosity_option(logger) def flaskbb(ctx): if ctx.invoked_subcommand is None: click.echo(ctx.get_help()) @@ -90,23 +83,40 @@ flaskbb.add_command(alembic_click, "db") @flaskbb.command() -@click.option("--welcome", "-w", default=True, is_flag=True, - help="Disable the welcome forum.") -@click.option("--force", "-f", default=False, is_flag=True, - help="Doesn't ask for confirmation.") +@click.option( + "--welcome", "-w", default=True, is_flag=True, help="Disable the welcome forum." +) +@click.option( + "--force", "-f", default=False, is_flag=True, help="Doesn't ask for confirmation." +) @click.option("--username", "-u", help="The username of the user.") -@click.option("--email", "-e", type=EmailType(), - help="The email address of the user.") +@click.option("--email", "-e", type=EmailType(), help="The email address of the user.") @click.option("--password", "-p", help="The password of the user.") -@click.option("--no-plugins", "-n", default=False, is_flag=True, - help="Don't run the migrations for the default plugins.") +@click.option( + "--no-plugins", + "-n", + default=False, + is_flag=True, + help="Don't run the migrations for the default plugins.", +) ~~@with_appcontext def install(welcome, force, username, email, password, no_plugins): + if not current_app.config["CONFIG_PATH"]: + click.secho( + "[!] No 'flaskbb.cfg' config found. " + "You can generate a configuration file with 'flaskbb makeconfig'.", + fg="red", + ) + sys.exit(1) + click.secho("[+] Installing FlaskBB...", fg="cyan") if database_exists(db.engine.url): - if force or click.confirm(click.style( - "Existing database found. Do you want to delete the old one and " - "create a new one?", fg="magenta") + if force or click.confirm( + click.style( + "Existing database found. Do you want to delete the old one and " + "create a new one?", + fg="magenta", + ) ): db.drop_all() else: @@ -114,46 +124,35 @@ def install(welcome, force, username, email, password, no_plugins): create_latest_db() - click.secho("[+] Creating default settings...", fg="cyan") - create_default_groups() - create_default_settings() - - click.secho("[+] Creating admin user...", fg="cyan") - prompt_save_user(username, email, password, "admin") - - if welcome: - click.secho("[+] Creating welcome forum...", fg="cyan") - create_welcome_forum() - ## ... source file abbreviated to get to with_appcontext examples ... - - if fixture or all_latest: - try: - settings = import_string( - "flaskbb.fixtures.{}".format(fixture) - ) - settings = settings.fixture except ImportError: - raise FlaskBBCLIError("{} fixture is not available" - .format(fixture), fg="red") + raise FlaskBBCLIError( + "{} fixture is not available".format(fixture), fg="red" + ) click.secho("[+] Updating fixtures...", fg="cyan") count = update_settings_from_fixture( fixture=settings, overwrite_group=force, overwrite_setting=force ) - click.secho("[+] {settings} settings in {groups} setting groups " - "updated.".format(groups=len(count), settings=sum( - len(settings) for settings in count.values()) - ), fg="green") + click.secho( + "[+] {settings} settings in {groups} setting groups " + "updated.".format( + groups=len(count), + settings=sum(len(settings) for settings in count.values()), + ), + fg="green", + ) -@flaskbb.command("celery", add_help_option=False, - context_settings={"ignore_unknown_options": True, - "allow_extra_args": True}) +@flaskbb.command( + "celery", + add_help_option=False, + context_settings={"ignore_unknown_options": True, "allow_extra_args": True}, +) @click.pass_context ~~@with_appcontext def start_celery(ctx): @@ -164,6 +163,7 @@ def start_celery(ctx): ~~@with_appcontext def shell_command(): import code + banner = "Python %s on %s\nInstance Path: %s" % ( sys.version, sys.platform, @@ -190,19 +190,21 @@ def shell_command(): @flaskbb.command("urls", short_help="Show routes for the app.") -@click.option("--route", "-r", "order_by", flag_value="rule", default=True, - help="Order by route") -@click.option("--endpoint", "-e", "order_by", flag_value="endpoint", - help="Order by endpoint") -@click.option("--methods", "-m", "order_by", flag_value="methods", - help="Order by methods") +@click.option( + "--route", "-r", "order_by", flag_value="rule", default=True, help="Order by route" +) +@click.option( + "--endpoint", "-e", "order_by", flag_value="endpoint", help="Order by endpoint" +) +@click.option( + "--methods", "-m", "order_by", flag_value="methods", help="Order by methods" +) ~~@with_appcontext def list_urls(order_by): from flask import current_app rules = sorted( - current_app.url_map.iter_rules(), - key=lambda rule: getattr(rule, order_by) + current_app.url_map.iter_rules(), key=lambda rule: getattr(rule, order_by) ) max_rule_len = max(len(rule.rule) for rule in rules) @@ -216,11 +218,12 @@ def list_urls(order_by): column_header_len = max_rule_len + max_endpoint_len + max_method_len + 4 column_template = "{:<%s} {:<%s} {:<%s}" % ( - max_rule_len, max_endpoint_len, max_method_len + max_rule_len, + max_endpoint_len, + max_method_len, ) - click.secho(column_template.format("Route", "Endpoint", "Methods"), - fg="blue", bold=True) + click.secho( ## ... source file continues with no further with_appcontext examples... diff --git a/content/pages/examples/flask/flask-ctx-after-this-request.markdown b/content/pages/examples/flask/flask-ctx-after-this-request.markdown index ad395c4b1..f18d7b9b7 100644 --- a/content/pages/examples/flask/flask-ctx-after-this-request.markdown +++ b/content/pages/examples/flask/flask-ctx-after-this-request.markdown @@ -40,17 +40,18 @@ The Flask-Security-Too project is provided as open source under the # unified_signin.py import time +import typing as t from flask import current_app as app ~~from flask import after_this_request, request, session from flask_login import current_user from werkzeug.datastructures import MultiDict -from werkzeug.local import LocalProxy from wtforms import BooleanField, RadioField, StringField, SubmitField, validators from .confirmable import requires_confirmation from .decorators import anonymous_user_required, auth_required, unauth_csrf from .forms import Form, Required, get_form_field_label +from .proxies import _security, _datastore from .quart_compat import get_quart_status from .signals import us_profile_changed, us_security_token_sent from .twofactor import ( @@ -63,7 +64,7 @@ from .utils import ( SmsSenderFactory, base_render_json, check_and_get_token_status, - config_value, + config_value as cv, do_flash, find_user, get_identity_attributes, @@ -84,7 +85,7 @@ from .utils import ( token=self.passcode.data, totp_secret=self.totp_secret, user=self.user, - window=config_value("US_TOKEN_VALIDITY"), + window=cv("US_TOKEN_VALIDITY"), ): self.passcode.errors.append(get_message("INVALID_PASSWORD_CODE")[0]) return False @@ -127,24 +128,24 @@ def us_signin_send_code(): ## ... source file abbreviated to get to after_this_request examples ... + form.submit.data = True + if form.validate_on_submit(): remember_me = form.remember.data if "remember" in form else None - if config_value("TWO_FACTOR") and form.authn_via in config_value( - "US_MFA_REQUIRED" - ): + if cv("TWO_FACTOR") and form.authn_via in cv("US_MFA_REQUIRED"): if request.is_json and request.content_length: - tf_validity_token = request.get_json().get("tf_validity_token", None) + tf_validity_token = request.get_json().get( # type: ignore + "tf_validity_token", None + ) else: tf_validity_token = request.cookies.get("tf_validity", default=None) tf_validity_token_is_valid = tf_verify_validility_token( tf_validity_token, form.user.fs_uniquifier ) - if config_value("TWO_FACTOR_REQUIRED") or is_tf_setup(form.user): - if config_value("TWO_FACTOR_ALWAYS_VALIDATE") or ( - not tf_validity_token_is_valid - ): + if cv("TWO_FACTOR_REQUIRED") or is_tf_setup(form.user): + if cv("TWO_FACTOR_ALWAYS_VALIDATE") or (not tf_validity_token_is_valid): return tf_login( form.user, @@ -163,7 +164,7 @@ def us_signin_send_code(): code_methods = _compute_code_methods() if _security._want_json(request): payload = { - "available_methods": config_value("US_ENABLED_METHODS"), + "available_methods": cv("US_ENABLED_METHODS"), "code_methods": code_methods, "identity_attributes": get_identity_attributes(), } @@ -174,9 +175,9 @@ def us_signin_send_code(): form.passcode.data = None - if form.requires_confirmation and _security.requires_confirmation_error_view: + if form.requires_confirmation and cv("REQUIRES_CONFIRMATION_ERROR_VIEW"): do_flash(*get_message("CONFIRMATION_REQUIRED")) - return redirect(get_url(_security.requires_confirmation_error_view)) + return redirect(get_url(cv("REQUIRES_CONFIRMATION_ERROR_VIEW"))) ## ... source file abbreviated to get to after_this_request examples ... @@ -185,7 +186,7 @@ def us_signin_send_code(): if _security.redirect_behavior == "spa": return redirect( get_url( - _security.login_error_view, + cv("LOGIN_ERROR_VIEW"), qparams=user.get_redirect_qparams({c: m}), ) ) @@ -193,14 +194,14 @@ def us_signin_send_code(): return redirect(url_for_security("us_signin")) if ( - config_value("TWO_FACTOR") - and "email" in config_value("US_MFA_REQUIRED") - and (config_value("TWO_FACTOR_REQUIRED") or is_tf_setup(user)) + cv("TWO_FACTOR") + and "email" in cv("US_MFA_REQUIRED") + and (cv("TWO_FACTOR_REQUIRED") or is_tf_setup(user)) ): if _security.redirect_behavior == "spa": return redirect( get_url( - _security.login_error_view, + cv("LOGIN_ERROR_VIEW"), qparams=user.get_redirect_qparams({"tf_required": 1}), ) ) @@ -210,7 +211,7 @@ def us_signin_send_code(): ~~ after_this_request(view_commit) if _security.redirect_behavior == "spa": return redirect( - get_url(_security.post_login_view, qparams=user.get_redirect_qparams()) + get_url(cv("POST_LOGIN_VIEW"), qparams=user.get_redirect_qparams()) ) do_flash(*get_message("PASSWORDLESS_LOGIN_SUCCESSFUL")) @@ -218,11 +219,11 @@ def us_signin_send_code(): @auth_required( - lambda: config_value("API_ENABLED_METHODS"), - within=lambda: config_value("FRESHNESS"), - grace=lambda: config_value("FRESHNESS_GRACE_PERIOD"), + lambda: cv("API_ENABLED_METHODS"), + within=lambda: cv("FRESHNESS"), + grace=lambda: cv("FRESHNESS_GRACE_PERIOD"), ) -def us_setup(): +def us_setup() -> "ResponseValue": form_class = _security.us_setup_form if request.is_json: @@ -250,7 +251,7 @@ def us_setup(): if invalid: m, c = get_message("API_ERROR") if expired: - m, c = get_message("US_SETUP_EXPIRED", within=config_value("US_SETUP_WITHIN")) + m, c = get_message("US_SETUP_EXPIRED", within=cv("US_SETUP_WITHIN")) if invalid or expired: if _security._want_json(request): payload = json_error_response(errors=m) @@ -268,7 +269,7 @@ def us_setup(): _datastore.us_set(current_user, method, state["totp_secret"], phone) us_profile_changed.send( - app._get_current_object(), user=current_user, method=method + app._get_current_object(), user=current_user, method=method # type: ignore ) if _security._want_json(request): return base_render_json( @@ -281,12 +282,12 @@ def us_setup(): else: do_flash(*get_message("US_SETUP_SUCCESSFUL")) return redirect( - get_url(_security.us_post_setup_view) - or get_url(_security.post_login_view) + get_url(cv("US_POST_SETUP_VIEW")) or get_url(cv("POST_LOGIN_VIEW")) ) if _security._want_json(request): return base_render_json(form, include_user=False) + m, c = get_message("INVALID_PASSWORD_CODE") ## ... source file continues with no further after_this_request examples... diff --git a/content/pages/examples/flask/flask-ctx-has-app-context.markdown b/content/pages/examples/flask/flask-ctx-has-app-context.markdown index a29697b0f..d4a03d102 100644 --- a/content/pages/examples/flask/flask-ctx-has-app-context.markdown +++ b/content/pages/examples/flask/flask-ctx-has-app-context.markdown @@ -143,6 +143,7 @@ The code is open sourced under the import ast import re +from collections import Counter from contextlib import contextmanager from babel import negotiate_locale @@ -150,7 +151,7 @@ from babel.core import LOCALE_ALIASES, Locale from babel.messages.pofile import read_po from babel.support import NullTranslations ~~from flask import current_app, g, has_app_context, has_request_context, request, session -from flask_babelex import Babel, Domain, get_domain +from flask_babel import Babel, Domain, get_domain from flask_pluginengine import current_plugin from speaklater import is_lazy_string, make_lazy_string from werkzeug.utils import cached_property diff --git a/content/pages/examples/flask/flask-ctx-has-request-context.markdown b/content/pages/examples/flask/flask-ctx-has-request-context.markdown index 235184bfc..9fe1163e0 100644 --- a/content/pages/examples/flask/flask-ctx-has-request-context.markdown +++ b/content/pages/examples/flask/flask-ctx-has-request-context.markdown @@ -322,23 +322,10 @@ import warnings from pprint import pformat import yaml -~~from flask import current_app, has_request_context, request, session +~~from flask import has_request_context, request, session from indico.core.config import config -from indico.util.i18n import set_best_lang -from indico.web.util import get_request_info - - -try: - from raven import setup_logging - from raven.contrib.celery import register_logger_signal, register_signal - from raven.contrib.flask import Sentry - from raven.handlers.logging import SentryHandler -except ImportError: - Sentry = object # so we can subclass - has_sentry = False -else: - has_sentry = True +from indico.web.util import get_request_info, get_request_user class AddRequestIDFilter: @@ -349,7 +336,8 @@ class AddRequestIDFilter: class AddUserIDFilter: def filter(self, record): -~~ record.user_id = str(session.user.id) if has_request_context() and session and session.user else '-' +~~ user = get_request_user()[0] if has_request_context() else None + record.user_id = str(session.user.id) if user else '-' return True @@ -375,70 +363,6 @@ class BlacklistFilter(logging.Filter): return not any(x.filter(record) for x in self.filters) - -## ... source file abbreviated to get to has_request_context examples ... - - - if formatter.pop('append_request_info', False): - assert '()' not in formatter - formatter['()'] = RequestInfoFormatter - if config.DB_LOG: - data['loggers']['indico._db'] = {'level': 'DEBUG', 'propagate': False, 'handlers': ['_db']} - data['handlers']['_db'] = {'class': 'logging.handlers.SocketHandler', 'host': '127.0.0.1', 'port': 9020} - if config.CUSTOMIZATION_DEBUG and config.CUSTOMIZATION_DIR: - data['loggers'].setdefault('indico.customization', {})['level'] = 'DEBUG' - logging.config.dictConfig(data) - if config.SENTRY_DSN: - if not has_sentry: - raise Exception('`raven` must be installed to use sentry logging') - init_sentry(app) - - @classmethod - def get(cls, name=None): - if name is None: - name = 'indico' - elif name != 'indico' and not name.startswith('indico.'): - name = 'indico.' + name - return logging.getLogger(name) - - -class IndicoSentry(Sentry): - def get_user_info(self, request): -~~ if not has_request_context() or not session.user: - return None - return {'id': session.user.id, - 'email': session.user.email, - 'name': session.user.full_name} - - def before_request(self, *args, **kwargs): - super().before_request() -~~ if not has_request_context(): - return - self.client.extra_context({'Endpoint': str(request.url_rule.endpoint) if request.url_rule else None, - 'Request ID': request.id}) - self.client.tags_context({'locale': set_best_lang()}) - - -def init_sentry(app): - sentry = IndicoSentry(wrap_wsgi=False, register_signal=True, logging=False) - sentry.init_app(app) - handler = SentryHandler(sentry.client, level=getattr(logging, config.SENTRY_LOGGING_LEVEL)) - handler.addFilter(BlacklistFilter({'indico.flask', 'celery.redirected'})) - setup_logging(handler) - register_logger_signal(sentry.client) - register_signal(sentry.client) - - -def sentry_log_exception(): - try: - sentry = current_app.extensions['sentry'] - except KeyError: - return - sentry.captureException() - - - - ## ... source file continues with no further has_request_context examples... ``` diff --git a/content/pages/examples/flask/flask-globals-current-app.markdown b/content/pages/examples/flask/flask-globals-current-app.markdown index fefae63cc..450633b87 100644 --- a/content/pages/examples/flask/flask-globals-current-app.markdown +++ b/content/pages/examples/flask/flask-globals-current-app.markdown @@ -103,130 +103,84 @@ forms, and internationalization support. Flask App Builder is provided under the [BSD 3-Clause "New" or "Revised" license](https://github.com/dpgaspar/Flask-AppBuilder/blob/master/LICENSE). -[**Flask AppBuilder / flask_appbuilder / menu.py**](https://github.com/dpgaspar/Flask-AppBuilder/blob/master/flask_appbuilder/./menu.py) +[**Flask AppBuilder / flask_appbuilder / validators.py**](https://github.com/dpgaspar/Flask-AppBuilder/blob/master/flask_appbuilder/./validators.py) ```python -# menu.py -from typing import List - -~~from flask import current_app, url_for -from flask_babel import gettext as __ - -from .api import BaseApi, expose -from .basemanager import BaseManager -from .security.decorators import permission_name, protect - - -class MenuItem(object): - def __init__(self, name, href="", icon="", label="", childs=None, baseview=None): - self.name = name - self.href = href - self.icon = icon - self.label = label - self.childs = childs or [] - self.baseview = baseview - - def get_url(self): - if not self.href: - if not self.baseview: - return "" - else: - return url_for(f"{self.baseview.endpoint}.{self.baseview.default_view}") - else: - try: +# validators.py +import re +from typing import Optional +~~from flask import current_app +from flask_appbuilder.exceptions import PasswordComplexityValidationError +from flask_appbuilder.models.base import BaseInterface +from flask_babel import gettext +from wtforms import Field, Form, ValidationError + +password_complexity_regex = re.compile( + r"""( + ^(?=.*[A-Z].*[A-Z]) # at least two capital letters + (?=.*[^0-9a-zA-Z]) # at least one of these special characters + (?=.*[0-9].*[0-9]) # at least two numeric digits + (?=.*[a-z].*[a-z].*[a-z]) # at least three lower case letters + .{10,} # at least 10 total characters + $ + )""", + re.VERBOSE, +) -## ... source file abbreviated to get to current_app examples ... +class Unique: - self.menu = [] - if reverse: - extra_classes = extra_classes + "navbar-inverse" - self.extra_classes = extra_classes + field_flags = ("unique",) - @property - def reverse(self): - return "navbar-inverse" in self.extra_classes - - def get_list(self): - return self.menu - - def get_flat_name_list(self, menu: "Menu" = None, result: List = None) -> List: - menu = menu or self.menu - result = result or [] - for item in menu: - result.append(item.name) - if item.childs: - result.extend(self.get_flat_name_list(menu=item.childs, result=result)) - return result + def __init__( + self, datamodel: BaseInterface, col_name: str, message: Optional[str] = None + ) -> None: + self.datamodel = datamodel + self.col_name = col_name + self.message = message - def get_data(self, menu=None): - menu = menu or self.menu - ret_list = [] - -~~ allowed_menus = current_app.appbuilder.sm.get_user_menu_access( - self.get_flat_name_list() + def __call__(self, form: Form, field: Field) -> None: + filters = self.datamodel.get_filters().add_filter( + self.col_name, self.datamodel.FilterEqual, field.data ) - - for i, item in enumerate(menu): - if item.name == "-" and not i == len(menu) - 1: - ret_list.append("-") - elif item.name not in allowed_menus: - continue - elif item.childs: - ret_list.append( - { - "name": item.name, - "icon": item.icon, - "label": __(str(item.label)), - "childs": self.get_data(menu=item.childs), - } - ) - else: - ret_list.append( - { - "name": item.name, - "icon": item.icon, - "label": __(str(item.label)), - "url": item.get_url(), - - -## ... source file abbreviated to get to current_app examples ... + count, obj = self.datamodel.query(filters) + if count > 0: + if not hasattr(form, "_id") or form._id != self.datamodel.get_keys(obj)[0]: + if self.message is None: + self.message = field.gettext(u"Already exists.") + raise ValidationError(self.message) - category=category, icon=category_icon, label=category_label - ) - new_menu_item = MenuItem( - name=name, href=href, icon=icon, label=label, baseview=baseview - ) - self.find(category).childs.append(new_menu_item) +class PasswordComplexityValidator: - def add_separator(self, category=""): - menu_item = self.find(category) - if menu_item: - menu_item.childs.append(MenuItem("-")) - else: - raise Exception( - "Menu separator does not have correct category {}".format(category) + def __call__(self, form: Form, field: Field) -> None: +~~ if current_app.config.get("FAB_PASSWORD_COMPLEXITY_ENABLED", False): +~~ password_complexity_validator = current_app.config.get( + "FAB_PASSWORD_COMPLEXITY_VALIDATOR", None ) - - -class MenuApi(BaseApi): - resource_name = "menu" - openapi_spec_tag = "Menu" - - @expose("/", methods=["GET"]) - @protect(allow_browser_login=True) - @permission_name("get") - def get_menu_data(self): -~~ return self.response(200, result=current_app.appbuilder.menu.get_data()) - - -class MenuApiManager(BaseManager): - def register_views(self): - if self.appbuilder.app.config.get("FAB_ADD_MENU_API", True): - self.appbuilder.add_api(MenuApi) - + if password_complexity_validator is not None: + try: + password_complexity_validator(field.data) + except PasswordComplexityValidationError as exc: + raise ValidationError(str(exc)) + else: + try: + default_password_complexity(field.data) + except PasswordComplexityValidationError as exc: + raise ValidationError(str(exc)) + + +def default_password_complexity(password: str) -> None: + match = re.search(password_complexity_regex, password) + if not match: + raise PasswordComplexityValidationError( + gettext( + "Must have at least two capital letters," + " one special character, two digits, three lower case letters and" + " a minimal length of 10." + ) + ) ## ... source file continues with no further current_app examples... @@ -1452,65 +1406,72 @@ Python code. It does this by adding a `{% meld_scripts %}` tag to the Flask template engine and then inserting components written in Python scripts created by a developer. -[**Flask-Meld / flask_meld / component.py**](https://github.com/mikeabrahamsen/Flask-Meld/blob/main/flask_meld/./component.py) +[**Flask-Meld / flask_meld / message.py**](https://github.com/mikeabrahamsen/Flask-Meld/blob/main/flask_meld/./message.py) ```python -# component.py -import os -import uuid -from importlib.util import module_from_spec, spec_from_file_location +# message.py +import ast +from werkzeug.wrappers.response import Response +import functools +from .component import get_component_class +~~from flask import jsonify, current_app import orjson -from bs4 import BeautifulSoup -from bs4.formatter import HTMLFormatter -~~from flask import render_template, current_app, jsonify -def convert_to_snake_case(s): - s.replace("-", "_") - return s +def process_message(message): + meld_id = message["id"] + component_name = message["componentName"] + action_queue = message["actionQueue"] + data = message["data"] + Component = get_component_class(component_name) + component = Component(meld_id, **data) + return_data = None -def convert_to_camel_case(s): - s = convert_to_snake_case(s) - return "".join(word.title() for word in s.split("_")) + for action in action_queue: + payload = action.get("payload", None) + if "syncInput" in action["type"]: + if hasattr(component, payload["name"]): + setattr(component, payload["name"], payload["value"]) + if component._form: + field_name = payload.get("name") + if field_name in component._form._fields: + field = getattr(component._form, field_name) + component._set_field_data(field_name, payload["value"]) + component.updated(field) -def get_component_class(component_name): - module_name = convert_to_snake_case(component_name) - class_name = convert_to_camel_case(module_name) - module = get_component_module(module_name) - component_class = getattr(module, class_name) +## ... source file abbreviated to get to current_app examples ... - return component_class -def get_component_module(module_name): -~~ user_specified_dir = current_app.config.get("MELD_COMPONENT_DIR", None) + if "(" in call_method_name and call_method_name.endswith(")"): + param_idx = call_method_name.index("(") + params_str = call_method_name[param_idx:] + + method_name = call_method_name.replace(params_str, "") + + params_str = params_str[1:-1] + if params_str != "": + try: + params = ast.literal_eval("[" + params_str + "]") + except (ValueError, SyntaxError): + params = list(map(str.strip, params_str.split(","))) + + return method_name, params + + +def listen(*event_names: str): + def dec(func): + func._meld_event_names = event_names + return func + return dec - if not user_specified_dir: - try: - name = getattr(current_app, "name", None) - full_path = os.path.join(name, "meld", "components", module_name + ".py") - module = load_module_from_path(full_path, module_name) - except FileNotFoundError: - full_path = os.path.join("meld", "components", module_name + ".py") - module = load_module_from_path(full_path, module_name) - return module - else: - try: - full_path = os.path.join(user_specified_dir, module_name + ".py") - module = load_module_from_path(full_path, module_name) - except FileNotFoundError: - full_path = os.path.join( - user_specified_dir, "components", module_name + ".py" - ) - module = load_module_from_path(full_path, module_name) - return module +def emit(event_name: str, **kwargs): +~~ current_app.socketio.emit("meld-event", {"event": event_name, "message": kwargs}) -def load_module_from_path(full_path, module_name): - spec = spec_from_file_location(module_name, full_path) ## ... source file continues with no further current_app examples... @@ -2171,20 +2132,24 @@ The Flask-Security-Too project is provided as open source under the # core.py from datetime import datetime, timedelta +import re +import typing as t import warnings import pkg_resources -~~from flask import _request_ctx_stack, current_app, render_template +~~from flask import _request_ctx_stack, current_app +from flask.json import JSONEncoder from flask_login import AnonymousUserMixin, LoginManager from flask_login import UserMixin as BaseUserMixin from flask_login import current_user from flask_principal import Identity, Principal, RoleNeed, UserNeed, identity_loaded +from flask_wtf import FlaskForm from itsdangerous import URLSafeTimedSerializer from passlib.context import CryptContext from werkzeug.datastructures import ImmutableList from werkzeug.local import LocalProxy -from .babel import get_i18n_domain, have_babel +from .babel import FsDomain from .decorators import ( default_reauthn_handler, default_unauthn_handler, @@ -2197,63 +2162,6 @@ from .forms import ( LoginForm, PasswordlessLoginForm, RegisterForm, - ResetPasswordForm, - SendConfirmationForm, - - -## ... source file abbreviated to get to current_app examples ... - - - UnifiedSigninSetupForm, - UnifiedSigninSetupValidateForm, - UnifiedVerifyForm, - us_send_security_token, -) -from .totp import Totp -from .utils import _ -from .utils import config_value as cv -from .utils import ( - FsJsonEncoder, - FsPermNeed, - csrf_cookie_handler, - default_want_json, - get_config, - get_identity_attribute, - get_identity_attributes, - get_message, - localize_callback, - set_request_attr, - uia_email_mapper, - url_for_security, - verify_and_update_password, -) -from .views import create_blueprint, default_render_json - -~~_security = LocalProxy(lambda: current_app.extensions["security"]) -_datastore = LocalProxy(lambda: _security.datastore) - -AUTHN_MECHANISMS = ("basic", "session", "token") - - -_default_config = { - "BLUEPRINT_NAME": "security", - "CLI_ROLES_NAME": "roles", - "CLI_USERS_NAME": "users", - "URL_PREFIX": None, - "SUBDOMAIN": None, - "FLASH_MESSAGES": True, - "I18N_DOMAIN": "flask_security", - "I18N_DIRNAME": pkg_resources.resource_filename("flask_security", "translations"), - "EMAIL_VALIDATOR_ARGS": None, - "PASSWORD_HASH": "bcrypt", - "PASSWORD_SALT": None, - "PASSWORD_SINGLE_HASH": { - "django_argon2", - "django_bcrypt_sha256", - "django_pbkdf2_sha256", - "django_pbkdf2_sha1", - "django_bcrypt", - "django_salted_md5", ## ... source file abbreviated to get to current_app examples ... @@ -2277,7 +2185,7 @@ _default_config = { "TWO_FACTOR_VALIDITY_COOKIE": { "httponly": True, "secure": False, - "samesite": None, + "samesite": "Strict", }, "CONFIRM_EMAIL_WITHIN": "5 days", "RESET_PASSWORD_WITHIN": "5 days", @@ -2314,33 +2222,33 @@ _default_config = { ## ... source file abbreviated to get to current_app examples ... - - for key, value in _default_config.items(): - app.config.setdefault("SECURITY_" + key, value) - - for key, value in _default_messages.items(): - app.config.setdefault("SECURITY_MSG_" + key, value) + for key, value in get_config(app).items(): + setattr(self, key.lower(), value) identity_loaded.connect_via(app)(_on_identity_loaded) - self._state = state = _get_state(app, datastore, **kwargs) - if hasattr(datastore, "user_model") and not hasattr( - datastore.user_model, "fs_uniquifier" + if hasattr(self.datastore, "user_model") and not hasattr( + self.datastore.user_model, "fs_uniquifier" ): # pragma: no cover raise ValueError("User model must contain fs_uniquifier as of 4.0.0") - if register_blueprint: - bp = create_blueprint( - app, state, __name__, json_encoder=kwargs["json_encoder_cls"] - ) - app.register_blueprint(bp) - app.context_processor(_context_processor) + for uia in cv("USER_IDENTITY_ATTRIBUTES", app=app): # pragma: no cover + if not isinstance(uia, dict): + raise ValueError( + "SECURITY_USER_IDENTITY_ATTRIBUTES changed semantics" + " in 4.0 - please see release notes." + ) + if len(list(uia.keys())) != 1: + raise ValueError( + "Each element in SECURITY_USER_IDENTITY_ATTRIBUTES" + " must have one and only one key." + ) @app.before_first_request def _register_i18n(): if "_" not in app.jinja_env.globals: -~~ current_app.jinja_env.globals["_"] = state.i18n_domain.gettext -~~ current_app.jinja_env.globals["_fsdomain"] = state.i18n_domain.gettext +~~ current_app.jinja_env.globals["_"] = self.i18n_domain.gettext +~~ current_app.jinja_env.globals["_fsdomain"] = self.i18n_domain.gettext @app.before_first_request def _csrf_init(): @@ -2370,40 +2278,42 @@ _default_config = { ) csrf_cookie = cv("CSRF_COOKIE") - if csrf_cookie and csrf_cookie["key"] and not csrf: + if csrf_cookie and csrf_cookie.get("key", None): +~~ current_app.config["SECURITY_CSRF_COOKIE_NAME"] = csrf_cookie.pop("key") + if cv("CSRF_COOKIE_NAME") and not csrf: raise ValueError( "CSRF_COOKIE defined however CsrfProtect not part of application" ) if csrf: csrf.exempt("flask_security.views.logout") - if csrf_cookie and csrf_cookie["key"]: + if cv("CSRF_COOKIE_NAME"): ~~ current_app.after_request(csrf_cookie_handler) ~~ current_app.config["WTF_CSRF_HEADERS"].append(cv("CSRF_HEADER")) - @app.before_first_request - def check_babel(): - if have_babel() and "babel" not in app.extensions: - raise ValueError( - "Flask-Babel or Flask-BabelEx is installed but not initialized" - ) - - state._phone_util = state.phone_util_cls(app) - state._mail_util = state.mail_util_cls(app) - state._password_util = state.password_util_cls(app) - - app.extensions["security"] = state - - if hasattr(app, "cli"): - from .cli import users, roles - - if state.cli_users_name: - app.cli.add_command(users, state.cli_users_name) - if state.cli_roles_name: - app.cli.add_command(roles, state.cli_roles_name) - - for newc, oldc in [ - ("SECURITY_SMS_SERVICE", "SECURITY_TWO_FACTOR_SMS_SERVICE"), + self._phone_util = self.phone_util_cls(app) + self._mail_util = self.mail_util_cls(app) + self._password_util = self.password_util_cls(app) + self._username_util = self.username_util_cls(app) + rvre = cv("REDIRECT_VALIDATE_RE", app=app) + if rvre: + self._redirect_validate_re = re.compile(rvre) + + if not hasattr(app, "login_manager") or not self.login_manager: + self.login_manager = _get_login_manager(app, self.anonymous_user) + + self.remember_token_serializer = _get_serializer(app, "remember") + self.login_serializer = _get_serializer(app, "login") + self.reset_serializer = _get_serializer(app, "reset") + self.confirm_serializer = _get_serializer(app, "confirm") + self.us_setup_serializer = _get_serializer(app, "us_setup") + self.tf_validity_serializer = _get_serializer(app, "two_factor_validity") + self.principal = _get_principal(app) + self.pwd_context = _get_pwd_context(app) + self.hashing_context = _get_hashing_context(app) + self.i18n_domain = FsDomain(app) + + if cv("USERNAME_ENABLE", app): ## ... source file continues with no further current_app examples... diff --git a/content/pages/examples/flask/flask-globals-g.markdown b/content/pages/examples/flask/flask-globals-g.markdown index 8fced1573..6c47941e6 100644 --- a/content/pages/examples/flask/flask-globals-g.markdown +++ b/content/pages/examples/flask/flask-globals-g.markdown @@ -42,7 +42,7 @@ import datetime import json import logging import re -from typing import Dict, List, Set +from typing import Dict, List, Optional, Set, Tuple ~~from flask import g, session, url_for from flask_babel import lazy_gettext as _ @@ -186,12 +186,6 @@ from .views import ( raise NotImplementedError - def add_permission_view_menu(self, permission_name, view_menu_name): - raise NotImplementedError - - def del_permission_view_menu(self, permission_name, view_menu_name, cascade=True): - raise NotImplementedError - def exist_permission_on_views(self, lst, item): raise NotImplementedError @@ -204,6 +198,12 @@ from .views import ( def del_permission_role(self, role, perm_view): raise NotImplementedError + def export_roles(self, path: Optional[str] = None) -> None: + raise NotImplementedError + + def import_roles(self, path: str) -> None: + raise NotImplementedError + def load_user(self, pk): return self.get_user_by_id(int(pk)) diff --git a/content/pages/examples/flask/flask-globals-request.markdown b/content/pages/examples/flask/flask-globals-request.markdown index b67c2a446..be097b278 100644 --- a/content/pages/examples/flask/flask-globals-request.markdown +++ b/content/pages/examples/flask/flask-globals-request.markdown @@ -207,14 +207,19 @@ def test_that_request_path_hijacking_works_properly(): def test_theme_fallback_config(): - app = create_ctfd() + + class ThemeFallbackConfig(TestingConfig): + THEME_FALLBACK = False + + app = create_ctfd(config=ThemeFallbackConfig) try: - os.mkdir(os.path.join(app.root_path, "themes", "foo")) + os.mkdir(os.path.join(app.root_path, "themes", "foo_fallback")) except OSError: pass with app.app_context(): - set_config("ctf_theme", "foo") + app.config["THEME_FALLBACK"] = False + set_config("ctf_theme", "foo_fallback") assert app.config["THEME_FALLBACK"] == False with app.test_client() as client: try: @@ -222,11 +227,6 @@ def test_theme_fallback_config(): except TemplateNotFound: pass try: - r = client.get("/themes/foo/static/js/pages/main.dev.js") - except TemplateNotFound: - pass - destroy_ctfd(app) - ## ... source file continues with no further request examples... @@ -658,7 +658,7 @@ class UnbanUser(MethodView): data.append( { "id": user.id, - "type": "unban", + "type": "ban", "reverse": "ban", "reverse_name": _("Ban"), "reverse_url": url_for("management.ban_user", @@ -2226,6 +2226,7 @@ The Flask-Security-Too project is provided as open source under the # forms.py import inspect +import typing as t ~~from flask import Markup, current_app, request from flask_login import current_user @@ -2242,25 +2243,25 @@ from wtforms import ( ValidationError, validators, ) -from wtforms.fields.html5 import EmailField + +try: # pragma: no cover + from wtforms.fields import EmailField +except ImportError: + from wtforms.fields.html5 import EmailField from wtforms.validators import StopValidation from .babel import is_lazy_string, make_lazy_string from .confirmable import requires_confirmation from .utils import ( - _, - _datastore, - config_value, - do_flash, ## ... source file abbreviated to get to request examples ... - -class RegisterFormMixin: submit = SubmitField(get_form_field_label("register")) + username: t.ClassVar[Field] + def to_dict(self, only_user): def is_field_and_user_attr(member): @@ -2313,22 +2314,22 @@ class ForgotPasswordForm(Form, UserEmailFormMixin): ## ... source file abbreviated to get to request examples ... - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - def validate(self): - if not super().validate(): - return False - if not self.user.is_active: self.email.errors.append(get_message("DISABLED_ACCOUNT")[0]) return False return True +login_email_field = EmailField( + get_form_field_label("email"), validators=[email_required] +) + +login_string_field = StringField( + get_form_field_label("email"), validators=[email_required] +) + + class LoginForm(Form, NextFormMixin): - email = EmailField(get_form_field_label("email"), validators=[email_required]) password = PasswordField( get_form_field_label("password"), validators=[password_required] ) @@ -2339,7 +2340,7 @@ class LoginForm(Form, NextFormMixin): super().__init__(*args, **kwargs) if not self.next.data: ~~ self.next.data = request.args.get("next", "") - self.remember.default = config_value("DEFAULT_REMEMBER_ME") + self.remember.default = cv("DEFAULT_REMEMBER_ME") if ( current_app.extensions["security"].recoverable and not self.password.description @@ -2382,7 +2383,7 @@ class RegisterForm(ConfirmRegisterForm, NextFormMixin): def validate(self): if not super().validate(): return False - if not config_value("UNIFIED_SIGNIN"): + if not cv("UNIFIED_SIGNIN"): if not self.password_confirm.data or not self.password_confirm.data.strip(): self.password_confirm.errors.append( get_message("PASSWORD_NOT_PROVIDED")[0] @@ -2949,6 +2950,7 @@ import configparser import json import logging import os +from typing import Union import requests import requests_cache @@ -2974,6 +2976,8 @@ requests_cache.install_cache(cache_name='news_cache', expire_after=300) APP = Flask(__name__) +SESSION = requests.Session() +SESSION.headers.update({'Authorization': API_KEY}) @APP.route('/', methods=['GET', 'POST']) @@ -2998,14 +3002,13 @@ def category(category): country = get_cookie('country') if country is not None: params.update({'country': country}) - response = requests.get(TOP_HEADLINES, - params=params, - headers={'Authorization': API_KEY}) + response = SESSION.get(TOP_HEADLINES, params=params) if response.status_code == 200: pages = count_pages(response.json()) if page > pages: page = pages - return redirect(url_for('category', category=category, page=page)) + return redirect( + url_for('category', category=category, page=page)) articles = parse_articles(response.json()) return render(articles, page, pages, country, category) elif response.status_code == 401: @@ -3014,7 +3017,7 @@ def category(category): @APP.route('/search/', methods=['GET', 'POST']) -def search(query): +def search(query: str): ~~ page = request.args.get('page', default=1, type=int) if page < 1: return redirect(url_for('search', query=query, page=1)) @@ -3026,9 +3029,7 @@ def search(query): } ~~ if request.method == 'POST': return do_post(page, category='search', current_query=query) - response = requests.get(EVERYTHING, - params=params, - headers={'Authorization': API_KEY}) + response = SESSION.get(EVERYTHING, params=params) pages = count_pages(response.json()) if page > pages: page = pages @@ -3062,7 +3063,7 @@ def do_post(page, category='general', current_query=None): return redirect(url_for('category', category=category, page=page)) -def parse_articles(response): +def parse_articles(response: dict) -> list: parsed_articles = [] if response.get('status') == 'ok': for article in response.get('articles'): @@ -3075,16 +3076,16 @@ def parse_articles(response): ## ... source file abbreviated to get to request examples ... + 'source': article['source']['name'] }) return parsed_articles -def count_pages(response): - pages = 0 +def count_pages(response: dict) -> int: if response.get('status') == 'ok': - pages = (-(-response.get('totalResults', 0) // PAGE_SIZE)) - return pages + return (-(-response.get('totalResults', 0) // PAGE_SIZE)) + return 0 def render(articles, page, pages, country, category): @@ -3099,9 +3100,8 @@ def render(articles, page, pages, country, category): pages=pages) -def get_cookie(key): -~~ cookie_value = request.cookies.get(key) - return cookie_value +def get_cookie(key: str) -> Union[str, None]: +~~ return request.cookies.get(key) if __name__ == '__main__': @@ -3502,6 +3502,8 @@ from core.db import Database import os import sys import platform +import urllib +import requests from multiprocessing import Process trape = core.stats.trape @@ -3512,13 +3514,11 @@ db = Database() class victim_server(object): @app.route("/" + trape.victim_path) def homeVictim(): - opener = urllib2.build_opener() - headers = victim_headers(request.user_agent) - opener.addheaders = headers + r = requests.get(trape.url_to_clone, headers=victim_headers2(request.user_agent)) if (trape.type_lure == 'local'): html = assignScripts(victim_inject_code(render_template("/" + trape.url_to_clone), 'payload', '/', trape.gmaps, trape.ipinfo)) else: - html = assignScripts(victim_inject_code(opener.open(trape.url_to_clone).read(), 'payload', trape.url_to_clone, trape.gmaps, trape.ipinfo)) + html = assignScripts(victim_inject_code(r.content, 'payload', trape.url_to_clone, trape.gmaps, trape.ipinfo)) return html @app.route("/register", methods=["POST"]) @@ -3611,7 +3611,7 @@ class victim_server(object): ~~ url = request.args.get('url') if url[0:4] != 'http': url = 'http://' + url - opener = urllib2.build_opener() + opener = urllib.request.build_opener() headers = victim_headers(request.user_agent) opener.addheaders = headers html = assignScripts(victim_inject_code(opener.open(url).read(), 'vscript', url, trape.gmaps, trape.ipinfo)) diff --git a/content/pages/examples/flask/flask-globals-session.markdown b/content/pages/examples/flask/flask-globals-session.markdown index 9ff29a99a..baf253747 100644 --- a/content/pages/examples/flask/flask-globals-session.markdown +++ b/content/pages/examples/flask/flask-globals-session.markdown @@ -41,7 +41,7 @@ scenarios. CTFd is open sourced under the import base64 import requests -from flask import Blueprint +from flask import Blueprint, abort from flask import current_app as app ~~from flask import redirect, render_template, request, session, url_for from itsdangerous.exc import BadSignature, BadTimeSignature, SignatureExpired @@ -73,13 +73,6 @@ auth = Blueprint("auth", __name__) ## ... source file abbreviated to get to session examples ... - ) - db.session.close() - - if is_teams_mode(): - return redirect(url_for("teams.private")) - - return redirect(url_for("challenges.listing")) else: return render_template("register.html", errors=errors) @@ -97,6 +90,13 @@ def login(): user = Users.query.filter_by(name=name).first() if user: + if user.password is None: + errors.append( + "Your account was registered with a 3rd party authentication provider. " + "Please try logging in with a configured authentication provider." + ) + return render_template("login.html", errors=errors) + if user and verify_password(request.form["password"], user.password): ~~ session.regenerate() @@ -271,6 +271,7 @@ from babel.core import get_locale_identifier from babel.dates import format_date as babel_format_date from babel.dates import format_datetime as babel_format_datetime from babel.dates import format_timedelta as babel_format_timedelta +from babel.dates import format_time as babel_format_time ~~from flask import current_app, flash, g, redirect, request, session, url_for from flask_allows import Permission from flask_babelplus import lazy_gettext as _ @@ -932,10 +933,12 @@ The Flask-Security-Too project is provided as open source under the ```python # twofactor.py +import typing as t + ~~from flask import current_app as app, redirect, request, session from werkzeug.datastructures import MultiDict -from werkzeug.local import LocalProxy +from .proxies import _security, _datastore from .utils import ( SmsSenderFactory, base_render_json, @@ -955,8 +958,8 @@ from .signals import ( tf_profile_changed, ) -_security = LocalProxy(lambda: app.extensions["security"]) -_datastore = LocalProxy(lambda: _security.datastore) +if t.TYPE_CHECKING: # pragma: no cover + from flask import Response def tf_clean_session(): @@ -1213,130 +1216,150 @@ is a [Flask](/flask.html)-based web app for event management. The code is open sourced under the [MIT license](https://github.com/indico/indico/blob/master/LICENSE). -[**indico / indico / core / logger.py**](https://github.com/indico/indico/blob/master/indico/core/logger.py) +[**indico / indico / util / i18n.py**](https://github.com/indico/indico/blob/master/indico/util/i18n.py) ```python -# logger.py +# i18n.py -import logging -import logging.config -import logging.handlers -import os -import warnings -from pprint import pformat - -import yaml -~~from flask import current_app, has_request_context, request, session +import ast +import re +from collections import Counter +from contextlib import contextmanager + +from babel import negotiate_locale +from babel.core import LOCALE_ALIASES, Locale +from babel.messages.pofile import read_po +from babel.support import NullTranslations +~~from flask import current_app, g, has_app_context, has_request_context, request, session +from flask_babel import Babel, Domain, get_domain +from flask_pluginengine import current_plugin +from speaklater import is_lazy_string, make_lazy_string +from werkzeug.utils import cached_property from indico.core.config import config -from indico.util.i18n import set_best_lang -from indico.web.util import get_request_info +from indico.util.caching import memoize_request + +LOCALE_ALIASES = dict(LOCALE_ALIASES, en='en_GB') +RE_TR_FUNCTION = re.compile(r'''_\("([^"]*)"\)|_\('([^']*)'\)''', re.DOTALL | re.MULTILINE) -try: - from raven import setup_logging - from raven.contrib.celery import register_logger_signal, register_signal - from raven.contrib.flask import Sentry - from raven.handlers.logging import SentryHandler -except ImportError: - Sentry = object # so we can subclass - has_sentry = False -else: - has_sentry = True +babel = Babel() +_use_context = object() -class AddRequestIDFilter: - def filter(self, record): - record.request_id = request.id if has_request_context() else '0' * 16 - return True +def get_translation_domain(plugin_name=_use_context): + if plugin_name is None: + return get_domain() + else: + plugin = None + if has_app_context(): + from indico.core.plugins import plugin_engine + plugin = plugin_engine.get_plugin(plugin_name) if plugin_name is not _use_context else current_plugin -class AddUserIDFilter: - def filter(self, record): -~~ record.user_id = str(session.user.id) if has_request_context() and session and session.user else '-' - return True +## ... source file abbreviated to get to session examples ... -class RequestInfoFormatter(logging.Formatter): - def format(self, record): - rv = super().format(record) - info = get_request_info() - if info: - rv += '\n\n' + pformat(info) - return rv + def weekday(self, daynum, short=True): + return self.days['format']['abbreviated' if short else 'wide'][daynum] -class FormattedSubjectSMTPHandler(logging.handlers.SMTPHandler): - def getSubject(self, record): - return self.subject % record.__dict__ + @cached_property + def time_formats(self): + formats = super().time_formats + for k, v in formats.items(): + v.format = v.format.replace(':%(ss)s', '') + return formats -class BlacklistFilter(logging.Filter): - def __init__(self, names): - self.filters = [logging.Filter(name) for name in names] +def _remove_locale_script(locale): + parts = locale.split('_') # e.g. `en_GB` or `zh_Hans_CN` + return f'{parts[0]}_{parts[-1]}' - def filter(self, record): - return not any(x.filter(record) for x in self.filters) +@babel.localeselector +def set_best_lang(check_session=True): + from indico.core.config import config + if not has_request_context(): + return 'en_GB' if current_app.config['TESTING'] else config.DEFAULT_LOCALE + elif 'lang' in g: + return g.lang +~~ elif check_session and session.lang is not None: +~~ return session.lang -## ... source file abbreviated to get to session examples ... + all_locales = {_remove_locale_script(loc).lower(): loc for loc in get_all_locales()} + preferred = [x.replace('-', '_') for x in request.accept_languages.values()] + resolved_lang = negotiate_locale(preferred, list(all_locales), aliases=LOCALE_ALIASES) + + if not resolved_lang: + if current_app.config['TESTING']: + return 'en_GB' + + resolved_lang = config.DEFAULT_LOCALE - if formatter.pop('append_request_info', False): - assert '()' not in formatter - formatter['()'] = RequestInfoFormatter - if config.DB_LOG: - data['loggers']['indico._db'] = {'level': 'DEBUG', 'propagate': False, 'handlers': ['_db']} - data['handlers']['_db'] = {'class': 'logging.handlers.SocketHandler', 'host': '127.0.0.1', 'port': 9020} - if config.CUSTOMIZATION_DEBUG and config.CUSTOMIZATION_DIR: - data['loggers'].setdefault('indico.customization', {})['level'] = 'DEBUG' - logging.config.dictConfig(data) - if config.SENTRY_DSN: - if not has_sentry: - raise Exception('`raven` must be installed to use sentry logging') - init_sentry(app) - - @classmethod - def get(cls, name=None): - if name is None: - name = 'indico' - elif name != 'indico' and not name.startswith('indico.'): - name = 'indico.' + name - return logging.getLogger(name) - - -class IndicoSentry(Sentry): - def get_user_info(self, request): -~~ if not has_request_context() or not session.user: - return None -~~ return {'id': session.user.id, -~~ 'email': session.user.email, -~~ 'name': session.user.full_name} - - def before_request(self, *args, **kwargs): - super().before_request() - if not has_request_context(): - return - self.client.extra_context({'Endpoint': str(request.url_rule.endpoint) if request.url_rule else None, - 'Request ID': request.id}) - self.client.tags_context({'locale': set_best_lang()}) - - -def init_sentry(app): - sentry = IndicoSentry(wrap_wsgi=False, register_signal=True, logging=False) - sentry.init_app(app) - handler = SentryHandler(sentry.client, level=getattr(logging, config.SENTRY_LOGGING_LEVEL)) - handler.addFilter(BlacklistFilter({'indico.flask', 'celery.redirected'})) - setup_logging(handler) - register_logger_signal(sentry.client) - register_signal(sentry.client) - - -def sentry_log_exception(): try: - sentry = current_app.extensions['sentry'] + resolved_lang = all_locales[resolved_lang.lower()] except KeyError: + return 'en_GB' + + resolved_lang = re.sub(r'^([a-zA-Z]+)_([a-zA-Z]+)$', + lambda m: f'{m.group(1).lower()}_{m.group(2).upper()}', + resolved_lang) + + g.lang = resolved_lang + return resolved_lang + + +@memoize_request +def get_current_locale(): + return IndicoLocale.parse(set_best_lang()) + + +def get_all_locales(): + if babel.app is None: + return {} + else: + missing = object() + languages = {str(t): config.CUSTOM_LANGUAGES.get(str(t), (t.language_name.title(), t.territory_name)) + for t in babel.list_translations() + if config.CUSTOM_LANGUAGES.get(str(t), missing) is not None} + counts = Counter(x[0] for x in languages.values()) + return {code: (name, territory, counts[name] > 1) for code, (name, territory) in languages.items()} + + +def set_session_lang(lang): +~~ session.lang = lang + + +@contextmanager +def session_language(lang): +~~ old_lang = session.lang + + set_session_lang(lang) + yield + set_session_lang(old_lang) + + +def parse_locale(locale): + return IndicoLocale.parse(locale) + + +def extract_node(node, keywords, commentTags, options, parents=[None]): + if isinstance(node, ast.Str) and isinstance(parents[-1], (ast.Assign, ast.Call)): + matches = RE_TR_FUNCTION.findall(node.s) + for m in matches: + line = m[0] or m[1] + yield (node.lineno, '', line.split('\n'), ['old style recursive strings']) + else: + for cnode in ast.iter_child_nodes(node): + yield from extract_node(cnode, keywords, commentTags, options, parents=(parents + [node])) + + +def po_to_json(po_file, locale=None, domain=None): + with open(po_file, 'rb') as f: + po_data = read_po(f, locale=locale, domain=domain) ## ... source file continues with no further session examples... @@ -1473,7 +1496,7 @@ from threading import Lock from flask_socketio import SocketIO, emit, join_room, rooms, disconnect import core.stats import core.user -from user_objects import attacks_hook_message +from core.user_objects import attacks_hook_message from core.utils import utils from core.db import Database import sys diff --git a/content/pages/examples/flask/flask-helpers-flash.markdown b/content/pages/examples/flask/flask-helpers-flash.markdown index e89f89b9f..346bb3f6b 100644 --- a/content/pages/examples/flask/flask-helpers-flash.markdown +++ b/content/pages/examples/flask/flask-helpers-flash.markdown @@ -1462,12 +1462,12 @@ class ImportRoleMembersMixin: self.role.members |= users for user in new_members: self.logger.info(f'User {user} added to role {self.role} by {session.user}') -~~ flash(ngettext("{} member has been imported.", - "{} members have been imported.", +~~ flash(ngettext('{} member has been imported.', + '{} members have been imported.', len(users)).format(len(users)), 'success') if unknown_emails: -~~ flash(ngettext("There is no user with this email address: {}", - "There are no users with these email addresses: {}", +~~ flash(ngettext('There is no user with this email address: {}', + 'There are no users with these email addresses: {}', len(unknown_emails)).format(', '.join(unknown_emails)), 'warning') tpl = get_template_module('events/roles/_roles.html') return jsonify_data(html=tpl.render_role(self.role, collapsed=False, email_button=False)) diff --git a/content/pages/examples/flask/flask-helpers-get-root-path.markdown b/content/pages/examples/flask/flask-helpers-get-root-path.markdown index 53da00788..3b75f3a3e 100644 --- a/content/pages/examples/flask/flask-helpers-get-root-path.markdown +++ b/content/pages/examples/flask/flask-helpers-get-root-path.markdown @@ -37,6 +37,7 @@ import os import re import shutil import socket +import subprocess import sys from operator import attrgetter from pathlib import Path @@ -45,6 +46,8 @@ from smtplib import SMTP import click from click import wrap_text ~~from flask.helpers import get_root_path +from packaging.specifiers import SpecifierSet +from packaging.version import Version from pkg_resources import iter_entry_points from prompt_toolkit import prompt from prompt_toolkit.completion import PathCompleter, WordCompleter @@ -57,6 +60,7 @@ from sqlalchemy.pool import NullPool from terminaltables import AsciiTable from werkzeug.urls import url_parse +import indico from indico.core.db.sqlalchemy.util.models import import_all_models from indico.util.console import cformat from indico.util.string import validate_email @@ -66,9 +70,6 @@ def _echo(msg=''): click.echo(msg, err=True) -def _warn(msg): - msg = wrap_text(msg) - click.echo(click.style(msg, fg='yellow'), err=True) ## ... source file abbreviated to get to get_root_path examples ... @@ -129,14 +130,14 @@ def _prompt(message, default='', path=False, list_=None, required=True, validate ## ... source file abbreviated to get to get_root_path examples ... + 'SMTP_USE_CELERY = False' + ] - if dev: + if not self.system_notices: config_data += [ '', - '# Development options', - 'DB_LOG = True', - 'DEBUG = True', - 'SMTP_USE_CELERY = False' + '# Disable system notices', + 'SYSTEM_NOTICES_URL = None' ] config = '\n'.join(x for x in config_data if x is not None) @@ -173,11 +174,7 @@ def _prompt(message, default='', path=False, list_=None, required=True, validate _echo(cformat('Run %{green!}export INDICO_CONFIG={}%{reset} to use your config file') .format(self.config_path)) - if self.old_archive_dir: - _echo(cformat('Check %{green!}https://git.io/vHP6o%{reset} for a guide on how to ' - 'import data from Indico v1.2')) - else: - _echo(cformat('You can now run %{green!}indico db prepare%{reset} to initialize your Indico database')) + _echo(cformat('You can now run %{green!}indico db prepare%{reset} to initialize your Indico database')) diff --git a/content/pages/examples/flask/flask-helpers-make-response.markdown b/content/pages/examples/flask/flask-helpers-make-response.markdown index 64df32c79..877d38532 100644 --- a/content/pages/examples/flask/flask-helpers-make-response.markdown +++ b/content/pages/examples/flask/flask-helpers-make-response.markdown @@ -326,18 +326,17 @@ The Flask-Security-Too project is provided as open source under the from functools import partial import time +import typing as t from flask import ( Blueprint, after_this_request, - current_app, jsonify, request, session, ) from flask_login import current_user -from werkzeug.datastructures import MultiDict -from werkzeug.local import LocalProxy +from werkzeug.datastructures import ImmutableMultiDict, MultiDict from .changeable import change_user_password from .confirmable import ( @@ -347,6 +346,7 @@ from .confirmable import ( ) from .decorators import anonymous_user_required, auth_required, unauth_csrf from .passwordless import login_token_status, send_login_instructions +from .proxies import _security, _datastore from .quart_compat import get_quart_status from .unified_signin import ( us_signin, @@ -366,7 +366,7 @@ from .recoverable import ( from .utils import ( base_render_json, check_and_update_authn_fresh, - config_value, + config_value as cv, do_flash, get_message, get_post_login_redirect, @@ -390,9 +390,8 @@ if get_quart_status(): # pragma: no cover else: ~~ from flask import make_response, redirect - -_security = LocalProxy(lambda: current_app.extensions["security"]) -_datastore = LocalProxy(lambda: _security.datastore) +if t.TYPE_CHECKING: # pragma: no cover + from flask.typing import ResponseValue def default_render_json(payload, code, headers, user): @@ -408,7 +407,7 @@ def _ctx(endpoint): @unauth_csrf(fall_through=True) -def login(): +def login() -> "ResponseValue": if current_user.is_authenticated and request.method == "POST": @@ -418,7 +417,7 @@ def login(): ) return _security._render_json(payload, 400, None, None) else: - return redirect(get_url(_security.post_login_view)) + return redirect(get_url(cv("POST_LOGIN_VIEW"))) form_class = _security.login_form @@ -448,6 +447,7 @@ import configparser import json import logging import os +from typing import Union import requests import requests_cache @@ -473,20 +473,20 @@ requests_cache.install_cache(cache_name='news_cache', expire_after=300) APP = Flask(__name__) +SESSION = requests.Session() +SESSION.headers.update({'Authorization': API_KEY}) -@APP.route('/', methods=['GET', 'POST']) -def root(): ## ... source file abbreviated to get to make_response examples ... + 'pageSize': PAGE_SIZE + } if request.method == 'POST': return do_post(page, category='search', current_query=query) - response = requests.get(EVERYTHING, - params=params, - headers={'Authorization': API_KEY}) + response = SESSION.get(EVERYTHING, params=params) pages = count_pages(response.json()) if page > pages: page = pages @@ -520,7 +520,7 @@ def do_post(page, category='general', current_query=None): return redirect(url_for('category', category=category, page=page)) -def parse_articles(response): +def parse_articles(response: dict) -> list: parsed_articles = [] if response.get('status') == 'ok': for article in response.get('articles'): diff --git a/content/pages/examples/flask/flask-helpers-safe-join.markdown b/content/pages/examples/flask/flask-helpers-safe-join.markdown index 9df182563..1382094d8 100644 --- a/content/pages/examples/flask/flask-helpers-safe-join.markdown +++ b/content/pages/examples/flask/flask-helpers-safe-join.markdown @@ -60,7 +60,7 @@ from CTFd.utils.migrations import create_database, migrations, stamp_latest_revi from CTFd.utils.sessions import CachingSessionInterface from CTFd.utils.updates import update_check -__version__ = "3.3.0" +__version__ = "3.4.0" __channel__ = "oss" diff --git a/content/pages/examples/flask/flask-helpers-send-file.markdown b/content/pages/examples/flask/flask-helpers-send-file.markdown index 1676d0fa2..726a0993c 100644 --- a/content/pages/examples/flask/flask-helpers-send-file.markdown +++ b/content/pages/examples/flask/flask-helpers-send-file.markdown @@ -45,6 +45,7 @@ from flask import Blueprint, abort from flask import current_app as app ~~from flask import redirect, render_template, request, send_file, session, url_for from flask.helpers import safe_join +from jinja2.exceptions import TemplateNotFound from sqlalchemy.exc import IntegrityError from CTFd.cache import cache @@ -67,7 +68,6 @@ from CTFd.models import ( db, ) from CTFd.utils import config, get_config, set_config -from CTFd.utils import user as current_user ## ... source file abbreviated to get to send_file examples ... diff --git a/content/pages/examples/flask/flask-helpers-url-for.markdown b/content/pages/examples/flask/flask-helpers-url-for.markdown index ad0cc1b93..9dab48b41 100644 --- a/content/pages/examples/flask/flask-helpers-url-for.markdown +++ b/content/pages/examples/flask/flask-helpers-url-for.markdown @@ -224,13 +224,19 @@ from .security.decorators import permission_name, protect class MenuItem(object): - def __init__(self, name, href="", icon="", label="", childs=None, baseview=None): + def __init__( + self, name, href="", icon="", label="", childs=None, baseview=None, cond=None + ): self.name = name self.href = href self.icon = icon self.label = label self.childs = childs or [] self.baseview = baseview + self.cond = cond + + def should_render(self) -> bool: + return bool(self.cond()) if self.cond is not None else True def get_url(self): if not self.href: @@ -291,7 +297,7 @@ import re import mistune ~~from flask import url_for -from jinja2 import Markup +from markupsafe import Markup from pluggy import HookimplMarker from pygments import highlight from pygments.formatters import HtmlFormatter diff --git a/content/pages/examples/flask/flask-json-jsonencoder.markdown b/content/pages/examples/flask/flask-json-jsonencoder.markdown index c1bb443db..7c217d86c 100644 --- a/content/pages/examples/flask/flask-json-jsonencoder.markdown +++ b/content/pages/examples/flask/flask-json-jsonencoder.markdown @@ -32,122 +32,43 @@ can work securely with Flask-based backends and that guidance by the The Flask-Security-Too project is provided as open source under the [MIT license](https://github.com/Flask-Middleware/flask-security/blob/master/LICENSE). -[**Flask-Security-Too / flask_security / utils.py**](https://github.com/Flask-Middleware/flask-security/blob/master/flask_security/./utils.py) +[**Flask-Security-Too / flask_security / core.py**](https://github.com/Flask-Middleware/flask-security/blob/master/flask_security/./core.py) ```python -# utils.py -import abc -import base64 -import datetime -from functools import partial -import hashlib -import hmac -import time -from typing import Dict, List +# core.py + +from datetime import datetime, timedelta +import re +import typing as t import warnings -from datetime import timedelta -from urllib.parse import parse_qsl, parse_qs, urlsplit, urlunsplit, urlencode -import urllib.request -import urllib.error -from flask import ( - _request_ctx_stack, - after_this_request, - current_app, - flash, - g, - request, - session, - url_for, -) +import pkg_resources +from flask import _request_ctx_stack, current_app ~~from flask.json import JSONEncoder -from flask_login import login_user as _login_user -from flask_login import logout_user as _logout_user +from flask_login import AnonymousUserMixin, LoginManager +from flask_login import UserMixin as BaseUserMixin from flask_login import current_user -from flask_login import COOKIE_NAME as REMEMBER_COOKIE_NAME -from flask_principal import AnonymousIdentity, Identity, identity_changed, Need -from flask_wtf import csrf -from wtforms import ValidationError -from itsdangerous import BadSignature, SignatureExpired +from flask_principal import Identity, Principal, RoleNeed, UserNeed, identity_loaded +from flask_wtf import FlaskForm +from itsdangerous import URLSafeTimedSerializer +from passlib.context import CryptContext +from werkzeug.datastructures import ImmutableList from werkzeug.local import LocalProxy -from werkzeug.datastructures import MultiDict - -from .quart_compat import best, get_quart_status -from .signals import user_authenticated - -_security = LocalProxy(lambda: current_app.extensions["security"]) - -_datastore = LocalProxy(lambda: _security.datastore) - -_pwd_context = LocalProxy(lambda: _security.pwd_context) - -_hashing_context = LocalProxy(lambda: _security.hashing_context) - -localize_callback = LocalProxy(lambda: _security.i18n_domain.gettext) - - - -## ... source file abbreviated to get to JSONEncoder examples ... - - - accept_mimetypes.best = best - if accept_mimetypes.best == "application/json": - return True - return False - - -def json_error_response(errors): - if isinstance(errors, str): - response_json = dict(error=errors) - elif isinstance(errors, dict): - response_json = dict(errors=errors) - else: - raise TypeError("The errors argument should be either a str or dict.") - - return response_json - -~~class FsJsonEncoder(JSONEncoder): - - def default(self, obj): - from .babel import is_lazy_string - - if is_lazy_string(obj): - return str(obj) - else: -~~ return JSONEncoder.default(self, obj) - - -class SmsSenderBaseClass(metaclass=abc.ABCMeta): - def __init__(self): - pass - - @abc.abstractmethod - def send_sms(self, from_number, to_number, msg): # pragma: no cover - return - - -class DummySmsSender(SmsSenderBaseClass): - def send_sms(self, from_number, to_number, msg): # pragma: no cover - return - - -class SmsSenderFactory: - senders = {"Dummy": DummySmsSender} - - @classmethod - def createSender(cls, name, *args, **kwargs): - return cls.senders[name](*args, **kwargs) - - - return _security._render_json(payload, code, headers=None, user=user) - - -def default_want_json(req): - if req.is_json: - return True - accept_mimetypes = req.accept_mimetypes - if not hasattr(req.accept_mimetypes, "best"): # pragma: no cover +from .babel import FsDomain +from .decorators import ( + default_reauthn_handler, + default_unauthn_handler, + default_unauthz_handler, +) +from .forms import ( + ChangePasswordForm, + ConfirmRegisterForm, + ForgotPasswordForm, + LoginForm, + PasswordlessLoginForm, + RegisterForm, + RegisterFormMixin, ## ... source file continues with no further JSONEncoder examples... diff --git a/content/pages/examples/flask/flask-json-jsonify.markdown b/content/pages/examples/flask/flask-json-jsonify.markdown index ea045cad1..035721414 100644 --- a/content/pages/examples/flask/flask-json-jsonify.markdown +++ b/content/pages/examples/flask/flask-json-jsonify.markdown @@ -356,7 +356,7 @@ class UnbanUser(MethodView): data.append( { "id": user.id, - "type": "unban", + "type": "ban", "reverse": "ban", "reverse_name": _("Ban"), "reverse_url": url_for("management.ban_user", @@ -674,11 +674,15 @@ in Python scripts created by a developer. import os import uuid from importlib.util import module_from_spec, spec_from_file_location +from itertools import groupby +from operator import itemgetter import orjson from bs4 import BeautifulSoup +from bs4.element import Tag from bs4.formatter import HTMLFormatter -~~from flask import render_template, current_app, jsonify +~~from flask import current_app, jsonify, render_template +from jinja2.exceptions import TemplateNotFound def convert_to_snake_case(s): @@ -704,16 +708,15 @@ def get_component_module(module_name): user_specified_dir = current_app.config.get("MELD_COMPONENT_DIR", None) - ## ... source file abbreviated to get to jsonify examples ... - def render(self, component_name: str): - return self._view(component_name) - def _render_template(self, template_name: str, context_variables: dict): - return render_template(template_name, **context_variables) + try: + return render_template(template_name, **context_variables) + except TemplateNotFound: + return render_template(f"meld/{template_name}", **context_variables) def _view(self, component_name: str): data = self._attributes() @@ -724,7 +727,7 @@ def get_component_module(module_name): context_variables.update({"form": self._form}) rendered_template = self._render_template( - f"meld/{component_name}.html", context_variables + f"{component_name}.html", context_variables ) soup = BeautifulSoup(rendered_template, features="html.parser") @@ -755,9 +758,9 @@ def get_component_module(module_name): ) for model_attr in model_attrs: - element.attrs["value"] = context_variables[element.attrs[model_attr]] - - @staticmethod + value = context_variables[element.attrs[model_attr]] + element.attrs["value"] = value + if element.name == "select": ## ... source file continues with no further jsonify examples... @@ -1017,6 +1020,7 @@ import hashlib import sys from datetime import datetime +import sentry_sdk from authlib.oauth2 import OAuth2Error ~~from flask import flash, g, has_request_context, jsonify, render_template, request, session from itsdangerous import Signer @@ -1089,7 +1093,7 @@ def _format_request_data(data, hide_passwords=False): rv = {} for key, values in data: if hide_passwords and 'password' in key: - values = [v if not v else '<{} chars hidden>'.format(len(v)) for v in values] + values = [v if not v else f'<{len(v)} chars hidden>' for v in values] rv[key] = values if len(values) != 1 else values[0] return rv diff --git a/content/pages/examples/flask/flask-sessions-badsignature.markdown b/content/pages/examples/flask/flask-sessions-badsignature.markdown index 5208b7aed..afe01dee0 100644 --- a/content/pages/examples/flask/flask-sessions-badsignature.markdown +++ b/content/pages/examples/flask/flask-sessions-badsignature.markdown @@ -18,67 +18,7 @@ and SessionMixin are a couple of other callables within the `flask.sessions` package that also have code examples. -## Example 1 from FlaskBB -[FlaskBB](https://github.com/flaskbb/flaskbb) -([project website](https://flaskbb.org/)) is a [Flask](/flask.html)-based -forum web application. The web app allows users to chat in an open -message board or send private messages in plain text or -[Markdown](/markdown.html). - -FlaskBB is provided as open source -[under this license](https://github.com/flaskbb/flaskbb/blob/master/LICENSE). - -[**FlaskBB / flaskbb / tokens / serializer.py**](https://github.com/flaskbb/flaskbb/blob/master/flaskbb/tokens/serializer.py) - -```python -# serializer.py - -from datetime import timedelta - -~~from itsdangerous import (BadData, BadSignature, SignatureExpired, - TimedJSONWebSignatureSerializer) - -from ..core import tokens - - -_DEFAULT_EXPIRY = timedelta(hours=1) - - -class FlaskBBTokenSerializer(tokens.TokenSerializer): - - def __init__(self, secret_key, expiry=_DEFAULT_EXPIRY): - self._serializer = TimedJSONWebSignatureSerializer( - secret_key, int(expiry.total_seconds()) - ) - - def dumps(self, token): - return self._serializer.dumps( - { - 'id': token.user_id, - 'op': token.operation, - } - ) - - def loads(self, raw_token): - try: - parsed = self._serializer.loads(raw_token) - except SignatureExpired: - raise tokens.TokenError.expired() -~~ except BadSignature: # pragma: no branch - raise tokens.TokenError.invalid() - except BadData: # pragma: no cover - raise tokens.TokenError.bad() - else: - return tokens.Token(user_id=parsed['id'], operation=parsed['op']) - - - -## ... source file continues with no further BadSignature examples... - -``` - - -## Example 2 from flask-base +## Example 1 from flask-base [flask-base](https://github.com/hack4impact/flask-base) ([project documentation](http://hack4impact.github.io/flask-base/)) provides boilerplate code for new [Flask](/flask.html) web apps. @@ -219,7 +159,7 @@ class Role(db.Model): ``` -## Example 3 from flask-bones +## Example 2 from flask-bones [flask-bones](https://github.com/cburmeister/flask-bones) ([demo](http://flask-bones.herokuapp.com/)) is large scale [Flask](/flask.html) example application built @@ -319,7 +259,7 @@ def verify(token): ``` -## Example 4 from Flask-Security-Too +## Example 3 from Flask-Security-Too [Flask-Security-Too](https://github.com/Flask-Middleware/flask-security/) ([PyPi page](https://pypi.org/project/Flask-Security-Too/) and [project documentation](https://flask-security-too.readthedocs.io/en/stable/)) @@ -338,9 +278,8 @@ The Flask-Security-Too project is provided as open source under the ```python # utils.py -from typing import Dict, List +import typing as t import warnings -from datetime import timedelta from urllib.parse import parse_qsl, parse_qs, urlsplit, urlunsplit, urlencode import urllib.request import urllib.error @@ -352,6 +291,7 @@ from flask import ( flash, g, request, + render_template, session, url_for, ) @@ -364,19 +304,20 @@ from flask_principal import AnonymousIdentity, Identity, identity_changed, Need from flask_wtf import csrf from wtforms import ValidationError ~~from itsdangerous import BadSignature, SignatureExpired +from werkzeug import __version__ as werkzeug_version from werkzeug.local import LocalProxy from werkzeug.datastructures import MultiDict from .quart_compat import best, get_quart_status +from .proxies import _security, _datastore, _pwd_context, _hashing_context from .signals import user_authenticated -_security = LocalProxy(lambda: current_app.extensions["security"]) +if t.TYPE_CHECKING: # pragma: no cover + from flask import Flask, Response + from .datastore import User -_datastore = LocalProxy(lambda: _security.datastore) +SB = t.Union[str, bytes] -_pwd_context = LocalProxy(lambda: _security.pwd_context) - -_hashing_context = LocalProxy(lambda: _security.hashing_context) localize_callback = LocalProxy(lambda: _security.i18n_domain.gettext) @@ -389,21 +330,20 @@ def _(translate): - ## ... source file abbreviated to get to BadSignature examples ... - if config_value("EMAIL_HTML"): - html = _security.render_template("%s/%s.html" % ctx, **context) - - subject = localize_callback(subject) - sender = _security.email_sender if isinstance(sender, LocalProxy): sender = sender._get_current_object() + if isinstance(sender, tuple) and len(sender) == 2: + sender = (str(sender[0]), str(sender[1])) + else: + sender = str(sender) + _security._mail_util.send_mail( - template, subject, recipient, str(sender), body, html, context.get("user", None) + template, subject, recipient, sender, body, html, context.get("user", None) ) @@ -432,8 +372,10 @@ def get_token_status(token, serializer, max_age=None, return_data=False): return expired, invalid, user -def check_and_get_token_status(token, serializer, within=None): - serializer = getattr(_security, serializer + "_serializer") +def check_and_get_token_status( + token: str, serializer_name: str, within: datetime.timedelta +) -> t.Tuple[bool, bool, t.Any]: + serializer = getattr(_security, serializer_name + "_serializer") max_age = within.total_seconds() data = None expired, invalid = False, False @@ -449,7 +391,7 @@ def check_and_get_token_status(token, serializer, within=None): return expired, invalid, data -def get_identity_attributes(app=None) -> List: +def get_identity_attributes(app: t.Optional["Flask"] = None) -> t.List[str]: app = app or current_app iattrs = app.config["SECURITY_USER_IDENTITY_ATTRIBUTES"] if iattrs: @@ -457,7 +399,9 @@ def get_identity_attributes(app=None) -> List: return [] -def get_identity_attribute(attr, app=None) -> Dict: +def get_identity_attribute( + attr: str, app: t.Optional["Flask"] = None +) -> t.Dict[str, t.Any]: app = app or current_app iattrs = app.config["SECURITY_USER_IDENTITY_ATTRIBUTES"] if iattrs: @@ -466,8 +410,6 @@ def get_identity_attribute(attr, app=None) -> Dict: ] if details: return details[0] - return {} - ## ... source file continues with no further BadSignature examples... diff --git a/content/pages/examples/flask/flask-signals-got-request-exception.markdown b/content/pages/examples/flask/flask-signals-got-request-exception.markdown index dcce6fb02..dc2a466c4 100644 --- a/content/pages/examples/flask/flask-signals-got-request-exception.markdown +++ b/content/pages/examples/flask/flask-signals-got-request-exception.markdown @@ -49,7 +49,10 @@ from types import MethodType from flask import url_for, request, current_app from flask import make_response as original_flask_make_response -from flask.helpers import _endpoint_from_view_func +try: + from flask.helpers import _endpoint_from_view_func +except ImportError: + from flask.scaffold import _endpoint_from_view_func ~~from flask.signals import got_request_exception from jsonschema import RefResolver @@ -63,54 +66,25 @@ from werkzeug.exceptions import ( NotAcceptable, InternalServerError, ) -from werkzeug.wrappers import BaseResponse + +from werkzeug import __version__ as werkzeug_version + +if werkzeug_version.split('.')[0] >= '2': + from werkzeug.wrappers import Response as BaseResponse +else: + from werkzeug.wrappers import BaseResponse from . import apidoc from .mask import ParseError, MaskError from .namespace import Namespace from .postman import PostmanCollectionV1 -from .resource import Resource -from .swagger import Swagger -from .utils import default_id, camel_to_dash, unpack -from .representations import output_json -from ._http import HTTPStatus - ## ... source file abbreviated to get to got_request_exception examples ... - except MethodNotAllowed as e: - valid_route_method = e.valid_methods[0] - rule, _ = adapter.match(method=valid_route_method, return_rule=True) - return self.owns_endpoint(rule.endpoint) - except NotFound: - return self.catch_all_404s - except Exception: - pass - - def _has_fr_route(self): - if self._should_use_fr_error_handler(): - return True - if not request.url_rule: - return False - return self.owns_endpoint(request.url_rule.endpoint) - - def error_router(self, original_handler, e): - if self._has_fr_route(): - try: - return self.handle_error(e) - except Exception as f: - return original_handler(f) - return original_handler(e) - - def handle_error(self, e): -~~ got_request_exception.send(current_app._get_current_object(), exception=e) - - if ( - not isinstance(e, HTTPException) and current_app.propagate_exceptions - and not isinstance(e, tuple(self.error_handlers.keys())) + and not isinstance(e, tuple(self._own_and_child_error_handlers.keys())) ): exc_type, exc_value, tb = sys.exc_info() @@ -130,6 +104,35 @@ from ._http import HTTPStatus if isinstance(e, typecheck): result = handler(e) default_data, code, headers = unpack( + result, HTTPStatus.INTERNAL_SERVER_ERROR + ) + break + else: +~~ got_request_exception.send(current_app._get_current_object(), exception=e) + + if isinstance(e, HTTPException): + code = HTTPStatus(e.code) + if include_message_in_response: + default_data = {"message": getattr(e, "description", code.phrase)} + headers = e.get_response().headers + elif self._default_error_handler: + result = self._default_error_handler(e) + default_data, code, headers = unpack( + result, HTTPStatus.INTERNAL_SERVER_ERROR + ) + else: + code = HTTPStatus.INTERNAL_SERVER_ERROR + if include_message_in_response: + default_data = { + "message": code.phrase, + } + + if include_message_in_response: + default_data["message"] = default_data.get("message", str(e)) + + data = getattr(e, "data", default_data) + fallback_mediatype = None + ## ... source file continues with no further got_request_exception examples... diff --git a/content/pages/examples/flask/flask-templating-render-template-string.markdown b/content/pages/examples/flask/flask-templating-render-template-string.markdown index ddddb67b9..7f74cb079 100644 --- a/content/pages/examples/flask/flask-templating-render-template-string.markdown +++ b/content/pages/examples/flask/flask-templating-render-template-string.markdown @@ -20,7 +20,7 @@ the `.templating` part. render_template is another callable from the `flask.templating` package with code examples. -You should read up on these subjects along with these `render_template_string` examples: +These subjects go along with the `render_template_string` code examples: * [template engines](/template-engines.html), specifically [Jinja2](/jinja2.html) * [Flask](/flask.html) and the concepts for [web frameworks](/web-frameworks.html) @@ -75,26 +75,26 @@ def test_themes_cant_access_configpy_attributes(): ## ... source file abbreviated to get to render_template_string examples ... - r = client.get("/themes/foo/static/js/pages/main.dev.js") + except TemplateNotFound: + pass + try: + r = client.get("/themes/foo_fallback/static/js/pages/main.dev.js") except TemplateNotFound: pass destroy_ctfd(app) - class ThemeFallbackConfig(TestingConfig): - THEME_FALLBACK = True - - app = create_ctfd(config=ThemeFallbackConfig) + app = create_ctfd() with app.app_context(): - set_config("ctf_theme", "foo") + set_config("ctf_theme", "foo_fallback") assert app.config["THEME_FALLBACK"] == True with app.test_client() as client: r = client.get("/") assert r.status_code == 200 - r = client.get("/themes/foo/static/js/pages/main.dev.js") + r = client.get("/themes/foo_fallback/static/js/pages/main.dev.js") assert r.status_code == 200 destroy_ctfd(app) - os.rmdir(os.path.join(app.root_path, "themes", "foo")) + os.rmdir(os.path.join(app.root_path, "themes", "foo_fallback")) def test_theme_template_loading_by_prefix(): @@ -110,9 +110,10 @@ def test_theme_template_disallow_loading_admin_templates(): with app.app_context(): try: filename = os.path.join( - app.root_path, "themes", "foo", "admin", "malicious.html" + app.root_path, "themes", "foo_disallow", "admin", "malicious.html" ) os.makedirs(os.path.dirname(filename), exist_ok=True) + set_config("ctf_theme", "foo_disallow") with open(filename, "w") as f: f.write("malicious") @@ -120,7 +121,8 @@ def test_theme_template_disallow_loading_admin_templates(): ~~ render_template_string("{% include 'admin/malicious.html' %}") finally: shutil.rmtree( - os.path.join(app.root_path, "themes", "foo"), ignore_errors=True + os.path.join(app.root_path, "themes", "foo_disallow"), + ignore_errors=True, ) diff --git a/content/pages/examples/flask/flask-templating-render-template.markdown b/content/pages/examples/flask/flask-templating-render-template.markdown index ed4c35fdf..9d320fab4 100644 --- a/content/pages/examples/flask/flask-templating-render-template.markdown +++ b/content/pages/examples/flask/flask-templating-render-template.markdown @@ -21,7 +21,7 @@ the `.templating` part. render_template_string is another callable from the `flask.templating` package with code examples. -These subjects go along with the `render_template` code examples: +These topics are also useful while reading the `render_template` examples: * [template engines](/template-engines.html), specifically [Jinja2](/jinja2.html) * [Flask](/flask.html) and the concepts for [web frameworks](/web-frameworks.html) @@ -167,25 +167,25 @@ def test_themes_cant_access_configpy_attributes(): ## ... source file abbreviated to get to render_template examples ... + pass + try: + r = client.get("/themes/foo_fallback/static/js/pages/main.dev.js") except TemplateNotFound: pass destroy_ctfd(app) - class ThemeFallbackConfig(TestingConfig): - THEME_FALLBACK = True - - app = create_ctfd(config=ThemeFallbackConfig) + app = create_ctfd() with app.app_context(): - set_config("ctf_theme", "foo") + set_config("ctf_theme", "foo_fallback") assert app.config["THEME_FALLBACK"] == True with app.test_client() as client: r = client.get("/") assert r.status_code == 200 - r = client.get("/themes/foo/static/js/pages/main.dev.js") + r = client.get("/themes/foo_fallback/static/js/pages/main.dev.js") assert r.status_code == 200 destroy_ctfd(app) - os.rmdir(os.path.join(app.root_path, "themes", "foo")) + os.rmdir(os.path.join(app.root_path, "themes", "foo_fallback")) def test_theme_template_loading_by_prefix(): @@ -201,9 +201,10 @@ def test_theme_template_disallow_loading_admin_templates(): with app.app_context(): try: filename = os.path.join( - app.root_path, "themes", "foo", "admin", "malicious.html" + app.root_path, "themes", "foo_disallow", "admin", "malicious.html" ) os.makedirs(os.path.dirname(filename), exist_ok=True) + set_config("ctf_theme", "foo_disallow") with open(filename, "w") as f: f.write("malicious") @@ -211,7 +212,8 @@ def test_theme_template_disallow_loading_admin_templates(): render_template_string("{% include 'admin/malicious.html' %}") finally: shutil.rmtree( - os.path.join(app.root_path, "themes", "foo"), ignore_errors=True + os.path.join(app.root_path, "themes", "foo_disallow"), + ignore_errors=True, ) @@ -869,11 +871,15 @@ in Python scripts created by a developer. import os import uuid from importlib.util import module_from_spec, spec_from_file_location +from itertools import groupby +from operator import itemgetter import orjson from bs4 import BeautifulSoup +from bs4.element import Tag from bs4.formatter import HTMLFormatter -~~from flask import render_template, current_app, jsonify +~~from flask import current_app, jsonify, render_template +from jinja2.exceptions import TemplateNotFound def convert_to_snake_case(s): @@ -899,11 +905,9 @@ def get_component_module(module_name): user_specified_dir = current_app.config.get("MELD_COMPONENT_DIR", None) - ## ... source file abbreviated to get to render_template examples ... - func for func in dir(self) if callable(getattr(self, func)) and not func.startswith("_") @@ -928,7 +932,10 @@ def get_component_module(module_name): return self._view(component_name) def _render_template(self, template_name: str, context_variables: dict): -~~ return render_template(template_name, **context_variables) + try: +~~ return render_template(template_name, **context_variables) + except TemplateNotFound: +~~ return render_template(f"meld/{template_name}", **context_variables) def _view(self, component_name: str): data = self._attributes() @@ -939,7 +946,7 @@ def get_component_module(module_name): context_variables.update({"form": self._form}) rendered_template = self._render_template( - f"meld/{component_name}.html", context_variables + f"{component_name}.html", context_variables ) soup = BeautifulSoup(rendered_template, features="html.parser") @@ -1218,114 +1225,7 @@ def paySuccess(): ``` -## Example 13 from Flask-Security-Too -[Flask-Security-Too](https://github.com/Flask-Middleware/flask-security/) -([PyPi page](https://pypi.org/project/Flask-Security-Too/) and -[project documentation](https://flask-security-too.readthedocs.io/en/stable/)) -is a maintained fork of the original -[Flask-Security](https://github.com/mattupstate/flask-security) project that -makes it easier to add common security features to [Flask](/flask.html) -web applications. A few of the critical goals of the Flask-Security-Too -project are ensuring JavaScript client-based single-page applications (SPAs) -can work securely with Flask-based backends and that guidance by the -[OWASP](https://owasp.org/) organization is followed by default. - -The Flask-Security-Too project is provided as open source under the -[MIT license](https://github.com/Flask-Middleware/flask-security/blob/master/LICENSE). - -[**Flask-Security-Too / flask_security / core.py**](https://github.com/Flask-Middleware/flask-security/blob/master/flask_security/./core.py) - -```python -# core.py - -from datetime import datetime, timedelta -import warnings - -import pkg_resources -~~from flask import _request_ctx_stack, current_app, render_template -from flask_login import AnonymousUserMixin, LoginManager -from flask_login import UserMixin as BaseUserMixin -from flask_login import current_user -from flask_principal import Identity, Principal, RoleNeed, UserNeed, identity_loaded -from itsdangerous import URLSafeTimedSerializer -from passlib.context import CryptContext -from werkzeug.datastructures import ImmutableList -from werkzeug.local import LocalProxy - -from .babel import get_i18n_domain, have_babel -from .decorators import ( - default_reauthn_handler, - default_unauthn_handler, - default_unauthz_handler, -) -from .forms import ( - ChangePasswordForm, - ConfirmRegisterForm, - ForgotPasswordForm, - LoginForm, - PasswordlessLoginForm, - RegisterForm, - ResetPasswordForm, - SendConfirmationForm, - - -## ... source file abbreviated to get to render_template examples ... - - - sms_service = cv("SMS_SERVICE", app=app) - if sms_service == "Twilio": # pragma: no cover - self._check_modules("twilio", "SMS") - if state.phone_util_cls == PhoneUtil: - self._check_modules("phonenumbers", "SMS") - - secrets = cv("TOTP_SECRETS", app=app) - issuer = cv("TOTP_ISSUER", app=app) - if not secrets or not issuer: - raise ValueError("Both TOTP_SECRETS and TOTP_ISSUER must be set") - state.totp_factory(state.totp_cls(secrets, issuer)) - - if cv("PASSWORD_COMPLEXITY_CHECKER", app=app) == "zxcvbn": - self._check_modules("zxcvbn", "PASSWORD_COMPLEXITY_CHECKER") - return state - - def _check_modules(self, module, config_name): # pragma: no cover - from importlib.util import find_spec - - module_exists = find_spec(module) - if not module_exists: - raise ValueError(f"{module} is required for {config_name}") - - return module_exists - -~~ def render_template(self, *args, **kwargs): -~~ return render_template(*args, **kwargs) - - def render_json(self, cb): - self._state._render_json = cb - - def want_json(self, fn): - self._state._want_json = fn - - def unauthz_handler(self, cb): - self._state._unauthz_handler = cb - - def unauthn_handler(self, cb): - self._state._unauthn_handler = cb - - def reauthn_handler(self, cb): - self._state._reauthn_handler = cb - - def __getattr__(self, name): - return getattr(self._state, name, None) - - - -## ... source file continues with no further render_template examples... - -``` - - -## Example 14 from Flask-SocketIO +## Example 13 from Flask-SocketIO [Flask-SocketIO](https://github.com/miguelgrinberg/Flask-SocketIO) ([PyPI package information](https://pypi.org/project/Flask-SocketIO/), [official tutorial](https://blog.miguelgrinberg.com/post/easy-websockets-with-flask-and-gevent) @@ -1401,7 +1301,7 @@ def get_session(): ``` -## Example 15 from Flask-User +## Example 14 from Flask-User [Flask-User](https://github.com/lingthio/Flask-User) ([PyPI information](https://pypi.org/project/Flask-User/) and @@ -1493,7 +1393,7 @@ class EmailManager(object): ``` -## Example 16 from Flasky +## Example 15 from Flasky [Flasky](https://github.com/miguelgrinberg/flasky) is a wonderful example application by [Miguel Grinberg](https://github.com/miguelgrinberg) that he builds @@ -1533,7 +1433,7 @@ def send_email(to, subject, template, **kwargs): ``` -## Example 17 from Datadog Flask Example App +## Example 16 from Datadog Flask Example App The [Datadog Flask example app](https://github.com/DataDog/trace-examples/tree/master/python/flask) contains many examples of the [Flask](/flask.html) core functions available to a developer using the [web framework](/web-frameworks.html). @@ -1635,7 +1535,7 @@ app.url_map.add(Rule('/custom-endpoint/', endpoint='custom-endpoint')) ``` -## Example 18 from indico +## Example 17 from indico [indico](https://github.com/indico/indico) ([project website](https://getindico.io/), [documentation](https://docs.getindico.io/en/stable/installation/) @@ -1663,7 +1563,7 @@ class MathjaxMixin: ``` -## Example 19 from keras-flask-deploy-webapp +## Example 18 from keras-flask-deploy-webapp The [keras-flask-deploy-webapp](https://github.com/mtobeiyf/keras-flask-deploy-webapp) project combines the [Flask](/flask.html) [web framework](/web-frameworks.html) @@ -1755,7 +1655,7 @@ if __name__ == '__main__': ``` -## Example 20 from newspie +## Example 19 from newspie [NewsPie](https://github.com/skamieniarz/newspie) is a minimalistic news aggregator created with [Flask](/flask.html) and the [News API](https://newsapi.org/). @@ -1771,6 +1671,7 @@ import configparser import json import logging import os +from typing import Union import requests import requests_cache @@ -1796,15 +1697,16 @@ requests_cache.install_cache(cache_name='news_cache', expire_after=300) APP = Flask(__name__) +SESSION = requests.Session() +SESSION.headers.update({'Authorization': API_KEY}) -@APP.route('/', methods=['GET', 'POST']) -def root(): ## ... source file abbreviated to get to render_template examples ... + return redirect(url_for('category', category='general', page=1)) @APP.route('/category/', methods=['GET', 'POST']) @@ -1819,14 +1721,13 @@ def category(category): country = get_cookie('country') if country is not None: params.update({'country': country}) - response = requests.get(TOP_HEADLINES, - params=params, - headers={'Authorization': API_KEY}) + response = SESSION.get(TOP_HEADLINES, params=params) if response.status_code == 200: pages = count_pages(response.json()) if page > pages: page = pages - return redirect(url_for('category', category=category, page=page)) + return redirect( + url_for('category', category=category, page=page)) articles = parse_articles(response.json()) return render(articles, page, pages, country, category) elif response.status_code == 401: @@ -1835,7 +1736,7 @@ def category(category): @APP.route('/search/', methods=['GET', 'POST']) -def search(query): +def search(query: str): page = request.args.get('page', default=1, type=int) if page < 1: return redirect(url_for('search', query=query, page=1)) @@ -1847,19 +1748,20 @@ def search(query): } if request.method == 'POST': return do_post(page, category='search', current_query=query) - response = requests.get(EVERYTHING, - params=params, - headers={'Authorization': API_KEY}) + response = SESSION.get(EVERYTHING, params=params) pages = count_pages(response.json()) if page > pages: page = pages return redirect(url_for('search', query=query, page=page)) articles = parse_articles(response.json()) + return render(articles, + page, ## ... source file abbreviated to get to render_template examples ... + parsed_articles = [] if response.get('status') == 'ok': for article in response.get('articles'): parsed_articles.append({ @@ -1876,11 +1778,10 @@ def search(query): return parsed_articles -def count_pages(response): - pages = 0 +def count_pages(response: dict) -> int: if response.get('status') == 'ok': - pages = (-(-response.get('totalResults', 0) // PAGE_SIZE)) - return pages + return (-(-response.get('totalResults', 0) // PAGE_SIZE)) + return 0 def render(articles, page, pages, country, category): @@ -1895,9 +1796,8 @@ def render(articles, page, pages, country, category): pages=pages) -def get_cookie(key): - cookie_value = request.cookies.get(key) - return cookie_value +def get_cookie(key: str) -> Union[str, None]: + return request.cookies.get(key) if __name__ == '__main__': @@ -1910,7 +1810,7 @@ if __name__ == '__main__': ``` -## Example 21 from Science Flask +## Example 20 from Science Flask [Science Flask](https://github.com/danielhomola/science_flask) is a [Flask](/flask.html)-powered web application for online scientific research tools. The project was built as a template @@ -2198,7 +2098,7 @@ def static_from_root(): ``` -## Example 22 from tedivms-flask +## Example 21 from tedivms-flask [tedivm's flask starter app](https://github.com/tedivm/tedivms-flask) is a base of [Flask](/flask.html) code and related projects such as [Celery](/celery.html) which provides a template to start your own @@ -2301,7 +2201,7 @@ def init_error_handlers(app): ``` -## Example 23 from trape +## Example 22 from trape [trape](https://github.com/jofpin/trape) is a research tool for tracking people's activities that are logged digitally. The tool uses [Flask](/flask.html) to create a web front end to view aggregated data @@ -2319,6 +2219,7 @@ import os ~~from flask import Flask, render_template, session, request, json, redirect, url_for, send_from_directory from flask_cors import CORS from trape import Trape +import urllib from core.db import Database trape = Trape(1) @@ -2342,7 +2243,6 @@ def index(): return trape.injectCSS_Paths(render_template("/login.html").replace('[LOGIN_SRC]', trape.JSFiles[2]['src']).replace('[LIBS_SRC]', trape.JSFiles[1]['src'])) - ## ... source file abbreviated to get to render_template examples ... diff --git a/content/pages/examples/flask/flask-views-methodview.markdown b/content/pages/examples/flask/flask-views-methodview.markdown index 00e7805b0..c0e34c8e9 100644 --- a/content/pages/examples/flask/flask-views-methodview.markdown +++ b/content/pages/examples/flask/flask-views-methodview.markdown @@ -19,7 +19,7 @@ and http_method_funcs are a couple of other callables within the `flask.views` package that also have code examples. -These topics are also useful while reading the `MethodView` examples: +You should read up on these subjects along with these `MethodView` examples: * [web development](/web-development.html) and [web design](/web-design.html) * [web framework concepts](/web-frameworks.html) and the [Flask framework](/flask.html) @@ -430,7 +430,12 @@ from __future__ import unicode_literals from flask import request ~~from flask.views import MethodView -from werkzeug.wrappers import BaseResponse +from werkzeug import __version__ as werkzeug_version + +if werkzeug_version.split('.')[0] >= '2': + from werkzeug.wrappers import Response as BaseResponse +else: + from werkzeug.wrappers import BaseResponse from .model import ModelBase From 82c8ed4d879050060ce164a19151b36dd543dc83 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Tue, 21 Sep 2021 06:39:30 -0400 Subject: [PATCH 35/42] update heroku resources --- .../pages/05-deployment/10-heroku.markdown | 9 ++++++++- .../pages/10-working/18-developer-demos.md | 19 ++++++++++--------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/content/pages/05-deployment/10-heroku.markdown b/content/pages/05-deployment/10-heroku.markdown index 63aad7441..06c1d7bcb 100644 --- a/content/pages/05-deployment/10-heroku.markdown +++ b/content/pages/05-deployment/10-heroku.markdown @@ -21,7 +21,14 @@ easily [deploy](/deployment.html) Python applications. [MySQL](/mysql.html) to [PostgreSQL](/postgresql.html) if necessary as well as how to properly handle your settings files. -* Heroku's +* [How to deploy Django project to Heroku using Docker](https://www.accordbox.com/blog/deploy-django-project-heroku-using-docker/) + explains that although [Buildpacks](https://devcenter.heroku.com/articles/buildpacks) + are the most common way to deploy to Heroku, packaing your app in a + [Docker](/docker.html) container is also a viable approach. It walks through + the steps needed to deploy a [Django](/django.html) app in the remainder + of the article. + +* Heroku's [official Python documentation](https://devcenter.heroku.com/articles/getting-started-with-python) is fantastic and walks through deploying WSGI applications in short order. diff --git a/content/pages/10-working/18-developer-demos.md b/content/pages/10-working/18-developer-demos.md index aa82c988c..a195edfdc 100644 --- a/content/pages/10-working/18-developer-demos.md +++ b/content/pages/10-working/18-developer-demos.md @@ -9,18 +9,19 @@ meta: How to give technical demos to software developers. Creating and executing an appealing technical demo to an audience of software developers is a ton of work, but there is no better way to get people -legitimately interested in your product if you land a great demo. The -inherent difficulty involved in exceptional technical demos also creates -a large moat that prevent others from easily copying the work you put into -the demo. +legitimately interested in your product if you land a great demo with +an appropriate audience. The inherent difficulty involved in exceptional +technical demos also creates a large barrier that prevent others from simply +copying your work, which can happen with technical blog content. -The most important parts to a standout technical demo are: +To achieve a standout technical demo you must: -1. show how to solve a difficult technical problem, as easily as possible -1. take the audience on a story arc -1. do it live (especially if you include code) -1. rehearse constantly, both happy path and recovering from errors +1. show how to easily solve a difficult technical problem 1. speak plainly but accurately +1. do it live, including writing code if required +1. tell a story with a narrative arc +1. rehearse constantly, both the happy path and recovering from errors + Examples: * [Twilio Phone Calls Demo at NY Tech Meetup (2010)](https://www.youtube.com/watch?v=-VuXIgp9S7o) From 145033d8b5b4b2c38b0d90f626fff846c355a57b Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Sun, 26 Sep 2021 08:39:14 -0400 Subject: [PATCH 36/42] remove walled garden learning programming resource --- .../pages/01-introduction/01-learning-programming.markdown | 5 ----- content/pages/meta/00-change-log.markdown | 4 ++++ 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/content/pages/01-introduction/01-learning-programming.markdown b/content/pages/01-introduction/01-learning-programming.markdown index 83a5ac56c..08f676d8e 100644 --- a/content/pages/01-introduction/01-learning-programming.markdown +++ b/content/pages/01-introduction/01-learning-programming.markdown @@ -140,11 +140,6 @@ give example paths you can think about taking as a beginner: including persistence, respecting others and considering ideas that are outside your comfort zone. -* [Mastering programming](https://www.facebook.com/notes/kent-beck/mastering-programming/1184427814923414) - by [Kent Beck](https://en.wikipedia.org/wiki/Kent_Beck) contains - patterns and observations for how experienced programmers he has worked - with in the past became great software developers. - * [This Picture Will Change the Way You Learn to Code](https://dev.to/nextdotxyz/this-picture-will-change-the-way-you-learn-tocode-4kmh) covers a well done graphics of many up-to-date concepts and tools that developers use. The post reminds you that you will not and should not learn diff --git a/content/pages/meta/00-change-log.markdown b/content/pages/meta/00-change-log.markdown index 4e19b4cb0..edff17e51 100644 --- a/content/pages/meta/00-change-log.markdown +++ b/content/pages/meta/00-change-log.markdown @@ -14,6 +14,10 @@ view commit-level changes via the on GitHub. ## 2021 +### September +* Clean up continues across the site to remove link rot and replace + out-of-date links with newer ones where necessary. + ### August * New blog post on [Application Performance Monitoring AWS Lambda Functions with Sentry](/blog/application-performance-monitoring-aws-lambda-functions-sentry.html). From 8bc5b24208bb66ec6213c1156de0109826f703c1 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Tue, 5 Oct 2021 11:52:33 -0400 Subject: [PATCH 37/42] remove plausible for now --- theme/templates/base.html | 1 - 1 file changed, 1 deletion(-) diff --git a/theme/templates/base.html b/theme/templates/base.html index e88241418..6c14fbb83 100644 --- a/theme/templates/base.html +++ b/theme/templates/base.html @@ -7,7 +7,6 @@ {% block meta_header %}{% endblock %} {% block title %}{% endblock %}Full Stack Python {% block css %}{% endblock %} - {% block banner %}{% endblock %} From 440d71643623afd875b5e5da5eef9f1c2cf5afcd Mon Sep 17 00:00:00 2001 From: mw-orcl <54512672+mw-orcl@users.noreply.github.com> Date: Sat, 5 Feb 2022 13:43:56 -0800 Subject: [PATCH 38/42] Created Oracle content Contains Oracle database content for Python developers --- content/pages/03-data/25-oracle.markdown | 160 +++++++++++++++++++++ static/img/logos/oracle.jpg | Bin 0 -> 39157 bytes static/img/visuals/cx-oracle.jpg | Bin 0 -> 62352 bytes static/img/visuals/oracle-orm-examples.jpg | Bin 0 -> 73616 bytes 4 files changed, 160 insertions(+) create mode 100644 content/pages/03-data/25-oracle.markdown create mode 100644 static/img/logos/oracle.jpg create mode 100644 static/img/visuals/cx-oracle.jpg create mode 100644 static/img/visuals/oracle-orm-examples.jpg diff --git a/content/pages/03-data/25-oracle.markdown b/content/pages/03-data/25-oracle.markdown new file mode 100644 index 000000000..98de1a59d --- /dev/null +++ b/content/pages/03-data/25-oracle.markdown @@ -0,0 +1,160 @@ +title: Oracle +category: page +slug: Oracle +sortorder: 0325 +toc: False +sidebartitle: Oracle +meta: Oracle Database is the market-leading database for mission-critical enterprise applications. + + +[Oracle](http://www.oracle.com/) Database is the market-leading database for mission-critical enterprise applications. It can run transaction processing, data warehousing, and multi-model database workloads such as machine learning, spatial, and graph. Recently, Oracle Database added support for JSON and blockchain use cases. The Oracle Database fully supports on-premises, cloud, and hybrid cloud deployments. + +Oracle logo. + + +## How does Oracle fit with Python? +The Python community and Oracle have a long history. The excellent Python Database API-compliant "cx_Oracle" interface for Oracle Database was first created by the user community in 1998 and is now being enhanced and maintained by Oracle. The [cx_Oracle](https://oracle.github.io/python-cx_Oracle/) module also underpins the [Oracle Machine Learning for Python](https://www.youtube.com/watch?v=P861m__PEMQ) engine. Oracle's high-performance GraalVM framework supports an implementation of Python called [GraalPython](https://github.com/oracle/graalpython). + + +## Why is Oracle Database a great choice? +Oracle Database is cross-platform, supporting multiple hardware platforms and various operating systems. Developers and companies of all sizes rely on its proven industry-leading performance, scalability, reliability, and security. +As data volumes rise exponentially, new data types and data models are required to support modern applications. Oracle Database supports the following data types at no extra cost: + +* [JSON](https://docs.oracle.com/en/database/oracle/oracle-database/19/adjsn/index.html) +* [Blockchain](https://docs.oracle.com/en/database/oracle/oracle-database/21/nfcon/details-oracle-blockchain-table-282449857.html) +* [XML](https://www.oracle.com/database/technologies/appdev/xmldb.html) +* [Object](https://docs.oracle.com/database/121/ADOBJ/adobjint.htm#ADOBJ00101) +* [Graph](https://www.oracle.com/database/graph/) +* [Spatial](https://www.oracle.com/database/spatial/) +* [Time Series](https://docs.oracle.com/en/database/oracle/oracle-database/19/dmcon/time-series.html) +* Relational + +With support for scale-out database clusters, sharded distributed systems, and disaster recovery with continuous application availability, there is no shortage of features to guarantee the Database continues to run uninterrupted 24/7. + +Oracle makes its enterprise-class database readily available to developers with its free on-premises edition Oracle Database XE or on the Oracle public cloud with an Always Free Cloud account. In addition, Oracle Autonomous Database is a popular choice for developers as no database management or tuning is required, leaving developers to do what they do best – writing code for their applications. + + +## Connecting to Oracle Database with Python +As with any database, applications require a connector or driver to connect to the Oracle Database. The Python DB API-compliant [cx_Oracle](https://github.com/oracle/python-cx_Oracle) interface provides developers access to standard and advanced Oracle Database features, such as SQL execution and document storage APIs. It also gives users access to network traffic encryption capabilities and Oracle's leading high availability features. + +[Code examples](https://oracle.github.io/python-cx_Oracle/samples/tutorial/Python-and-Oracle-Database-Scripting-for-the-Future.html) and free workshops such as the introductory [Python and Oracle for Developers Workshop](https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/view-workshop?wid=766) and a full-stack development workshop using [Python with SQLAlchemy to Oracle Database](https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/view-workshop?wid=911&clear=180&session=16650643444916) are available. + +cx Oracle driver. + +You can use many Python frameworks and [object-relational mappers (ORMs)](/object-relational-mappers-orms.html) with Oracle Database. ORMs abstract the tables and objects in a relational database to objects that Python developers can manipulate and operate on. [SQLAlchemy](/sqlalchemy.html) and Django are popular ORMs. SQLAlchemy is used by Pandas, which is very popular with Oracle users. +The table below shows the relationship between web framework, ORM, driver, and the Oracle Database. + +Examples of how varying Python ORMs can work with Oracle and the cx Oracle connector. + +Learn more about +[Python ORMs on that dedicated topic page](/object-relational-mappers-orms.html). + +ORMs provide a familiar programming model for Python developers, but sometimes you want that extra performance and operate closer to SQL objects. Oracle cx_Oracle offers several [functions](https://oracle.github.io/python-cx_Oracle/samples/tutorial/Python-and-Oracle-Database-Scripting-for-the-Future.html#binding) to deliver that performance. These functions include fetching data, binding data, executing PL/SQL, operating on LOBs, JSON documents, message passing with Oracle Advanced Queuing, and more. + + +## Oracle and Data Safety +According to Gartner, Oracle has one of the [highest data safety ratings](https://www.gartner.com/reviews/market/cloud-database-management-systems/vendor/oracle/product/oracle-database) in the industry, with a wide range of features for data protection and high availability. These features include: + +* [Database encryption](https://www.oracle.com/database/technologies/security/advanced-security.html) + +* [Access control to rows](https://www.oracle.com/database/technologies/security/label-security.html) in a table + +* [Database vault](https://www.oracle.com/database/technologies/security/db-vault.html) to restrict privileges and access + +* [Data redaction, subsetting, and masking](https://www.oracle.com/database/technologies/security/data-masking-subsetting.html) + +* All in one data security service in the Oracle Cloud with [Data Safe](https://www.oracle.com/database/technologies/security/data-safe.html) + +* Oracle also provides free tools such as the [Database Assessment Tool (DBSAT)](https://www.oracle.com/database/technologies/security/dbsat.html) to help you identify and remedy potential vulnerabilities. + +Oracle also provides numerous data recovery features, including: + +* Backup capabilities with [RMAN](https://www.oracle.com/database/technologies/high-availability/rman.html) + +* Restore point features with [Database Flashback](https://www.oracle.com/database/technologies/high-availability/flashback.html) + +* [Application continuity](https://www.oracle.com/database/technologies/high-availability/app-continuity.html) in the event of database failover to a standby + +For an overview of Oracle’s security and high availability architecture, see the following white papers: + +* [Maximum Availability Architecture](https://www.oracle.com/a/tech/docs/maa-onpremises-overview.pdf) (MAA) + +* [Maximum Security Architecture](https://blogs.oracle.com/cloudsecurity/post/oracles-maximum-security-architecture-for-database-security) (MSA) + + +## Python Specific Oracle Database resources +Many quick starts, tutorials, and workshops exist specifically for Python developers using Oracle Database. Below are some of the best ones to start with. + + +###Getting Started +If you are looking for a fast way to get started with Python and Oracle Database, check out these two quick start tutorials. These tutorials walk you through installing and setting up the environment you need to connect Python to Oracle Database. + +* [Quick Start: Developing Python Applications for Oracle Database](https://www.oracle.com/database/technologies/appdev/python/quickstartpythononprem.html) + +* [Quick Start: Developing Python Applications for Oracle Autonomous Database](https://www.oracle.com/database/technologies/appdev/python/quickstartpythononprem.html) + +Once you have done one of these, then continue with the popular [Python and Oracle Database Tutorial: Scripting for the Future](https://oracle.github.io/python-cx_Oracle/samples/tutorial/Python-and-Oracle-Database-Scripting-for-the-Future.html) to dive deeper to master the Python cx_Oracle interface and see how to build great Oracle Database applications. + + +###Using Different Frameworks with Oracle +* [How to Run SQL Queries with Pandas](https://www.oracle.com/news/connect/run-sql-data-queries-with-pandas.html) is a good blog using Pandas for quick and easy data manipulation in Python. + +* [Using Oracle with Pandas in OCI Data Science Notebooks](https://docs.oracle.com/en-us/iaas/tools/ads-sdk/latest/user_guide/loading_data/efficient_use_of_oracle_rdbms_with_ads.html) dives deeper into using Pandas with large datasets in data science applications. + +* [Using SQLAlchemy with Oracle Database](https://docs.sqlalchemy.org/en/14/dialects/oracle.html) provides an excellent toolkit for Python developers using SQLAlchemy as their ORM. + +* [Using Django with Python and Oracle Database](https://www.oracle.com/webfolder/technetwork/tutorials/obe/db/oow10/python_django/python_django.htm) is a tutorial from Oracle and shows the Django Framework with Python to an Oracle Database. + +* [Connecting Pony ORM to the Database](https://docs.ponyorm.org/database.html) is a friendly guide on using Pony with databases. + +* [How to use Python Flask with Oracle Database](https://blogs.oracle.com/opal/post/how-to-use-python-flask-with-oracle-database). + +* [Part 1: Docker for Oracle Database Applications in Node.js and Python](https://blogs.oracle.com/opal/post/part-1-docker-for-oracle-database-applications-in-nodejs-and-python). + +* [Part 2: Docker for Oracle Database Applications in Node.js and Python](https://blogs.oracle.com/opal/post/part-2-docker-for-oracle-database-applications-in-nodejs-and-python). + +* [Faster JSON with Python cx_Oracle and Oracle Database 21’s new OSON storage format](https://blogs.oracle.com/opal/post/faster-json-with-python-cx_oracle-81-and-oracle-database-21s-new-oson-storage-format). + + +###Workshops +The following hands-on, free workshops provide step-by-step instructions and walkthroughs in a live environment. + +* [Use Python with Oracle Database 19c](https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/view-workshop?wid=635&clear=180&session=3484600041895) is an Oracle LiveLabs workshop that shows how to write Python code to connect to and read data from an Oracle Database, including JSON data. + +* [Python and Oracle for Developers](https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/workshop-attendee-2?p210_workshop_id=766&p210_type=2&session=3484600041895) is an Oracle LiveLabs workshop that explores the features of the Python cx_Oracle interface for Oracle Database, including efficient techniques for connection management and statement handling. + +* [Full Stack Development using Python and deployment via OKE](https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/view-workshop?wid=911&clear=180&session=3484600041895) is an Oracle LiveLabs workshop that explores how to build and deploy a simple cloud-native application using the most common frameworks and the Oracle Cloud Infrastructure services. + + +## Cloud Development with Oracle Database +The following resources are good starting points for those looking to build applications in the Oracle Cloud and deploy applications in Docker containers and Kubernetes. + +* [The Complete Guide To Getting Up And Running With Docker And Kubernetes On The Oracle Cloud](https://blogs.oracle.com/developers/post/the-complete-guide-to-getting-up-and-running-with-docker-and-kubernetes-on-the-oracle-cloud). + +* [Oracle Cloud Blog](https://www.oc-blog.com/) has lots of interesting information on different aspects of Oracle Cloud. + +For developers looking to focus on application development in the Oracle Cloud and not have to worry about managing the Oracle Database, the Autonomous Database is a good choice. All management, including patching and upgrades, scalability, and security, are entirely autonomous. The following resources offer you a glimpse of its capabilities. + +* [Julien Dontcheff’s Database Blog](https://juliandontcheff.wordpress.com/category/autonomous/) is a good collection of technical posts with the Autonomous Database. + +* [SQL Maria](https://sqlmaria.com/category/autonomous-database/) also has some excellent posts on all things Oracle Database including Autonomous. + +* [An Introduction to Autonomous Database](https://questoraclecommunity.org/learn/blogs/oracles-autonomous-database-an-introduction/) gives you a good overview. + +* [Autonomous Database for researchers](https://blogs.oracle.com/research/post/a-roadmap-of-oracle-autonomous-database-benefits-for-research) is a good blog with details on some autonomous features. + + +##General Oracle Database Resources +Here are some Oracle tutorials and resources not specific to Python that can help you take advantage of the Oracle Database features. + +* [Oracle Technical Architecture](https://www.oracle.com/webfolder/technetwork/tutorials/architecture-diagrams/18/technical-architecture/database-technical-architecture.html) is from Oracle and has nice visuals and short paragraphs on the architecture of the Oracle Database. + +* [Oracle Database Internals](https://databaseinternalmechanism.com/oracle-database-internals/) is an excellent post explaining the architecture of the Oracle Database. + +* This [Oracle Performance Tuning](https://blog.quest.com/oracle-performance-tuning-a-5-step-approach-to-optimized-performance/) blog has a 5-step approach to tuning Oracle. + +* [Oracle RAC](https://databaseinternalmechanism.com/oracle-rac/) is another good post on the concepts of RAC, Oracle’s Real Application Cluster software for database high availability. + +* The [Oracle Database Security](https://www.oracle.com/database/technologies/security.html) web page has lots of information on Oracle’s solutions for security called “defense in depth.” + +* This is a good post on the [Top 5 Reasons to choose Oracle](https://www.dbta.com/Editorial/News-Flashes/Top-5-Reasons-to-Use-an-Oracle-Database-144191.aspx) for a production database. diff --git a/static/img/logos/oracle.jpg b/static/img/logos/oracle.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6e8fec3612a95c9ff3c7d631d26d8d0630c06e11 GIT binary patch literal 39157 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 Jfa7QX{{TjsR?+|f literal 0 HcmV?d00001 diff --git a/static/img/visuals/cx-oracle.jpg b/static/img/visuals/cx-oracle.jpg new file mode 100644 index 0000000000000000000000000000000000000000..878e7d285331f1e3781b813ca0a5e3b16cfe7f36 GIT binary patch literal 62352 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 literal 0 HcmV?d00001 diff --git a/static/img/visuals/oracle-orm-examples.jpg b/static/img/visuals/oracle-orm-examples.jpg new file mode 100644 index 0000000000000000000000000000000000000000..adae67764f39c1407bd8efa708c679a5c7f1921a GIT binary patch literal 73616 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℘y}P}&2cR;$*Trhjp<@T2r&QZ!c)7xS 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 Nf&U-h52nA<{|&aY|B?Uz literal 0 HcmV?d00001 From df0c15caa84ab072cb0eaebb6bd3b8f326b27424 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Sun, 20 Feb 2022 09:03:55 -0500 Subject: [PATCH 39/42] tweaking site layout to make it faster --- content/pages/meta/00-change-log.markdown | 9 +++++++++ static/img/logos/cloudflare.png | Bin 0 -> 20499 bytes theme/templates/base.html | 2 +- theme/templates/css/base.css | 2 +- theme/templates/index-sidebar.html | 1 - theme/templates/index.html | 7 +++---- theme/templates/nav.html | 2 +- theme/templates/subnav.html | 2 -- 8 files changed, 15 insertions(+), 10 deletions(-) create mode 100644 static/img/logos/cloudflare.png diff --git a/content/pages/meta/00-change-log.markdown b/content/pages/meta/00-change-log.markdown index edff17e51..04dcae5a6 100644 --- a/content/pages/meta/00-change-log.markdown +++ b/content/pages/meta/00-change-log.markdown @@ -13,7 +13,16 @@ view commit-level changes via the [source repository's commit log](https://github.com/mattmakai/fullstackpython.com/commits/) on GitHub. +## 2022 +### February +* Still on break, but updated the header and footer. Also made some website + tweaks to make it faster. + ## 2021 +### October +* Taking a break for a few months to recharge and work on a different coding + side project that I'm excited about. Be back in a few months with some updates. + ### September * Clean up continues across the site to remove link rot and replace out-of-date links with newer ones where necessary. diff --git a/static/img/logos/cloudflare.png b/static/img/logos/cloudflare.png new file mode 100644 index 0000000000000000000000000000000000000000..b6a18d47ed9551f225d998cc8583cc748b73756f GIT binary patch literal 20499 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

{% block lower_banner %}{% endblock %} - + {% block bottom_banner %}{% endblock %} {% block js %}{% endblock %} diff --git a/theme/templates/css/base.css b/theme/templates/css/base.css index 06a5ef2ed..5a7ff8055 100644 --- a/theme/templates/css/base.css +++ b/theme/templates/css/base.css @@ -1 +1 @@ -{% raw %}hr,img{border:0}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;font-size:18px;background:#fefefe}body{margin:0;font:18px Georgia,serif;line-height:1.4;color:#222;padding:0}img{vertical-align:middle}hr{height:0;box-sizing:content-box;margin:21px 0;border-top:1px solid #eee}h1,h2,h3,h4,h5,h6{font-family:"Helvetica Neue",sans-serif;font-weight:500;line-height:1.1;color:#000}h1,h2,h3{margin:30px 0 6px}h1{font-size:40px}h2{font-size:28px}h3{font-size:22px}h4,h5,h6{margin:11px 0;font-size:18px}p{margin:0 0 12px}ol,ul{margin:0 0 10px}code,pre{font:"Courier New",monospace;border-radius:4px;background-color:#f4f9ff;font-size:12px}code{padding:2px 4px;white-space:nowrap}pre{overflow:scroll;white-space:pre;display:block;padding:10px;margin:0 0 11px;line-height:1.4;word-break:break-all;word-wrap:break-word;border:1px solid #ccc}.cn{padding:0 15px 0 15px;margin-right:auto;margin-left:auto}.cn:before,.cn:after{display:table;content:" "}.cn:after{clear:both}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.c2,.c3,.c4,.c5,.c6,.c7,.c8,.c9,.c10,.c11,.c12{position:relative;min-height:1px;padding:0 15px 0 15px}a{background:transparent;text-decoration:none;border-bottom:1px dotted;color:#444}a:hover{text-decoration:none;color:#000}.ft{padding:0 0 24px;float:right}.sns{font-family:"Helvetica Neue",sans-serif}.sps{font-size:14px}.hd{margin:20px 0 15px 0}.hd>a{border-bottom:none}img.hdr{vertical-align:middle;border:none;height:52px;width:52px;padding:1px}.hdt a,.hdt a:hover{font:72px "Helvetica Neue",sans-serif;font-weight:normal;letter-spacing:.03em;vertical-align:middle;margin-left:5px;color:#000;text-decoration:none;border-bottom:none;line-height:.9em}.bk{margin:0 5px 0 5px}img.nob{border:none}p.banner{font-weight:500;line-height:1.1;color:#fff;font-size:22px;margin:14px 0 18px 0}.bp{line-height:1.3em}{% endraw %} +{% raw %}hr,img{border:0}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;font-size:18px;background:#fefefe}body{margin:0;font:18px Georgia,serif;line-height:1.4;color:#222;padding:0}img{vertical-align:middle}hr{height:0;box-sizing:content-box;margin:21px 0;border-top:1px solid #eee}h1,h2,h3,h4,h5,h6{font-family:"Helvetica Neue",sans-serif;font-weight:500;line-height:1.1;color:#000}h1,h2,h3{margin:30px 0 6px}h1{font-size:40px}h2{font-size:28px}h3{font-size:22px}h4,h5,h6{margin:11px 0;font-size:18px}p{margin:0 0 12px}ol,ul{margin:0 0 10px}code,pre{font:"Courier New",monospace;border-radius:4px;background-color:#f4f9ff;font-size:12px}code{padding:2px 4px;white-space:nowrap}pre{overflow:scroll;white-space:pre;display:block;padding:10px;margin:0 0 11px;line-height:1.4;word-break:break-all;word-wrap:break-word;border:1px solid #ccc}.cn{padding:0 15px 0 15px;margin-right:auto;margin-left:auto}.cn:before,.cn:after{display:table;content:" "}.cn:after{clear:both}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.c2,.c3,.c4,.c5,.c6,.c7,.c8,.c9,.c10,.c11,.c12{position:relative;min-height:1px;padding:0 15px 0 15px}a{background:transparent;text-decoration:none;border-bottom:1px dotted;color:#444}a:hover{text-decoration:none;color:#000}.ft{padding:0 0 24px;float:right}.sns{font-family:"Helvetica Neue",sans-serif}.sps{font-size:14px}.hd{margin:20px 0 15px 0}.hd>a{border-bottom:none}img.hdr{vertical-align:middle;border:none;height:52px;width:52px;padding:1px}.hdt a,.hdt a:hover{font:72px "Helvetica Neue",sans-serif;font-weight:normal;letter-spacing:.03em;vertical-align:middle;margin-left:-5px;color:#000;text-decoration:none;border-bottom:none;line-height:.9em}.bk{margin:0 5px 0 5px}img.nob{border:none}p.banner{font-weight:500;line-height:1.1;color:#fff;font-size:22px;margin:14px 0 18px 0}.bp{line-height:1.3em}{% endraw %} diff --git a/theme/templates/index-sidebar.html b/theme/templates/index-sidebar.html index ef55aa559..ccfb5ad9e 100644 --- a/theme/templates/index-sidebar.html +++ b/theme/templates/index-sidebar.html @@ -1,3 +1,2 @@
- {% include "sponsor/assemblyai.html" %}
diff --git a/theme/templates/index.html b/theme/templates/index.html index e021e8703..3c62f365b 100644 --- a/theme/templates/index.html +++ b/theme/templates/index.html @@ -5,15 +5,15 @@ {% endblock %} -{% block css %}{% endblock %} +{% block css %}{% endblock %} {% block banner %} {% endblock %} {% block content %}
-
-

Build, Deploy and Operate Python Applications

+
+

Learn to Build, Deploy and Operate Python Applications

You're knee deep in learning Python programming. The syntax is starting to make sense. The first few ahh-ha! moments hit you as you learn to use @@ -44,7 +44,6 @@

Build, Deploy and Operate Python Applications

What do you need to learn first?

- {% include "index-sidebar.html" %}
diff --git a/theme/templates/nav.html b/theme/templates/nav.html index 529a36676..5b91021c4 100644 --- a/theme/templates/nav.html +++ b/theme/templates/nav.html @@ -1 +1 @@ -
{% include "subnav.html" %}
+
{% include "subnav.html" %}
diff --git a/theme/templates/subnav.html b/theme/templates/subnav.html index cbf4e08e9..f57d81fd8 100644 --- a/theme/templates/subnav.html +++ b/theme/templates/subnav.html @@ -1,10 +1,8 @@ From 18c5871c5708aa0f544c6e175f32960e8e9fc421 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Thu, 27 Oct 2022 09:28:16 -0400 Subject: [PATCH 40/42] removing GA, no more analytics needed. reducing page sizes --- .../15-application-dependencies.markdown | 4 ---- content/pages/03-data/25-oracle.markdown | 9 +++++++-- content/pages/meta/00-change-log.markdown | 4 ++++ static/img/fsp-fav.png | Bin 3294 -> 1622 bytes theme/templates/base.html | 1 - theme/templates/choices/oracle.html | 18 ++++++++++++++++++ theme/templates/sponsor.html | 1 - theme/templates/sponsor/assemblyai.html | 2 +- 8 files changed, 30 insertions(+), 9 deletions(-) create mode 100644 theme/templates/choices/oracle.html diff --git a/content/pages/02-development-environments/15-application-dependencies.markdown b/content/pages/02-development-environments/15-application-dependencies.markdown index 4fe802b6a..927a3720d 100644 --- a/content/pages/02-development-environments/15-application-dependencies.markdown +++ b/content/pages/02-development-environments/15-application-dependencies.markdown @@ -158,10 +158,6 @@ so far to get up to speed on building and releasing your own packages. provides a collection of resources to understand how to package and distribute Python code libraries. -* [Alice in Python projectland](https://veekaybee.github.io/2017/09/26/python-packaging/) - is an amazing post that takes the reader from simple Python script - into a complete Python package. - * [How to Publish Your Package on PyPI](https://blog.jetbrains.com/pycharm/2017/05/how-to-publish-your-package-on-pypi/) is for developers who have created a code library they would like to share and make installable for other developers. diff --git a/content/pages/03-data/25-oracle.markdown b/content/pages/03-data/25-oracle.markdown index 98de1a59d..bf6b3cdc0 100644 --- a/content/pages/03-data/25-oracle.markdown +++ b/content/pages/03-data/25-oracle.markdown @@ -4,10 +4,15 @@ slug: Oracle sortorder: 0325 toc: False sidebartitle: Oracle -meta: Oracle Database is the market-leading database for mission-critical enterprise applications. +meta: Oracle Database is an enterprise relational database management system. -[Oracle](http://www.oracle.com/) Database is the market-leading database for mission-critical enterprise applications. It can run transaction processing, data warehousing, and multi-model database workloads such as machine learning, spatial, and graph. Recently, Oracle Database added support for JSON and blockchain use cases. The Oracle Database fully supports on-premises, cloud, and hybrid cloud deployments. +[Oracle Database](http://www.oracle.com/) is an enterprise +[relational database](/databases.html). It can run transaction processing, +data warehousing, and multi-model database workloads such as machine +learning, spatial, and graph analysis. Recent versions of Oracle Database +also added support for JSON and blockchain use cases, and the software +can be run in on-premise, cloud or hybrid environments. Oracle logo. diff --git a/content/pages/meta/00-change-log.markdown b/content/pages/meta/00-change-log.markdown index 04dcae5a6..94d366108 100644 --- a/content/pages/meta/00-change-log.markdown +++ b/content/pages/meta/00-change-log.markdown @@ -14,6 +14,10 @@ view commit-level changes via the on GitHub. ## 2022 +### March +* I decided to go so minimal that I removed the logo to make the site load + faster, and also got rid of some unncessary CSS on front page. + ### February * Still on break, but updated the header and footer. Also made some website tweaks to make it faster. diff --git a/static/img/fsp-fav.png b/static/img/fsp-fav.png index 28a9f6cdba5c76819b45a43513c1ba3ea0f50e5a..3a2f75910d6aa096361fbc946e014866a52ce4c7 100644 GIT binary patch literal 1622 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJS*a18X}-P;T0k}j0~@0d12d4t z2!srbQVgtMHUmQ#qcofy$EX2S!vs`g$N(f6M1eT1J(Gb2s=fwDgMbGR15JX^0htx4 zIk|}?`9%r=MfnQGdIoxiKslxbOmKY)3z!jXpd7=lE6<+*Db50q$YKTtZeb8+WSBKa zf`NfKCo?3XB*NFnDmgz_FEJ%QDOIl`w*aJz!KT6r$jnVGNmQuF&B-gas<2f8tFQvH zLBje<3ScEA*|tg%z5xo(`9-M;Wh+i#(Mch>H3D2mX`VkM*2oZx=P7{9 zO-#x!EwNQn0$BtH5O=0lWFlhy0lFT$5 zc7bFd+Q5MUaia~$1yLmV#{b(N&=t;0uiIl*E!mm&B4(J0k;NTp1eZ8kvU}SXvocS^>ERCRPRp z5Mxl(BAEjU5UYrw)Z+Y{QcyJ7nHw1ZfxaP#w9&_qM%Rka8Jd?_Vh0Q}uog67bX}1M zd2ALUOQUP`FUm{>CPuJZ4WYIni$T@f=!4QDQu>4>ey}Jo_1kd)g9Vn8?6|IGALs<; z=U1LCjv*1PN2fdbH9Ls3{dbRCbVl&NRLctovp0@|FfBrg&LBT6YH~vVcY5C4K zHiA8$LZ=laTbTOp(Qa=xo6LMwe3jM)&K)YwywR)MeGM(12%UHMI+bNt?xU{}IX(++ z@>{uj>MZ_QaieUHUzi%pDx=x=o?E6H(i*Wp=2_1 zgFxdAyR4nPSLUo?=Q^>4}8MXSgU&WUju|h9qxg?9<$XOaA zl)J0Np1)*Gn^_x&Tf(9bYHyMkRq-@Wj5VF8er_29gJ!{~PxkCja_V#c{88ZP1J~nc+k>1(|Pn1aBv5)b#{0s+vUsaxcV7^zn$JWVf8Ge-RDBf)N(awDFS0%re zsHWxz4p-e|@)v(@KfQqQ=YcZiETO4=4|c3PuD$PJ+XuCp?)gD|v)9Gtu1ovBPX3rS V@0#M!Z;7BX)zj6_Wt~$(6985s9~}Sy literal 3294 zcmZ9PXH?VMw#5SkgixgzY7m5gAmM~6O_7>VLy`IiBoIXq2~|M!fCe-ak)jllBTYc6 z3KEdslwK6+HGu%qb11o>-gw`8qQuD+4(S}VAl+~9ie*oV5f z*hUGTrw_mXlWQ~ZTC(96uB{E^+fS?GC)D!wm~uOnaY#rHy;CGD2QV)vyI`?8wo&a8;iALN9yFitZc4}^i&-sGOs zvZHx5A3OAee*vT?Sn6q?qZPX(;+&_!*_teK{wo#;l7F&Z$HxOisPlZ%E%8Yhb_xIG zrf}f7oIcZIwQQ4iT-~kD-Vr6AmHWI#mykIjTr3{NG3IZg%|$tqJug{^%KL1f7rti` zzW=zCNa!OzKk?la#^`R$EVkz9e2X4E9x#;I2aYyVAQ;zQe?$(KM!=5r(DrIv>*w?H z&A6g1qKL65&bMIDVh9c|v5|=r;Z8dv>hdqYpTREtf=V1UcvQ7K$q5#0obMj*S^lcRF{a9ozvyuKl8vgY z79~|D0}>9b2&~#)@p9`UspHWSgjYD96t+Y+GJR}m*84`PoDX7odS+|{v;O`X;)b!| zS)9SeV3EN67a1>KZ!BW(X~EiZ&>F6FBqQyZD8)RC>@PUz&xXMVQ7$ zj8#9`-SrK#zvgi3c}b~5ea)WO$lCJj$<+&$y42BGm5jTzqd32QU_~7(E!CpYO(6=e zw?b}`c_#^T$mr7Zgyz1ji?3kS%-m8SJ{AH8`I>2wdVhznh&{Gee)*?k&)amU5$e*$Q<=pFv{C z(kXpKN$90X0Tg9dre#m-p^=nub42s8Qa;}UJfc{m?Ox;~3;AR@`q;ZdHj@vMD^ho= zDh&(d39UJ@!CIkNyehmxbYne3Eae;=x~=DGyK)z2+kCm=3|R@NmGqHg$4Oq>w8H(2;%xp3935r>_p+Siax9P{g}k03bl*z z^ExsUYG)Afdwy2f&w^@U;zteelqMu1>kLdLE@h{fuXdmqW33I9G!5(lwj}C(K39dD zXPcWChE6Tu>fe7~fx#4rD@*Hky&dgFcxEmChS7A7idv+C`jG?1aGR9pF5rboe%`(O z&3NtQb9JCc-CR#IZt`>0-d6ImWa zn~ZW2&rq1RUZM0PibLbg0!N;D)N^VorC9eLT()(KYkcavE(IO|qRdpmpO$mUDt3cp z^!?37zwIzmo~=J;7qj`idCCBdVWNeVCoq& zooqc1Hw!0S>>H3i-D_{-Dkl@C!|LC3=YmM{IKr2w-+}`QeWc4x56w8_I>(wM!P;Dj z7TI0@{#$!?fJI72&eLe;oR~T@BnHVktX1K`zG`1e!AF=E( zc=lZz?D549)0oEQ^{&ZS6Tu}WD)J%j@4`Z}b{iq+?IZv!25(uw8mDv%r#1Rs^^K*x zd)jNtmt8M^x-&kZtgHEXCMB4S$gMsDpRaUQf_~B>2qMT6*ioz;u4n%jA>% zO*N8cFSax@+f(eh8|O5WYk2{1;uAgKl|yzF;zBkcilK`uG*R)t+_n$%m=TYd=o&Bq z5}p%mT{vc##d#P5pDz@fzD6?{Mz((2)^d2o6wUNc>@i@=fV3y^3i@>QIc@_;V{ERc z3#}2}pI-C6+FQo^{7;QNMN#POOI2<44K+!O5%NNWUW=~eeRWrfZj2RH^tpBBNShnL z1`0X~q|Kzd2W{g6PA;s;UM6no*88kV^nNHZOYTuhOLqB z{kT9UNS}|P`YR0CgBcgV2mZeX$?HqLSd%Ht{-^?zaGUUU+jkTGb%CEhAU=Vt-8sJ! z$W(=dU6>odF1)a0HMi|&=v}Ea71b}R8pKt8dlMO@2&4sTqYlZ=bg|u^%5~4ue@rHhQ-F72 zTZWHuG5^R6?Ah>P`!f5QAoH@JV>8ms^PKTcR;&-G!wDcMCEp*RKNj!05kIBvsA{1Q z9OAHY1jNaUcTMU$o4aNpW<+PEwwOKSvJ<3Dcgr%d2LG7_g1@;KMUhH~=;ps-Zmn4t zT50rkPYiWWs{z`Az018pBH{QfNG{651wrhKW%za~?RzgzibHH9!DtmvoNG98(BrY7 zPiMc56C_ew);O1!E)Z%@8icYv6k*l}`qOf!UkXFQMU`5-t_6fIO92GHXX5Kvf9wFL zvy)OUxnV-~oI`%IU#5KB7h`)u1S8r>PB!+7yHjN==R9C1n+Z_%m3D4Wi-3c^n7|l3 z?2n8)>0bXB3IClB;p84|mOtG?TTKP#^t|^qm%Z$Z!I|}3S*B?K{NS_nqRMpyO;nek z=5$>e0arxs*w)M3HSs;F?v=AYM>ddt>YZjsOo+>5LvVN>+nDWUHe#eyoUc=bPdIj*T5ovrPA~Y$UmY)pq9G!L{E2G zqj36|%dU1uX&B-bM}aYyswiA3edh0*FKO8ewvS}N3H-2Z7{(l#C{(kruoG&zq#}(V zqr!n@fz`~MvNqgDlvg}D;SuzAT&(P1Yu*C>$QY{Z&|2B6V}wRT(JBP{u2;E7XLc{{ zb@MOODw`yKdkHgiNx77gw{E4mi=3=Er9JOA{Z*6aGhCMfTW!8MxGw?-?jE&(SU^Dy Xc}gx4>=lf^2?%X$WmIW!?ZLkROwjkG diff --git a/theme/templates/base.html b/theme/templates/base.html index a3bc041de..93e3ad132 100644 --- a/theme/templates/base.html +++ b/theme/templates/base.html @@ -19,7 +19,6 @@ {% block lower_banner %}{% endblock %} {% block bottom_banner %}{% endblock %} - {% block js %}{% endblock %} diff --git a/theme/templates/choices/oracle.html b/theme/templates/choices/oracle.html new file mode 100644 index 000000000..2ff0b969a --- /dev/null +++ b/theme/templates/choices/oracle.html @@ -0,0 +1,18 @@ +

What's next to get your app running?

+
+
+
+ {% include "choices/buttons/no-sql-datastore.html" %} +
+
+
+
+ {% include "choices/buttons/cascading-style-sheets.html" %} +
+
+
+
+ {% include "choices/buttons/javascript.html" %} +
+
+
diff --git a/theme/templates/sponsor.html b/theme/templates/sponsor.html index 9583a8c90..bc378aee8 100644 --- a/theme/templates/sponsor.html +++ b/theme/templates/sponsor.html @@ -1,5 +1,4 @@ {% if page.sortorder[0:2] == "01" or page.sortorder[0:2] == "02" or page.sortorder[0:2] == "03" or page.sortorder[0:2] == "04" or page.sortorder[0:2] == "05" or page.sortorder[0:2] == "06" or page.sortorder[0:2] == "50" %} -{% include "sponsor/assemblyai.html" %} {% include "sponsor/carbon.html" %} {% endif %} {% if false %} diff --git a/theme/templates/sponsor/assemblyai.html b/theme/templates/sponsor/assemblyai.html index 9ce17932c..431a8c567 100644 --- a/theme/templates/sponsor/assemblyai.html +++ b/theme/templates/sponsor/assemblyai.html @@ -2,6 +2,6 @@

Sponsored By

AssemblyAI logo -

The most accurate speech-to-text API. Built for Python developers.

+

The automatic transcription API loved by Python developers.

From 7e61b2fb188bd550abe15e4c45ba1015fb4bc8d5 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Sat, 29 Oct 2022 17:33:06 -0400 Subject: [PATCH 41/42] removing old 404 links --- content/pages/02-development-environments/19-git.markdown | 4 ---- content/pages/03-data/01-databases.markdown | 4 ++-- content/pages/03-data/02-postgresql.markdown | 2 +- content/pages/03-data/05-object-relational-mappers.markdown | 2 +- content/pages/meta/00-change-log.markdown | 6 ++++++ .../160518-install-postgresql-python-3-ubuntu-1604.markdown | 4 ++-- content/posts/170723-monitor-flask-apps.markdown | 2 +- .../posts/200308-financial-resources-developers.markdown | 2 +- 8 files changed, 14 insertions(+), 12 deletions(-) diff --git a/content/pages/02-development-environments/19-git.markdown b/content/pages/02-development-environments/19-git.markdown index 9fdab73f2..5bffca262 100644 --- a/content/pages/02-development-environments/19-git.markdown +++ b/content/pages/02-development-environments/19-git.markdown @@ -240,10 +240,6 @@ minimize merge conflicts. why at GitHub they do not use the git-flow model and provides an alternative that solves some of the issues they found with git-flow. -* [Git Workflows That Work](http://blog.endpoint.com/2014/05/git-workflows-that-work.html) - is a helpful post with diagrams to show how teams can create a Git workflow - that will help their development process. - * [Comparing workflows](https://www.atlassian.com/git/tutorials/comparing-workflows) provides a slew of examples for how developers on a team can handle merge conflicts and other situations that commonly arise when using Git. diff --git a/content/pages/03-data/01-databases.markdown b/content/pages/03-data/01-databases.markdown index ff780eff7..bad071a2c 100644 --- a/content/pages/03-data/01-databases.markdown +++ b/content/pages/03-data/01-databases.markdown @@ -100,7 +100,7 @@ Find out about Python applications with a MySQL backed on the dedicated To work with a relational database using Python, you need to use a code library. The most common libraries for relational databases are: -* [psycopg2](http://initd.org/psycopg/) +* [psycopg](https://www.psycopg.org/) ([source code](https://github.com/psycopg/psycopg2)) for PostgreSQL. @@ -263,7 +263,7 @@ speed on SQL if you have never previously used it. 1. Install PostgreSQL on your server. Assuming you went with Ubuntu run ``sudo apt-get install postgresql``. -1. Make sure the [psycopg2](http://initd.org/psycopg/) library is in your +1. Make sure the [psycopg](https://www.psycopg.org/) library is in your application's dependencies. 1. Configure your web application to connect to the PostgreSQL instance. diff --git a/content/pages/03-data/02-postgresql.markdown b/content/pages/03-data/02-postgresql.markdown index 34284a7e9..5e700895a 100644 --- a/content/pages/03-data/02-postgresql.markdown +++ b/content/pages/03-data/02-postgresql.markdown @@ -57,7 +57,7 @@ architecture. To work with relational databases in Python you need to use a database driver, which is also referred to as a database connector. The most common driver library for working with PostgreSQL is -[psycopg2](http://initd.org/psycopg/). There is +[psycopg](https://www.psycopg.org/). There is [a list of all drivers on the PostgreSQL wiki](https://wiki.postgresql.org/wiki/Python), including several libraries that are no longer maintained. If you're working with the diff --git a/content/pages/03-data/05-object-relational-mappers.markdown b/content/pages/03-data/05-object-relational-mappers.markdown index df5ce8bb0..6451908e8 100644 --- a/content/pages/03-data/05-object-relational-mappers.markdown +++ b/content/pages/03-data/05-object-relational-mappers.markdown @@ -64,7 +64,7 @@ there was a pressing reason. Python ORM libraries are not required for accessing relational databases. In fact, the low-level access is typically provided by another library called a *database connector*, such as -[psycopg](http://initd.org/psycopg/) (for PostgreSQL) +[psycopg](https://www.psycopg.org/) (for PostgreSQL) or [MySQL-python](https://pypi.org/project/MySQL-python/1.2.5) (for MySQL). Take a look at the table below which shows how ORMs can work with different web frameworks and connectors and relational databases. diff --git a/content/pages/meta/00-change-log.markdown b/content/pages/meta/00-change-log.markdown index 94d366108..bf6137a13 100644 --- a/content/pages/meta/00-change-log.markdown +++ b/content/pages/meta/00-change-log.markdown @@ -14,6 +14,12 @@ view commit-level changes via the on GitHub. ## 2022 +### October +* Starting to get back into updating this site again! Note that I'll probably + spend most of my side project time on [Plushcap](https://www.plushcap.com/) + but I'm removing old resources and adding new good ones on here to keep the + site maintained. + ### March * I decided to go so minimal that I removed the logo to make the site load faster, and also got rid of some unncessary CSS on front page. diff --git a/content/posts/160518-install-postgresql-python-3-ubuntu-1604.markdown b/content/posts/160518-install-postgresql-python-3-ubuntu-1604.markdown index e5d4338cc..baf38465d 100644 --- a/content/posts/160518-install-postgresql-python-3-ubuntu-1604.markdown +++ b/content/posts/160518-install-postgresql-python-3-ubuntu-1604.markdown @@ -12,7 +12,7 @@ headeralt: PostgreSQL and Ubuntu logos. Copyright their respective owners. [PostgreSQL](/postgresql.html) is a powerful open source [relational database](/databases.html) frequently used to create, read, update and delete [Python web application](/web-frameworks.html) data. -[Psycopg2](http://initd.org/psycopg/) is a PostgreSQL database +[Psycopg2](https://www.psycopg.org/) is a PostgreSQL database driver that serves as a Python client for access to the PostgreSQL server. This post explains how to install PostgreSQL on [Ubuntu 16.04](/ubuntu.html) and run a few basic SQL queries within a Python program. @@ -110,7 +110,7 @@ found in the ## Installing psycopg2 Now that PostgreSQL is installed and we have a non-superuser account, we -can install the [psycopg2](http://initd.org/psycopg/) package. Let's +can install the [psycopg2](https://www.psycopg.org/) package. Let's figure out where our `python3` executable is located, create a virtualenv with `python3`, activate the virtualenv and then install the psycopg2 package with `pip`. Find your `python3` executable using the `which` command. diff --git a/content/posts/170723-monitor-flask-apps.markdown b/content/posts/170723-monitor-flask-apps.markdown index b3cd8b760..4ef02bfc6 100644 --- a/content/posts/170723-monitor-flask-apps.markdown +++ b/content/posts/170723-monitor-flask-apps.markdown @@ -165,7 +165,7 @@ The above [Jinja2](/jinja2.html) template is basic HTML without any [embedded template tags](http://jinja.pocoo.org/docs/latest/templates/). The template creates a very plain page with a header description of "PUBG so good" and a GIF from this -[excellent computer game](http://store.steampowered.com/app/578080/PLAYERUNKNOWNS_BATTLEGROUNDS/). +[excellent computer game](https://store.steampowered.com/app/578080/PUBG_BATTLEGROUNDS/). Time to run and test our code. Change into the base directory of your project where `app.py` file is located. Execute `app.py` using the `python` diff --git a/content/posts/200308-financial-resources-developers.markdown b/content/posts/200308-financial-resources-developers.markdown index fb0619334..80f2560d0 100644 --- a/content/posts/200308-financial-resources-developers.markdown +++ b/content/posts/200308-financial-resources-developers.markdown @@ -77,7 +77,7 @@ macroeconomic data trends. is well-written, straightforward and accessible, particularly because it clearly targets its software developer audience. -* [Don't Quit Your Day Job](https://dqydj.com/) uses a ton of metrics +* [Don't Quit Your Day Job](https://dqydj.com) uses a ton of metrics and statistics to ground their articles on financial topics that are often relevant specifically to software developers. For example, the article on From daa9782d1a42b282a5c4489ecdb3aad19bb9aaa8 Mon Sep 17 00:00:00 2001 From: Matt Makai Date: Fri, 14 Apr 2023 20:44:27 -0400 Subject: [PATCH 42/42] removing malicious link --- content/pages/02-development-environments/02-vim.markdown | 4 ---- 1 file changed, 4 deletions(-) diff --git a/content/pages/02-development-environments/02-vim.markdown b/content/pages/02-development-environments/02-vim.markdown index 10acf60ef..f37c04a5d 100644 --- a/content/pages/02-development-environments/02-vim.markdown +++ b/content/pages/02-development-environments/02-vim.markdown @@ -108,10 +108,6 @@ you are unfamiliar with. * [Vim and Python](https://justin.abrah.ms/vim/vim_and_python.html) shows and explains many Python-specific .vimrc options. -* [Vim as a Python IDE](http://liuchengxu.org/posts/use-vim-as-a-python-ide/) - shows a slew of plugins and configuration options for coding with Python - in Vim. - * This [repository's folder with Vimrc files](https://github.com/amix/vimrc/tree/master/vimrcs) has example configurations that are well commented and easy to learn from.