From ea041f502cc7fc426eee118aa2f97a703ea06b7e Mon Sep 17 00:00:00 2001 From: Thomas Hintz Date: Sat, 11 Feb 2023 15:35:57 -0800 Subject: [PATCH] Adding some articles. --- .../(main)/articles/redux-with-react/head.jsx | 9 ++ .../(main)/articles/redux-with-react/page.jsx | 36 ++++++++ .../articles/render-tree-performance/head.jsx | 9 ++ .../articles/render-tree-performance/page.jsx | 82 +++++++++++++++++ .../whitelabeling-with-react/head.jsx | 9 ++ .../whitelabeling-with-react/page.jsx | 87 ++++++++++++++++++ src/components/Components.jsx | 40 ++++++++ src/images/render-tree-flow.gif | Bin 0 -> 28782 bytes src/images/render-tree-memo.gif | Bin 0 -> 25646 bytes 9 files changed, 272 insertions(+) create mode 100644 src/app/(main)/articles/redux-with-react/head.jsx create mode 100644 src/app/(main)/articles/redux-with-react/page.jsx create mode 100644 src/app/(main)/articles/render-tree-performance/head.jsx create mode 100644 src/app/(main)/articles/render-tree-performance/page.jsx create mode 100644 src/app/(main)/articles/whitelabeling-with-react/head.jsx create mode 100644 src/app/(main)/articles/whitelabeling-with-react/page.jsx create mode 100644 src/images/render-tree-flow.gif create mode 100644 src/images/render-tree-memo.gif diff --git a/src/app/(main)/articles/redux-with-react/head.jsx b/src/app/(main)/articles/redux-with-react/head.jsx new file mode 100644 index 0000000..7e6b93c --- /dev/null +++ b/src/app/(main)/articles/redux-with-react/head.jsx @@ -0,0 +1,9 @@ +import StandardHead from '@/components/StandardHead'; + +export default async function Head({ params }) { + return ( + + ); +}; diff --git a/src/app/(main)/articles/redux-with-react/page.jsx b/src/app/(main)/articles/redux-with-react/page.jsx new file mode 100644 index 0000000..4582e92 --- /dev/null +++ b/src/app/(main)/articles/redux-with-react/page.jsx @@ -0,0 +1,36 @@ +import { Article, H2, P } from '@/components/Components'; + +export default function Page() { + return ( +
+

+ For years it was very common to see Redux used on React projects to manage application state but now it is less common to see new React projects utilizing Redux. What has changed? And does that change make sense? +

+

+ Large front-end React applications usually have a lot of state to store and manage. This is usually divided into two types of state: domain specific state and component specific state. Domain specific state is state that relates to your application domain, like say an array of todo's in a todo list. Whereas component specific state is state that is needed for the functioning of an individual component or group of components, like storing what the user has entered in a text input or whether a form is valid or not. +

+

+ React has always been good at managing state specific to a component but if state was application wide, like domain state often is, or if component state touches a large hierarchy of components, like say a theme, React was originally very unwieldy. This is where libraries like Redux became not just useful but often necessary. Redux allowed you to share state across components in a composable yet convenient way. Redux has other benefits as well but based on its real world usage in most React projects it was primarily used to make up for state management deficiencies in React. This, however, is no longer necessary. +

+

What has changed?

+

+ In the intervening years React has introduced it's own solution to cross-cutting state: contexts. They've also introduced Redux like APIs, including reducers. In fact, much of Redux can now be replicated purely in React with just a few lines of supporting library code. React has also improved its lifecycle hooks to make working with state easier. So now using Redux to improve cross-cutting state management is no longer necessary since React can handle that itself. +

+

+ This isn't the end of the story, however. From a technical standpoint Redux can be used in a modular, contained fashion but in the real world this rarely happened because it took more discipline and boilerplate and many large React/Redux projects ended up with components being tightly coupled to the larger Redux state tree. This made it very difficult to add features or track down bugs once the app grew large, especially with multiple contributors. +

+

+ So not only did Redux usage lead to unmaintainable code but it was, in the relevant ways, replaced by React itself. React now can be used to create unmaintainable code in the same way Redux was but in practice it seems to be less common because it integrates more tightly. In Redux projects oftentimes all of the state would in the Redux tree which made it really easy for any component anywhere to access or modify the state which creates a big bowl of spaghetti code. Whereas in React, contexts are generally only consumed when needed which tends to cause the components that really shouldn't be using global state to keep their state more contained. This makes the code easier to work with. +

+

No more Redux

+

+ So from a technical standpoint Redux is no longer needed for what most people used it for and projects that don't use it often end up with higher quality code. React can be used in a similar way to Redux now which does mean that it can lead to equally poor state management so maintaining good coding practices is still important. And Redux does still have its uses and can be used to write high quality code it's just that in the past it was often used poorly and for many projects is no longer necessary. +

+
+ ); +}; diff --git a/src/app/(main)/articles/render-tree-performance/head.jsx b/src/app/(main)/articles/render-tree-performance/head.jsx new file mode 100644 index 0000000..6c3ce4a --- /dev/null +++ b/src/app/(main)/articles/render-tree-performance/head.jsx @@ -0,0 +1,9 @@ +import StandardHead from '@/components/StandardHead'; + +export default async function Head({ params }) { + return ( + + ); +}; diff --git a/src/app/(main)/articles/render-tree-performance/page.jsx b/src/app/(main)/articles/render-tree-performance/page.jsx new file mode 100644 index 0000000..a33e974 --- /dev/null +++ b/src/app/(main)/articles/render-tree-performance/page.jsx @@ -0,0 +1,82 @@ +import Image from 'next/image' + +import { Article, H2, P, A } from '@/components/Components'; + +import renderTreeFlow from '@/images/render-tree-flow.gif'; +import renderTreeMemo from '@/images/render-tree-memo.gif'; + +export default function Page() { + return ( +
+

+ What happens when you update state in a React component? Does React intelligently isolate the update to only components that need to be re-rendered? No. In fact, by default, React does not attempt to optimize re-renders at all. +

+

+ This means that if the state of a component changes React will re-render that component and all child components! Usually this is not a problem either because updates are infrequent or because your render methods or functions are cheap and fast. But as your component tree grows in size or your lists of components grow this can quickly become a major problem causing jankiness and a drop in responsiveness. +

+

Background

+

+ Before React and similar libraries were created a large source of front-end bugs was the browser DOM being out-of-sync with your internal app state. This could easily happen when manually trying to keep the two in sync. React was designed to solve this problem and to efficiently map your internal state to the DOM. It was not designed to intelligently render a tree of components. Instead React intentionally left that process simple and unoptimized. +

+ diagram showing the render flow +
+ Shows the default rendering flow of React when state is changed on the root node. +
+

+ So let's say you run into this point of unoptimization where your app is getting janky and you've discovered that React is re-rendering expensive components even when there is no reason to, what can you do about it? +

+

Solution

+

+ The React developers are not unaware of this problem and have actually included tools to address it. The simplest tools are React.PureComponent and React.memo. For class based components you can extend React.PureComponent and for function components you can wrap them with React.memo. In both cases what this does is memoize your components based on your props. React will only re-render the component if your props change. +

+
+        
+          {`// Example React.PureComponent usage
+
+export default class ExpensiveToRender extends React.PureComponent {
+  ...
+}
+// Example React.memo usage
+
+export default React.memo(function ExpensiveToRender(props) {
+  ...
+});`}
+        
+      
+

+ Essentially this means that when React says "component: please render now" the component checks its cache to see if any props have changed and if they haven't changed it replies "here you go you can just use the result I calculated previously for these components". React takes that result and now the process of rendering down that part of the tree is completed without any extra work being done. +

+ diagram showing the render flow when it stops at a memoized component +
+ Shows the rendering flow of React when a child is memoized (border turns blue). +
+

Details

+

+ It's important to be aware of how these function though. They perform a shallow comparison of props. This works well in general but if any of your props are arrays, JS objects, or anonymous functions you can run in to cases where you expect your component to be re-rendered but it isn't. For example, if you pass an array to a component and then later add an item to that array you might expect your component to be re-rendered but it isn't. This is because React only did a shallow comparison on the array and saw that it was the same array. It doesn't scan the array contents. To get React to re-render your component when you change the contents of an array you need to instead return a new array. This is true for other non primitives, like objects. In general if you use React.PureComponent or React.memo you will be better off programming in a pure functional style. +

+

+ Another issue to be aware of when using React.PureComponent or React.memo is that sometimes your component will keep getting rendered even when you think that it shouldn't be; that none of the props have changed. This is similar to the previous case but in reverse. Instead of you not passing React a new object when you should have been, you pass a prop as a new object every time when you weren't planning to. This is most commonly seen when passing object literals or anonymous functions as props. An object literal gets instantiated into a new object every time it gets executed. So even if the contents of the object literal haven't changed it still creates a new object and React isn't checking to see if the contents have changed only whether it's a new object or not. So make sure to create these objects outside the render path. +

+

+ Why doesn't React just perform deep checks instead? Well this deep check can lead to bad performance which isn't what you want with a performance optimization! +

+

+ React.PureComponent isn't the only way to control when your class component renders: React also provides the lifecycle method componentShouldUpdate. With it you can explicitly tell React when to render the component. Generally though this method is discouraged and React recommends using React.PureComponent. +

+

+ In summary, if you run in to performance bottlenecks with rendering then start by using React.PureComponent or React.memo and programming in a pure style. While there are cases where they aren't the solutions they are generally a good starting point. I've written more detailed articles about when to use both React.PureComponent and React.memo. +

+
+ ); +}; diff --git a/src/app/(main)/articles/whitelabeling-with-react/head.jsx b/src/app/(main)/articles/whitelabeling-with-react/head.jsx new file mode 100644 index 0000000..972fe77 --- /dev/null +++ b/src/app/(main)/articles/whitelabeling-with-react/head.jsx @@ -0,0 +1,9 @@ +import StandardHead from '@/components/StandardHead'; + +export default async function Head({ params }) { + return ( + + ); +}; diff --git a/src/app/(main)/articles/whitelabeling-with-react/page.jsx b/src/app/(main)/articles/whitelabeling-with-react/page.jsx new file mode 100644 index 0000000..e0ace3e --- /dev/null +++ b/src/app/(main)/articles/whitelabeling-with-react/page.jsx @@ -0,0 +1,87 @@ +import { Article, H2, P, A } from '@/components/Components'; + +export default function Page() { + return ( +
+

+ White-labeling allows you to utilize one code-base across multiple brands or "skins". With React projects there are multiple ways to achieve this. The two main techniques are at compile time or at run time. The technique you use will depend on your application goals. For the Alpha Centauri Farming game we utilized compile time white-labeling but for other projects we've used run time white-labeling. In this article we will be specifically discussing run time white-labeling in React environments. +

+

Goal

+

+ The main goal of white-labeling is to be able to use the same code base while having interchangeable assets that can be selected at run time, like say based on the domain name of the site being served. So ideally your React code does not change at all across the different "labels" and the label can be set in one place and the rest of your React application will automatically utilize it. +

+

Implementation

+

+ With React we actually have a built in mechanism that makes this really easy: React contexts. If we create a context for our labeling then all we have to do is set the label at the top of the component hierarchy and the rest of the application can just utilize the selected label. This is similar to how themeing is often done in React. +

+

+ To make this even easier I've packaged up the context and its providers and consumers into an npm package: react-whitelabel. +

+

+ So how do we use this package to white-label our React app? Here is a basic example: +

+
{`// ... imports
+
+// Setup our white labels.
+// We have two labels: 'cars' and 'trucks'
+const labels = {
+  cars: {
+    logo: '/imgs/car.jpg'    // each label has a 'logo' property
+  },
+  trucks: {
+    logo: '/imgs/truck.jpg'
+  }
+};
+
+// The label to render. This would be dynamic in a real application.
+const label = 'cars';
+
+// Our main entry point, this is where we setup the provider.
+export default class App extends React.Component {
+  render() {
+    // We render the provider and the rest of the app here.
+    // For now the label is hardcoded to 'cars'. In a real
+    // application this would be dynamic.
+    return (
+      
+        
+
+ ... +
+
+ ); + } +} + +// Here we utilize the selected label to render the logo. +// In this case 'src' will be '/imgs/car.jpg' because 'cars' +// is our selected label. +class HeaderComponent extends React.Component { + render() { + Logo + } +} + +// And finally we setup the Header component to utilize the +// white-label context so we can access the 'label' prop. +const Header = withWhiteLabelContext(HeaderComponent);`}
+

+ To see a fully working example check out the docs. +

+

+ So how does this example work? First we setup our labels. This is just a Javascript object where each key maps to a label. Each label is also an object made up of referenceable keys. The WhiteLabelProvider then takes the labels and the selected label as input and then provides the selected label's object to the rest of the app. This object is accessible using a WhiteLabelConsumer or the withWhiteLabelContext wrapper. If we then made the selectedLabel dynamic, say via calling window.location.hostname, then we would have a fully run time dynamic white-label. +

+

+ Also note that we are using the selected label's name as a class name in a top level div. This allows us to use the white-labeling with our CSS assets just by selecting based on the label name like {`.cars a { ... }`}. +

+

+ While the react-whitelabel library is not necessary for React run time white-labeling it does make it easier and more maintainable. If you implement it yourself you will likely do the same thing the library already does for you. If your interested learning more about react-whitelabel feel free to checkout the docs or the npm page. +

+
+ ); +}; diff --git a/src/components/Components.jsx b/src/components/Components.jsx index 391491e..9c422ce 100644 --- a/src/components/Components.jsx +++ b/src/components/Components.jsx @@ -1,3 +1,5 @@ +import { Container } from '@/components/Container'; + export function Box({ children, ...props }) { const classNames = Object.entries(props).reduce((acc, [k]) => `${acc} ${k}`, '') return ( @@ -6,3 +8,41 @@ export function Box({ children, ...props }) { ); }; + +export function Article({ title, datetime, datetitle, author, children }) { + return ( +
+ +
+
+ + +
By {author}
+
+

{title}

+
+
+ {children} +
+
+
+ ); +}; + +export function P({ children }) { + return ( +

{children}

+ ); +}; + +export function H2({ children }) { + return ( +

{children}

+ ); +}; + +export function A({ href, children }) { + return ( + {children} + ); +}; diff --git a/src/images/render-tree-flow.gif b/src/images/render-tree-flow.gif new file mode 100644 index 0000000000000000000000000000000000000000..1dad5ca879d32e04d5a3dfd80a384dee16c58299 GIT binary patch literal 28782 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

c42cC#Klk2eCaGa#!(!X zDR12=hBst`^mQ6{Lqe@leTeW>UcFaIH%e|K4W}f%sY^Q1WO$8|aA!sR^pxTMYVW?H znqK&HkN*=|2&B-f7AeOJ2u&lssYsJ< zMA>u!0YN}HaldnB&6#=6TJPMQb=F+wHWw+Me4k(NzQH@5Njbeqe=Q{$^j#TJPVT#& z9O{|ewj6eqBPK~ThRB(4Q$6M0@-vI{1b~z0X5ht1oG zs+jVPMbp6)`FCDiA*d(+QlU>Y;#b`YW2Cte2@phOfBupA+3=}da}c7O{n+o$;kKH;xZUX8HltSyDY{|p5IEL{KS~8 zJYN)Jc|OBZmA~MWQUU!$f!|(%x=exQw1s|@xxw^R-Dz86sQI5!eyr2EBmRZFQAL8= zg~wb)7Uzo+(+a&8i>@&gH~jV+*j){*eT%sx=BE1q_MV3MgBH_=s{vjEW{>$zeX)W5 zGG+nT8&3`cgUWAajat)?CaR^hX)(<*;&B3h*)4I_zo1dA zhpGN+x@bA0+OMg49UJiVu$q;(=37SSE~X~aujb$|`LLyCajNFmfEgbJV4(nYjwF_0 zfSa2%(fwc(=g4Y(dx;zIi>LN2!@VuEFZYp^DhJ|CBkdu*StuTLWW~dbfMV+0X`ny6n1F!cGjPYtus=H?Jc5=&??#&a|GahyPHwskG)AVf^9TzyOk7@*s}(~^~0m2F%X zj*3qnOl0TcYH+VQ{vZa+jo8hji*W%|79wVTBD0LDGX+=tDu0*AVpadX2A*@4cAHfJ&%;TTM_FG&rUv#KZB4 zO(h`^8fH@y?E#IItBJRPCLUKOU4f<2B^O!+ zbb)>YK>gOGlyDcKh5UEcX^?ez*Yh{@I7FuD^d3N^#G>@DV}8i2zK5T?t6| z5LgWtasmTp(GgLF4W&j_dVr@6Om9*mPfZ*Ez)%+YTnft>%LFt4LYs7`IAy2*m7x%b zyr#p`W6zTWqb4{BOTN^jM}E6GTB3=UV|vFJp$4EMBf9SXPJzHKS|#exYlV2$yk*UG zH7ggbh^vvOh0R)$Uc&;|9|@@5GN8UCvUG9aRcbrVRb*`qm(AR0lO74yWc8qyd9GZ- zg5XHThamtjl15B^3&1=)>b_9~4Sl9uGzICKIzd1(Q&(;OnHf2@TF~$YQZv+YftCU# zbRxCeCdFO=U(`1qOz`U#Y4Nd2^_9b-Dglli1AuwQ45i)qDiSAsB z`7gm2sHjxQzM<^5HuWggUbV5`&O~9XVXOQzjm4t?0Hi(iKtO%mtwt4&+&2%ynq4Iy ziE7jHmJet`kntcT1ing(U+|kifz}7wwy5hX%(^zZ$%XPhgtE5salM`6z(i83^WS=) zTbSQH5DAKAP)K+SV=j5M@o@I!&74t+VTE8WllFQ)@bNFDtMrRoxGP=J<`3L$KhtsS zXQNt0PYOKnTDK#>!k=YnukoWCTM;`@|Nf+nX1B(l+lwcMQX~A0=TvdII zv5jwJ%-sijrtV%8e*YxqNz^3p;SmqLpcK?pwH4P0)~7q531C}vUL)<5TRfNvq6Xm= znHbI9?{d~Q(i9rO=<5kAcs{($ifZE}g$M($Z)Y#$AtI?EDCjzpJ&-U@pBoJFmlvSU zgm+)Y)kfU&h((O@cGI?ukQda@T5EmW!lzd{oG`#BfI#=xlHnh0pRR8n*b7gxm5K?$ zvBBQGC^pEYC07|gFn!ulQGB33&2r22wZ9R9+-Pjny2Udtf9z1rR&LB+fHf z7Q%4Gmu72I1BokFt_$bi1R#sQ7$5fV5N`-L=>i#JT@oyPJAcj?=@6&c2H)Nc=ZeDH ziIwi+_#rpV3Jc-u$3L#!@TM@LdBKCv?$XRD|2Y(9_}oq>Jse{n|8?2nVr@@K=v_|X z4;9htTGNq29sq&Q6C*B%g~Vi!2?#v7XlNzFlEL3mth#7$^;WHEc1K4^w6d#7uhN(~ z=Xhx~T1GbwlUQ80P-b%C6n1l}>}I)ycu|m*tNG8`@#|Qwc-B+y1_PJrbFt&)6_j#X z1$3j{d#{oQx^%=yVippuMmpGJ*BcGjkH5;rm;k#P3G|nb;2FoZ=cJru)*(B> zmPv7j+Km&ez?DxHte*hE1AQbb@)b0Im-{S|qH~UIq3p>)S1F+Drx$#Ov-N;;Ua&jF z_R41yN*X6C*(TPvE%HaIh|14}+5~Zsqp1yGO4B8=4F4$lZHs;r6?%lPe-!H%)d5TG zuCQ}4QJLeYK|3LRnmO5D_oM9xVJ^K_ z+lOJe^mvJ%=LeVincX-6%ACop-Sw!aO2epGDAR%5h~!IBj;)d)$RVS{;mnTA*3k;I z!tZr0`C%C!Yrb-;NKeHXPyDVNi%ReGD+IdkkDm2aYr^;UI=}AcJo$+c3{-m07yMz& z?_|r#zT)u(9!n&Q9=%MUAH;!18tP+PqyZ1R$y0aOHFphO-4oa&eqBb_I4Fhk<+h&6 zSMjx$U_j6*2MC`BvNiGYo0LLhAy}!893GkPKim58M37TUV>aIKox>;u!7B1G*zL)e zKZVlb{G6a?dL*q2n1YludQN`aXWMQ)ji!<{CoVinnUyPK%H7oqXO2HeySFrz$9@ee9d zKJ>oaOKP=jb-C6$ec@(gR?W{1&l+>%@D# zeFKov($KQD?T~#bNGQ?&c={DaTr>OILd3C{M7;k)#rgKM&0|$%1?IQWzXWm~JXpT= zO2hH8_I9OVJN0Ml;iPlOZlYrQMnfWYXJY<4nGpKb_XIzmw!dGC_$3ru%eTRBmcC%BA~;SJ-+0zK)!COJQD>2Q5EM z=gZ_5a=#$#%mGZRFZ6L23<3bY`eEnQ;37x~dl9h97x6<*fDQ%X91U{q!^xvT^e74O z;jr=d8qRvbpA|z13HZlqfPKCWwVv>Vm!L3=m)He|NJTaNZOX&VF%8R#5P!}aEgE=EOA8^;iWu?3JAbH9Q75cf}0F>m5Sb?${^ID z6e!^9r8l|#EGL<8wCS}R6)dd?lA>PSK!ap+V{4L66w`SlT*->ecHlE4u(Ox{nZM=f z+ZS+bUv%?Q^l7QE$_6aY#iB-V&Z`VsxVO9dYE!8p=`TRsF%q1zLO;N$=7cRA z;Lns;GD%~+2m^@fe5nqJs9|4fkj5h`E)~@y6)M>rC@rn6Q>LxPn?%nSK1))3vm7dK z0tQPHF7UzsN(y!+67*f;Btlb+B9pdB$p!n#qdY0oim8@H+RoBRQ@N?rxhWnli3$LY zlj?8gVmsON%rQOeZgZmRWa5nHNzxQDYzL=t^-}l(QdaZFc_;PcC|BK>GFY5+)YHhs z7D%d|c`R#v{LEzRp+(BYW<{pvxD6Ly+cKC8MN#5X`X{^C(y90g|L`hifSF>z%op-@ zGNpzy)SoNy5*vbZGSl}`!oUH1XgT)jk3_&Ty^4^@-<_2anf}f-#qn(PSCeRuA8^Q4 zg4%gv>{1e}6mZE0#H~^ynX~amplnD~sOs}MiblbY)M-ArFzr=4oe(kg{9=FPcRt|t zRM=T5C1w-Qa(ec_r9cI0M7T+4vTE#;$6;a4d11J`_>w%Y?!3{(yig!NN;2Q=V*ZFz zeh4lO)@lr}>s*eEF|?=9$GD)`J)xF=co(y;KobKx4H z@VR7x)y0Bxr-GYIMMTLWlZ!=#PDP3uw=ixuZ3ZlFM-}mv7xwlRPAwJgI2Q{?6~8Mf z{?uD6wOlL>E%_i>vSL`G?^2=^Rr0ZZgFdAsmPhAc**Zd;jau+sqDf!_h2jCQY#0bcWIL;%kP!LP^S@%suCmji43Rl zj4G|hs#%P~{NYKJ0(bR7l>HY>^=Y5#Wz3z`mTK5U_1DY3ll(PQjhbDJ>hIW^zcOkL zGpdiLYt|2IfTL=#Ch40SX)lVT%vb{rc)~D4irpt6E3oXEwRuG#7%i&yf!Ib8Z#DJyKuh! z`o;6~o7~>|*0)jOfMMDTw-m1zt1omOUg45$FlZ3mbZ8L#^w?3==hZjhmZs0$l7@RS z6?ZdzuCvs}--UWgK=~3HVXciR+l`LyxD)-R#{u!aEKN|^rs&`%f0mR00kV`jIaDAm zJb-MNaYBxoDUO*TKRF~P1muOfvEwwG!(^I?NBJo;Y-z2{lGDxa3hMOefK#a`R!OIJ zetoJv0H>Ufd))+CYtp}~7J+M#b!dsCh~+CkJPPNlb0@tJV1|uAm`56~J*v?EBBYO` zzkoV@cfUC|pdcjyeO%BQLD9<|`9sB!_q8UeGqYXgnb@1Z1T|4&j5yJvfR@RbHp6FP z#v|yiB#w_Pq)$htS)s}t1V^$l{m+0)StIDEk@k7b_T*NGmg57qZn|PNqd9va>J6cv zGp|gQ74}BpNlEg%?v&GRg$Sfw*tr+zQIFot)>GeKpJh0Y&pjtF^g62*VpJ#Z$&Kc) zIguODgN*6X)6vF-fklco_s2QAenq$c4CqW0eWhl~xi?d@pZN#M12SRUsUOqMq70GI z>JsVZGOn!oGfPC|1|7>RrF%{5{OldBD+-y)a)SbbZ&}(YGo54Zx3;$U9oqCI0(g?rRG`!F7|jdOfB?o(6a^|NM5KOSB5qikt1k%W;lqwxTX)elQFVSi)^JvbwQd70wTq9UhJH%GO+T4)E)-+3QK1Q}y zlH1pjuL8-h+mM}C$ldFRUO{sIEMhRL=}jf#olVnw57_9H#&J2850wq^+>P_c0&hmP zfco|7`@W5T1tLDP_O7E-s_D{X4>;Lqs zjej0Q{kvDuu95%yeC>a{>VLfIe|wes+239j94?6W1c=vn9_0^ZI6V5bV)Z_O@f#L0 z4WeBfTIi95y;rQkzyW19CJ(-|zABu6w#QXh3q~BBDxP)a`sZLzk-m7IrWYU_z;_`$ zrs-i`hR3vD$x`M0IsNY&5>t;sfSTB|Y*D7G9U%c)VvlmXBLN-Wpyr~jk2=r#?RmUP z_!drSb-MnZuGtNv*iOGZXXIaS9(hVckannCr0zY5HeGW?(hF-w80ANX%=UINsDD*6 zLJIPta3^$XlK=%4N-~;`j!HgH5AcjBcHQHQG6e&uToM|9wo&m6%mD4`hPa2<-3$;Z z{SDJLXYw66AN45!Zq5BHUsE3tzIHySQ552}<$;T!1F|9_JR(|lC@6f77k}Z_6`4L{ z%*#%AGNGryCFPLqQIRI!?69OT`QeTe{nzAXw3e{TIa#fS5$5>kt@7iUBB#io`Aa*i z3|AP`jCi|f(=`*1NBHH)5I;@egRn3oU?(Q>4nzq?=&dU*_@hx3a`kW7g#`csTx%yN z7E0@uSidNSB9yfG+pmegpx|lyHA=?`3tVp< z%;JqX2K!9knOrk_B?Ina)do{>iOkTB5VuXiEjeMj%W6glz|RxXHX|fr-GUzmaIlaz z)*8*T9NU7!`j9`B*eNl8P;D#0CZmNiYUrEUIyO znsiIH5AflRM6Ab5e}mh0I#7l}9A)Df3BXe6yPh7#TeaKARreR-U%8-1LWWq%sbAam zexucA8d@pSMr^i!qZRo#TIJHvsv;;b@BVDcdSA+=rWl>KRA>k8v%G`$max*@Hya+I zV^R=Jq1~%pn|Lilr!V*`w<8wE-<|tr$}sD24G_!P5kG;Hl*DC z$e?R`INswv;}6gxKSQbHRS_0;$|q=E8%qA|(_~TnFF^}*ce@nr8zT>!=UBagWxo(3 zmBP@%8K*ElVD388L;Fn}&oczQKb0`UBIl@)IDVf^V3PJG&lM`Dc-d5~mD0$lPxpgr zryn=?snIRB&UKE3i4XTiczQ>O|2t0mtxh(`woC6c`1-?x$a&DxI1m65w#^k0N$UDc zCnm$j#uM86fks#OSb2fZGX_1ENlH_t$@g4tY5HzIra5Q#lQ=Z(!O z7f@;o44wd7D=9c*NGt_U0{JQR(*b1j^EK%*_qg*@cu2t)x+Ml5 z4BrrVP)^JO4ng#g7k^G0y(Uh78r(Mv=ZYz}6RS)XkL(%I&}`F|9R!+AFdJrTXy@Tx%?;SPE#u&1 z@waig_^?V9_UNc?b92tPaXDSFOx}T~6I^**_pTXf@{MMv(!A=Pl~slChnMDDwJ96c zuF;Y+^WRUWg&E(yI5=f$7sC5*UiH@knDO=aAlL{!w~E=Pc~!Mf)8O1!j4!BduJnFy zK=LwsPr&k@HQ4t8^B-G2@ay;?Bm{B6`_sPF8?(-0+4TcQhrUXO0sInYa?4Km56dLuPZ;@gKQdWQ3h!=618$z5;9j8-y5suKWY#~i*V{uDk7GjE>OpTwUyW46G95}lol}j&Q;L6hUR1N0jmHx$?dVk{ zY3B{@8n}4oj|J5~8@uo_D~o3p@)^NW-=xo?@0@F$dd7Dp?3dc{Um7eObd1DW zDK$@kedb4>2KS;g_@}dKbl3OIj-C6l)RE&!dB#7o!dvX5p8A3G^eohiU;$qf99(=QG=-UJfo_{tae8EI)#Qb); zFfe-ozR!f@_1t+n+9s+N&DX8|?Fw#icS%?Hu_!~fC$Ukl-{?UU)1eP2XYKQ|uiJiO z?j3NSSaI9EIjmT*&iA^c3)W?raM;jGR%0M|W7sYZM7`?UxFp!O_NH}yUkG6=^?VbD zXuHr6c;^HNy;dQMF1={CApq2A!i?&8G*6Z!Ua` ze0MZ-I_Sp~@bXDm{PBWb$M?asUjb!*1g`x7KI;4MGN5@gU{e!(+{ttDpuZ+yM-}|@ zrNzm;si1)UbKqYsX(#S03IRt7;FG43ppx#OQ}hy4itZE+_Yno2Rh2C;h5ssn0L$Wx z2QX+UZk~c8?Ejl!6&d<*8{q112G4s2)Bfgz&*+ID1W07UzLCVfvp}AV!K6y@bBZV6 z><@VIS?dAAkb9$` z%8sB~3Zto2TOlBh3ZJ5$uIyAnslhKtK&~8sv1)+hH=Q6g3A|Cn1F~+8iv%YwGK!aA zsz#WxGr{;d(L-dnh9zu8KwEYy%mqw zcT%^BD6t91KC%px!-d@w$K`Yfv8n;W6!4h@Fb59&bP~=%Iswo18MD^MG)(HklK=^l zl1B*kA7lkV0%uT>u9gArldvgr?A$@@CkViaj+3^FTk%Wq?~0@O)}|C;TM^{rN3iaT zo>P=fEY&bO01E?vC@ujSp|V7TA#qrNDQ)i&LU~$zk0hLX1!ns!QDBM?c0j`_nCQxH zuZogPtTalT#YNs)ru`v9_&L|`S*l{Ks;q)b7?2x7Rg5Gk2Ct05Z1JH&UlMa%k{`VY zDLnww$cpg?mV*!O$eX;hqr=U97FwDzjY}?3Ll`#)bVA^!Wg5DCaW1aWR{r7Ee6iQ1 z5@f{jh@K$%ODVVgQkIFt^JOsA^b?q+8lp1knb!|keO;2{Xt-W_+R#B{wDdEZ^hAFD znBYjl@qyy6G;EyYWv&ptH82bIOnMr3^QORFeLTZI77 zX0YgPdN?GtekTCGVpqkBK$T|bOJ_~tqPGCrlbDh1nqCu<`LQJP2E%hd|5VE<-HEbj z8)*atnMhVmT|j}MNFb1y{w1Br>laaI2`-L!J_l&NK1iPTe@g9#36luWVZumRI%FlK zfEQpUMXapA;TX{RRQ3htCsRO5xJhK8b8Jd?SWZb^7$q-fDKCa0KT|S46rG>xoF5vN zpIVYXrko3!%wl3ZDfl8@fT!fAF6Cpx3O*MV=u-;5EEae%6t;*L>TBFK$S^mOvA%q{ zpzcGV?OtIyR}nA&6BRc*a~X_fM$t_-vs>j>wo!R^25ve)t(>4woCi!@4=vm?o>*V@ z*S2~JI(&L#6?<>>#sjRyL;j~;SnT8Jr@q)A{|s!v^z|pJ=0O=xgZTqPFhOC5L4@hN zc#S7q)LR)XWm(f@lVM@8OJ(^Q<%O7A)Ny}&T6sDDrL*MnYJR^o8K1yIm%0ph_L~*m zG_P{2c+pakTU_zd&5h<&88ojNaG`ls5Y4MF&NQ#OPxC6wU7A-}PgYF0-KBZeHJVpp z9e;b3AE9c&&FK@ST9xKitM)Xn5~q39^qnpK8d0O_-6)40Y>ld0&EddruiB(}m23^o ztM=ST2B|d=&8G~lB%5gxJOGOnsI57FC#UNQ&l;d&Q2VR%J~}f2DXU8(Zq{!e!FxUpaYg0*|%VZijynGFN?JyXRXQ z^}^x3D#zdp^KL<~=L?ex=mQI1PiMLoRXJj>PwUSOaV zGnAS6#WOOUn2wu_WWM-(d@8qS+24aBeR->SU?8;m0N&%*x{(`mZUy{y8GigjCB(Zu z{4m??Q3jB%NM{uXc*a#;%Bq=4m{J6MykloINE&<@k?KImav&}S1hrR4w?d4_Y z>yqi4(CK^a*4G@|_p-b%<8@!_YF`4VpDfcKuG8P()*l$$UsvA$=ykvSQojpmz*=&^ zZLk;aK42R>z)~?_sxxqXX~6aM07Q1s5Hx7yJm{q}$XGGR*F8wLHuwZI1Q@#&VTbx= fZTw2nYxY3JM7c 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 JFAM_={s)>{Qvd(} literal 0 HcmV?d00001