From b2c064bc532677e6e0a340df98ed0cd19b6c0dff Mon Sep 17 00:00:00 2001 From: wolf Date: Tue, 30 Apr 2002 16:25:56 +0000 Subject: [PATCH] . git-svn-id: https://svn.dealii.org/trunk@5782 0785d39b-7218-0410-832d-ea1e28bc413d --- .../step-14.data/results.html | 25 +- .../step-14.data/step-13/error-comparison.eps | 651 ++++++++++++++++++ .../step-14.data/step-13/error-comparison.gif | Bin 0 -> 18661 bytes 3 files changed, 670 insertions(+), 6 deletions(-) create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/step-13/error-comparison.eps create mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/step-13/error-comparison.gif diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/results.html b/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/results.html index ec9892fc88..c4119d3fff 100644 --- a/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/results.html +++ b/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/results.html @@ -370,16 +370,16 @@ see a comparison of true and estimated error: @@ -442,7 +442,20 @@ Obviously, the solution is worse at some places, but the mesh refinement process should have taken care that these places are not important for computing the point value.

+ +

+The next point is to compare the new (duality based) mesh refinement +criterion with the old ones. These are the results: +

+

+ Error comparison + +

+

TODO +

Outlook

diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/step-13/error-comparison.eps b/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/step-13/error-comparison.eps new file mode 100644 index 0000000000..6e043efa48 --- /dev/null +++ b/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/step-13/error-comparison.eps @@ -0,0 +1,651 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: x.eps +%%Creator: gnuplot 3.7 patchlevel 1 +%%CreationDate: Tue Apr 30 18:22:25 2002 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 266 201 +%%Orientation: Portrait +%%EndComments +/gnudict 256 dict def +gnudict begin +/Color true def +/Solid false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/vshift -46 def +/dl {10 mul} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow { currentpoint stroke M + 0 vshift R show } def +/Rshow { currentpoint stroke M + dup stringwidth pop neg vshift R show } def +/Cshow { currentpoint stroke M + dup stringwidth pop -2 div vshift R show } def +/UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def +/DL { Color {setrgbcolor Solid {pop []} if 0 setdash } + {pop pop pop Solid {pop []} if 0 setdash} ifelse } def +/BL { stroke userlinewidth 2 mul setlinewidth } def +/AL { stroke userlinewidth 2 div setlinewidth } def +/UL { dup gnulinewidth mul /userlinewidth exch def + 10 mul /udl exch def } def +/PL { stroke userlinewidth setlinewidth } def +/LTb { BL [] 0 0 0 DL } def +/LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def +/LT0 { PL [] 1 0 0 DL } def +/LT1 { PL [4 dl 2 dl] 0 1 0 DL } def +/LT2 { PL [2 dl 3 dl] 0 0 1 DL } def +/LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def +/LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def +/LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def +/LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def +/LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def +/LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def +/Pnt { stroke [] 0 setdash + gsave 1 setlinecap M 0 0 V stroke grestore } def +/Dia { stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt } def +/Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt } def +/Crs { stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke } def +/TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt } def +/Star { 2 copy Pls Crs } def +/BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill } def +/TriUF { stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill } def +/TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt } def +/TriDF { stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF { stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill } def +/Pent { stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt } def +/PentF { stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore } def +/Circle { stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt } def +/CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def +/C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def +/C1 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath } bind def +/C2 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath } bind def +/C3 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath } bind def +/C4 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath } bind def +/C5 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc } bind def +/C6 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath } bind def +/C7 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath } bind def +/C8 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath } bind def +/C9 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath } bind def +/C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath } bind def +/C11 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath } bind def +/C12 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath } bind def +/C13 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath } bind def +/C14 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc } bind def +/C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath } bind def +/Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath } bind def +/Square { dup Rec } bind def +/Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def +/S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def +/S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def +/S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def +/S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def +/S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def +/S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def +/S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def +/S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill + Bsquare } bind def +/S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def +/S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def +/S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare } bind def +/S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare } bind def +/S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def +/S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare } bind def +/S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def +/S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def +/D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def +/D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def +/D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def +/D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def +/D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def +/D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def +/D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def +/D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def +/D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def +/D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def +/D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def +/D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def +/D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def +/D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def +/D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def +/D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def +/DiaE { stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke } def +/BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke } def +/TriUE { stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke } def +/TriDE { stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke } def +/PentE { stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore } def +/CircE { stroke [] 0 setdash + hpt 0 360 arc stroke } def +/Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def +/DiaW { stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke } def +/BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke } def +/TriUW { stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke } def +/TriDW { stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke } def +/PentW { stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore } def +/CircW { stroke [] 0 setdash + hpt 0 360 arc Opaque stroke } def +/BoxFill { gsave Rec 1 setgray fill grestore } def +/MFshow {{dup dup 0 get findfont exch 1 get scalefont setfont + [ currentpoint ] exch dup 2 get 0 exch rmoveto dup dup 5 get exch 4 get + {show} {stringwidth pop 0 rmoveto}ifelse dup 3 get + {2 get neg 0 exch rmoveto pop} {pop aload pop moveto}ifelse} forall} bind def +/MFwidth {0 exch {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont + 5 get stringwidth pop add} + {pop} ifelse} forall} bind def +/MLshow { currentpoint stroke M + 0 exch R MFshow } bind def +/MRshow { currentpoint stroke M + exch dup MFwidth neg 3 -1 roll R MFshow } def +/MCshow { currentpoint stroke M + exch dup MFwidth -2 div 3 -1 roll R MFshow } def +end +%%EndProlog +gnudict begin +gsave +50 50 translate +0.050 0.050 scale +0 setgray +newpath +(Helvetica) findfont 140 scalefont setfont +1.000 UL +LTb +742 280 M +63 0 V +3277 0 R +-63 0 V + stroke +658 280 M +[ [(Helvetica) 140.0 0.0 true true (0.0001)] +] -46.7 MRshow +742 453 M +31 0 V +3309 0 R +-31 0 V +742 682 M +31 0 V +3309 0 R +-31 0 V +742 800 M +31 0 V +3309 0 R +-31 0 V +742 855 M +63 0 V +3277 0 R +-63 0 V + stroke +658 855 M +[ [(Helvetica) 140.0 0.0 true true (0.001)] +] -46.7 MRshow +742 1029 M +31 0 V +3309 0 R +-31 0 V +742 1258 M +31 0 V +3309 0 R +-31 0 V +742 1375 M +31 0 V +3309 0 R +-31 0 V +742 1431 M +63 0 V +3277 0 R +-63 0 V + stroke +658 1431 M +[ [(Helvetica) 140.0 0.0 true true (0.01)] +] -46.7 MRshow +742 1604 M +31 0 V +3309 0 R +-31 0 V +742 1833 M +31 0 V +3309 0 R +-31 0 V +742 1950 M +31 0 V +3309 0 R +-31 0 V +742 2006 M +63 0 V +3277 0 R +-63 0 V + stroke +658 2006 M +[ [(Helvetica) 140.0 0.0 true true (0.1)] +] -46.7 MRshow +742 2179 M +31 0 V +3309 0 R +-31 0 V +742 2408 M +31 0 V +3309 0 R +-31 0 V +742 2526 M +31 0 V +3309 0 R +-31 0 V +742 2581 M +63 0 V +3277 0 R +-63 0 V + stroke +658 2581 M +[ [(Helvetica) 140.0 0.0 true true (1)] +] -46.7 MRshow +742 2755 M +31 0 V +3309 0 R +-31 0 V +742 280 M +0 63 V +0 2513 R +0 -63 V + stroke +742 140 M +[ [(Helvetica) 140.0 0.0 true true (10)] +] -46.7 MCshow +993 280 M +0 31 V +0 2545 R +0 -31 V +1140 280 M +0 31 V +0 2545 R +0 -31 V +1245 280 M +0 31 V +0 2545 R +0 -31 V +1326 280 M +0 31 V +0 2545 R +0 -31 V +1392 280 M +0 31 V +0 2545 R +0 -31 V +1448 280 M +0 31 V +0 2545 R +0 -31 V +1496 280 M +0 31 V +0 2545 R +0 -31 V +1539 280 M +0 31 V +0 2545 R +0 -31 V +1577 280 M +0 63 V +0 2513 R +0 -63 V + stroke +1577 140 M +[ [(Helvetica) 140.0 0.0 true true (100)] +] -46.7 MCshow +1828 280 M +0 31 V +0 2545 R +0 -31 V +1975 280 M +0 31 V +0 2545 R +0 -31 V +2080 280 M +0 31 V +0 2545 R +0 -31 V +2161 280 M +0 31 V +0 2545 R +0 -31 V +2227 280 M +0 31 V +0 2545 R +0 -31 V +2283 280 M +0 31 V +0 2545 R +0 -31 V +2331 280 M +0 31 V +0 2545 R +0 -31 V +2374 280 M +0 31 V +0 2545 R +0 -31 V +2412 280 M +0 63 V +0 2513 R +0 -63 V + stroke +2412 140 M +[ [(Helvetica) 140.0 0.0 true true (1000)] +] -46.7 MCshow +2663 280 M +0 31 V +0 2545 R +0 -31 V +2810 280 M +0 31 V +0 2545 R +0 -31 V +2915 280 M +0 31 V +0 2545 R +0 -31 V +2996 280 M +0 31 V +0 2545 R +0 -31 V +3062 280 M +0 31 V +0 2545 R +0 -31 V +3118 280 M +0 31 V +0 2545 R +0 -31 V +3166 280 M +0 31 V +0 2545 R +0 -31 V +3209 280 M +0 31 V +0 2545 R +0 -31 V +3247 280 M +0 63 V +0 2513 R +0 -63 V + stroke +3247 140 M +[ [(Helvetica) 140.0 0.0 true true (10000)] +] -46.7 MCshow +3498 280 M +0 31 V +0 2545 R +0 -31 V +3645 280 M +0 31 V +0 2545 R +0 -31 V +3750 280 M +0 31 V +0 2545 R +0 -31 V +3831 280 M +0 31 V +0 2545 R +0 -31 V +3897 280 M +0 31 V +0 2545 R +0 -31 V +3953 280 M +0 31 V +0 2545 R +0 -31 V +4001 280 M +0 31 V +0 2545 R +0 -31 V +4044 280 M +0 31 V +0 2545 R +0 -31 V +4082 280 M +0 63 V +0 2513 R +0 -63 V + stroke +4082 140 M +[ [(Helvetica) 140.0 0.0 true true (100000)] +] -46.7 MCshow +1.000 UL +LTb +742 280 M +3340 0 V +0 2576 V +-3340 0 V +742 280 L +1.000 UP +1.000 UL +LT0 +3431 2723 M +[ [(Helvetica) 140.0 0.0 true true (Global refinement)] +] -46.7 MRshow +3515 2723 M +399 0 V +1074 2064 M +427 -39 V +461 45 V +481 -391 V +492 -349 V +3432 983 L +3932 636 L +1074 2064 Pls +1501 2025 Pls +1962 2070 Pls +2443 1679 Pls +2935 1330 Pls +3432 983 Pls +3932 636 Pls +3714 2723 Pls +1.000 UP +1.000 UL +LT1 +3431 2583 M +[ [(Helvetica) 140.0 0.0 true true (Kelly indicator)] +] -46.7 MRshow +3515 2583 M +399 0 V +1074 2064 M +252 476 V +255 -817 V +233 432 V +254 -175 V +249 -522 V +252 266 V +2806 754 L +253 580 V +3298 713 L +237 254 V +1074 2064 Crs +1326 2540 Crs +1581 1723 Crs +1814 2155 Crs +2068 1980 Crs +2317 1458 Crs +2569 1724 Crs +2806 754 Crs +3059 1334 Crs +3298 713 Crs +3535 967 Crs +3714 2583 Crs +1.000 UP +1.000 UL +LT2 +3431 2443 M +[ [(Helvetica) 140.0 0.0 true true (Kelly with weight)] +] -46.7 MRshow +3515 2443 M +399 0 V +1074 2064 M +237 -250 V +232 290 V +257 -326 V +244 -337 V +258 3 V +251 -13 V +239 -210 V +239 -187 V +236 -37 V +3503 878 L +1074 2064 Star +1311 1814 Star +1543 2104 Star +1800 1778 Star +2044 1441 Star +2302 1444 Star +2553 1431 Star +2792 1221 Star +3031 1034 Star +3267 997 Star +3503 878 Star +3714 2443 Star +1.000 UP +1.000 UL +LT3 +3431 2303 M +[ [(Helvetica) 140.0 0.0 true true (Dual weighted estimator)] +] -46.7 MRshow +3515 2303 M +399 0 V +1074 2064 M +180 56 V +106 -199 V +364 72 V +192 -153 V +272 -562 V +305 -91 V +311 -44 V +3125 958 L +3462 689 L +337 -20 V +1074 2064 Box +1254 2120 Box +1360 1921 Box +1724 1993 Box +1916 1840 Box +2188 1278 Box +2493 1187 Box +2804 1143 Box +3125 958 Box +3462 689 Box +3799 669 Box +3714 2303 Box +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/step-13/error-comparison.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/step-13/error-comparison.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e5b0fba462efd26e3b60aaa2380ff81c64f6917 GIT binary patch literal 18661 zcmWhyWmpr879Ol%)aZdUDBT_6Mz^FOB_dspMnoh=jSvu}b4Yi$qZ>g&kdST>1O;`@ z``z>Z#QU6l-lMInr6B+K1!*72H2?r21@U!xO-X^0unc)FAk1ecO06lf83ha}fe?k! z_{;|)B_ye}tPSi2P-jfRt_aq7ls`a}LTegY8dG&)YiGw(Jf}(6q^Y1O0x3vCi=c5P z!*_*9Itv&oA(WPsp7JorP_KdLPETig%w0|iS{ep-c27wOr+2RScnD6%<~7F|yLDG0 zOQ1EawNoj+Q%Cb84+4k?Iz2ljxDW_ZgwqG7Jvlw6bTy}aQv|;S0+s-RU9Ej=;Un_Z zR1pG#2qH7K7@-zS6oG+`K$s!$Nu7dR@|e< zZxeK-{_B)@dgcF2A!%_uKp+!7$|RMH?Cxe zG8Y@yGE#&Vy z%9zQRnjsLH2sK?!r5mMF#3{nYTF=>3Ug&NfF)uHafq{-8FDEY`C_sbyN@c?~Zz&*& znB=SUerjflprUeGki5TT~3Mnp&?fEb{nq+*~)XlWwYS`+dL2sL_yJgHq3q6z_< zL||o;`6)v1@FI8+2qgr9HGu#lP|^_?E}=3DWR#SIA*~^Uzq$l1f(YP0`F}3}$cTVu zayFfYqW)+ydLi4fhT_3EIImuwPGiY%B0}0@ZLASD`ie^(%ck2@I{sR~tjc!0>D^?e z#FL3U-R83CTm}E*wejZi4~58R7`t9e#T-uOwUFIJOXYmIF-|XEueEBi+N#-OeWJDc zQ@z6=mR-NCW~JF}zRGU0t#-8?y)%)o-(I)g9ddcRKG|OX<$VN@g2SMrVQVm+Uf6!B zqj6_6l~=#OptEUjGE3TXW2&?H;6ssmB8OpD%h9}@uA$X*SL?~Ah9{E+hTUynS3CSq zHm1AVzkR_+Q*avfbX@EV>nj?8iaIY3W^ww3M!j7>PL`WJzs&S@Uw_*iBqnm+@9X(> zc{pFlxu?J$LBXR>f|T(kjfjm02xw=$e2MyXMY~WK@tYQe2LY)N=~1*RagQPisGBcg zV9BiH7;2bPvGy$`kb^o@h@k|!&A2Z0E6H=4pIm~%d zgi9)Uvu`z4!n545@h(xiE`ud0>ZF^zPtL&P=~+}3ERSC^E_L$8fP8-OrJ$`BDo{~5 z?gFo&&hFfq0d$||aP*Ll)Lf~8hj6Ut%u!nI10$uXN@=~SqkN(r$8lxBWG{cZN40@D ztQt})MIuQ43s!^bVB!-&jqV?Emeb$9HCIQaxO!3#WlR)l1?p0WzT?*YliEsQSR{zr z=GgVdV%}EsH<1^M}A@ zi*v`n8?ESv^qGt2)-=LF4MXJJ7LpH{tKaxKCIik%?0Yk|-R%VHZ7l@{H^6ws6cX&` z>GYV>%xQ(o-EofRR`dR5O4q}ev+}ylnh*n5JO+V=^Jzhz%VeO)84c}Pwe-yL4ar$D z9>_e><~4jRW^lq2i|CR_>z6g5C~aM|GLs3`Do_xOCGtOtqsoxItwX=G{Cqr<%+uun zGr1Z@1A=}IboIYhvvmC$sP){5YXrIE_1A1a*T40|19Niwi+{qGj9*N?^q|p?$@lAw z_ktd!&>m`S)tQnPv^y30_pm+)IuYa#{wM;A;r6$>3^11V)Q1UUjq-Q2pA+iNkMZq^B{Pdrw$@o-yOw zkDk8V!aZ787*)M~hY6Muw6l-ZR(UHi%^e&ay^3y>Yxhomu^@ng%F3tq-1YX>PmEjh z;+LJa6Ad__e++mvivLMYQbh zUa$T3y1{SsYea<3M!vqn#IZTZsf-WYp+-{}213`&%N)*)t*$UwrLsVqI8)(o8%%57St&>X=eR6RVKHmlcx81FFi{n;m-WE!Gj0M zNmY4T5c8Y1sFpdd=UI^52X307N@w0k;-o97vAh2J@w2yRysPSU!-r`@u`DZ!Ls^KP zu{n`Gy~0W70HHUBm6G8=B#$zo)8<61u5gU4Uo?7tNomAL-y!+CgPM9a77qgjxA5v1 zJX>yg*V*{yXP7&GFl$%%zB$+Unma$0hcc$kyn>YA&S6uf_u9bp4&OTph5JhBKWZDf zoO;|BGsw-vb1uq0>EJm^Mogm(Qj#d%x$T5a^lYrt)iUm_qU@{{JE|-yQQjW91+1?t zW}K_csm4XrpQR4F{|J|~<&#H%-hJB4Kz?E9DPpl@>P3Lb{ z;9^qJT$Z!csX-H9A^!`QNpHFaYuV|E2l>49r_dqR@E(rYZ4xw+PUV>aS1k~OViYRBl#*9 z_mhR-Y#(lhCmG}Ui!49Xm@9}ekD#?xNRnF_e{rExV-a+zb~ClfxnUViG9_AlPxL_4 zR5r$IbruJ z966mki*eUSsg8g$-tX?%keqqM5r$q(GSk>KhT)FgSfxomokg?t$NJdTnkS-ZMz)`q zrhpUR8HBQzTrrMw&qhn7hbT4>4uX$BvDuTE`{wOV?=7A)Q7%D;*7_#s8& zEkEk~_;XwP3(_;4`N%bJHmQ;=H;`o(wE>irZ&u&JxKcR5hz|0o*)2?@1lv3)Gm;rl zKxN0g2Cb9`9wtJiz~T(HJ8Un(97borAY3%H)OjSmz1{buo&GK6r&nW|QedT!Vy=8N zxc<@hNma)7;m>|~wXWW$>4?=YZ2V+X`4K6RlMaVjEgKiW)pQ^W;bQAVcj@_0!u!pmB>ES=ZAh{U4MVW9irPVv$ zxN#UP&w66}n8t5Opwa0o%=(2D$w+yf>)-2~`pLBg8H0K792Yb1O^0}hxQzKb!0;`!qNln80 z`GI7?;ZK5nR?gkqE#d8LL5pqh`g5>w`E${+pzCXJI5eE5(VaijN7)MfVJW&p%lj@O zN?E~=F2t|8ESmoSJ)p%-6XH58&z+18Fb@fkRA(@Q2lAE2sL#8F078G2zeL7kxDnw% z$%Y7FIDZH%1~Q zB1ZFZ^!QJ7z~*z8!DqgQ&%J`ttT$km4k~nr&yIGqhgH7o~c4D?k~GyEBHEf7>XsrQUv04coSBU=<%R9&I)YqSnQswU$Pb4 za|~1H5`Eq7p83EtwEP*cG32i{yklVoo5}U5|sxS*(Jm!um4;8ry|DEM$=bE%|C;AlPKQ0G$)ArdRqZ{ma zahEwl$TwcAJjFnszV`;!+M#)Yh^rn6s^fZkJ2Qyr77HYKo~jciSQ*|COMH>BpXSRP z2Yei@D)G85lS<;+=S&Mth>!Ev@eV+{n>F~c-^B8wBB5z9mv2+_ECr9P7#l8Zw8pxUWSpQ6<*Bl($O!f~Dtvwdo{VxN#RA#@oN5O4J6 z{D<7!%+A4wsj%q|xNTfAYa~(}NI;Ose9dtdW(h=uXWEMW!j@FFIQ&dd593=54-X zW4_o{P_Zv11povwflwep*|YFNUC0W&kh_?KA_9JuK=<z)`i#ERM|x&&Ju8%szTZcII{zh_f9r4}&3a01*oQ6(J21SjyDahru{x0BAu9nKWb!k<$@;Q-wM z(9(1j^O)esgy6>3^cG5RQxCdqJhfpC6%t>9jG(+fj!>_nGn!2&-2%Jmu^c9poVrum z>A`oG3&}8Y-I|pGToZ)DZX^2 zi2D1(>g)+R6pYCkOIOeJ5=sk0J!64ji%#9EAr}>_01z^jh9aWkJ`A^ut^`Sf<~-mK zY(>!L3epRRL{}m5yh2c-8sY&J+^i970Gy)Xt4i>7CHSTiZtA#Z7F+R0uvmi&I#UJK z&nZ60sY5o@eO0QXFs>8PqwD%y{M2=H_-g4g)=O8* zOdl?j*iLBzL82*D^dM=ur-pSR)nU7RzC0=}tq_uhdSi?oy}O?%qVokm_=U&uwbmfKm_mW=RN18aHM9r+!AT~;4Qjwf zc~r(C!=#N(BgmoN>h5hU&O8jaZ!>H%SxRZsD#nesL*cnEz|ALtw^><6_29ebP2}Bp zFp8S!RD>6wzDkw1sCB0-SPrTD~JR9K&1?g)9>SYpx;#pc-g1fG;+j5Dn8-uYnE zWJ~&5Qex>B;L+fQSD{%~lSV}OE})M6*0_Du)Ux#etg#8I1Q);6?z+~*T{FdN3n$ie zkr=|i8+`bwGP^v{Bclhx=6=BCy|XRO+3#WWJEaY^92Ig)OHC^UOH%tq;O+s4wbVV8 zHqaT+qH^kY9V(-zrpdYIzr!X3|Kde@r+%H{k$^!6d$GKCdAPMJZLX%W zExkQ@lx&WCz?yaE9Eg+v#ZAE%LqD*isAsT)Y`%*Rdlw-nYIXQb0s-zo1#*1Bc&nC? zeVR6OG@F|HW7bujSux2DpGbljLfcL)K%T}mm#0890kk-Rv zWdpoQA@Et;w~P^0W3oj#Ah9+iO4;W?ajO_Qut~{tK{K!kpO{|bBGRt&Zmqp3UX34H z6{W3Vx|lQOUJE~`+5Ss2C9x(`MC;nHHvM;vDsAKA3%KSv&6pwW**fjT-7hN+>m0sc zmdXZ0JLwxdX>I?k51iA0wZ z5i}GH;S$^CPWd7lxz6(Ii(>ye^VVCC&nDOeG_VQvxkJl*Mkj9sXIG_F45wA*pu1;8 z?|M$dWxva11e73-6xo>y8LfjV(`26d$neJH|x;v z)7qh_n*+wc7ZPx*x-IJssuvCv5*+KUJ{!LN5LqtD^>Z4cCi-4r!M>*v{GxYHd3Gl} zW#7Xdt~^UM_!a63mkp^q2n*kn5IaC4fyqXDZX0`~Ta?yy2YDPv&o>UP)q!qj6yHP- zEbTY>NVe&H_Jkw1Ln_xZFLt4gzyaf}-*@5N9MsbGyGeaOQj;%`w2hm)Yq}{%AM+11 z><=z`Pc%27;ec(^f`h?={dK^0(iw$)!2zy-YKnTBJmrg&7^O@RG^=0}ZUo;tI|Zg~ ztl01Ehwp8u9{sLelQjl%rJT;&A21eB^=*6$g`cjA9lfB2l82uKimgx7u4!x>{|n!2 z2v5@&vuH62`xlf231evUfw%RYkT#x7B!B5sB_14m!==JERsb8P`BdwhQ2TyLjHFRnoCgR$yn`|h*DU8Y2vvI9GXM@ zC+*RG)BE3TG=$eFv`wmvUYxWTc`WnXj3H6-TFL%e^!*LT7pSSv_Y+lk76p*xR=GiYM9&vtde-}6Vn@Av+heOvq200fxu zt>PnRFh|@s_m`1(2l8lT;!}$nUV^xPUTD&8_eW|fSfBEGX}87Fh!&_k94eKL+{)`8 zFKa47Du_Q(n#aZMO`}&%7qhZ!UG8T}B+dqCE!@#7GbAU?+B82lud=AMAI`B5o;L-+ zy}`GZc$CB)vrE)nAAGgWfC!hY^_y&scY;0y(7$E=wkl1X`e6ib9hpzl77W2fF~huAxlxcsz4#` zg-RVJ{iV*UQA-?qeP1QZX>e))es5z%9imJlf1Wx2V9>zme)Y;F@mocdC20_AKI zC9zr))AweGtLL>muNcJIFH25|p1rb<7NTRp`77KL>`=dp`zUC>hn5;ms{jK#t!$lk zJmE&CctPSMWs<{?PoVBvDcu+m37M$4r~5Y=r;}wrNQV-Qp_MdG)Dm5MWwxW9%4OM$ zGe)o?w*{t`q%ejJ?IK{wX|j8a|K-79Kt|Dq7%BJJt(Hy3SgZc;ys=mN9+OBkSt66T z9l6lg!h+u+_1$FJQBR;cTix`xUpYiCjDc?3isyX{E3WD8@PLo8+~dkOTs-r;9D5aZ zeVeQ&!ZSi<>W1NM`c@>@I!T!-&s1RRqo(h@p-hZGS>zwy6m*P zc~)duQN7|k%W&y@H)@j@k8X^m!^nu=^BQ+6e%stXdEljoW3n42D$0(DmqDvRR7tKFWI){p)FeYe}aI z|3{CRM01GtSwH(7?^&k1UXkR~cePk&`X|%8h4R?1;D?;|>R|lkX0l%*{i9Sq4Z2qv zTiR7XZ3->)=BK07{U&0%!hWnmC;s}4vAmK*Z@&tzI?sCKd%J62&6o7q(c*8{Ple>U zs?WbpONBq*eG|NrFkGEWs`Twcp%5;~f~m~=>Py_e%8KoO8`baM<5!ea)QStki)2q8 z0eU~(CF!CJThkk6CfYN=R2bml3fXJtYzqDFX;Y&&AxRXT?170ij zE;GE3VHO<&u$fmemy=FcNDz0Gc1*bt2^3Wes z`xZ?(2T5OKW3mkq>@z|ePB4X5(z|6D{nR^%cnH~dh!dM@Y6#Mn-zfshA5WhTy<4F4 za@>f?`!YWqoBVLXbyi*kSV(~wyLINCC!XQQ<$e`MX`f)6E@f2Q=Ts3m6wLUvEfHe$ zy8OY&JR$r5REoLApGi!!V9Jx+xtTyet%4QBs@OPg|t}3Fg^G zETWE7k~fPjizFiaU|}W-6)x+h8|`~sv`NZ&d~A0w!0!Wii@>NL(PJy5g}euwl>KeS zI*EPcPvfY0Ic9X?e?;jZ5178;F=WLGDHO#O6|93%)ArP(EoBr98zL#`ofA;>@i5tu zkrZA@S*meEpjK4slc?NAvs0^!SQTd%F2 z(9CZ(is_+~DV-w7O%O;~sfHL1;L5aU)EU+D$T2yIav^jUUZ_TGw+8W$G06%*x(la( zR**oQH`K`WW_RwM_Ok~6R6oV1^A<-$ktyCCSD3&vsU+R+e4Yw<#n>Ao^#}**+H90z zHB8O*E@J9f9>9H3@ysAo4Btn9&HdIP)u~Z$#{bABs(HoG=VmcW3!vpx<_<&RL#N^& z$l%y}yEY=EZavS^xRVNmy4+Lav=tzspQv%OJr7}>ubW^HDSjnR9Ev8NFAD4-VLV_S zc+7yC^_OEM0hk(tX*=8e`GM59mxS%1<@{*SG7{_|>%8*(@S>u)mxAoPW3Fjwg1JNQ zOM^<@Xoqn?cJ_bUSOYg#U^U4>Sv=x?YPHeQ_Tx|2$8V8WqyUT536LMvNF=cPKqLwy zI3)p3dJsXCUKC~BQvx*@VA7rGsjz=oO$w;fPt^c$eX$h;^F;Sf6xxiE7V8>FhVJyu$ti8$4hb!J&++rF z%;sknpMZ*Ct_w;GH%LwAM^){1G?HhOA}pd`)_CJ5)qCRKFaTm$_cH+CZ+ts9%taq2 zH_g;$HarPG@RcRKpd`t7xN9KLj+jaI_1oQnnz1}>u|205p#Q|F8UmvKi41L@e;yMb z@z7Fl>vt~>^wV=3MC(%jwgsz6>(>!US!bNA<=H3bgujx%-lb%fSyLFj4WZvg{r#O2 z{(Sin-`AbKzDrer8>UAc--A;`je|sOC{$?^4VGn8kTH}t6zI^HL!GwcWynk8NKrJ% z_ZYLgea}b@12RDVo96(ikdrWU+|9)yT2$#^V4ntLt6SOj?_}l`h{8?ui>&TfrZ_r{ zN<FBQ#h`vy!OT>d%Kcf)jF|x~X zwD5r$UNxiR7{NR>#s!WA<%AcWz05V(Z_+7GX62fTBKL7v&SmwetT@9l>^X0Ai1n-g z2t@DySk-FkfYe9>qp+9(NmK)v z^#-1BPAV=yO2MM;olf#19w1vYkGfv8WA0F z1fke^O~VqO0E=s^97fPqkZqERtZ6KX)Dan<7`7nlKyBthG`!?jL8S$z*DgSd?U&M+BXTK z6?%1Mg72Y~V^o#zQdFYF&KV-u2E5LrYyl)8$~qX00md8>e}Nc^S&iL8m;l>I-ZZm$Rpiec{P9w`N(+4hVt+c&Zc+nsZ^y+#fsyjZ2%;k`r`)HU_pa1 zp5G-Bzi)9lh}U)`iUBg+I!7bNFv9+@hkh{@H*r7CwVw6JMBxit4RVho^wN`tpBZ;| z^h}7P<0PzgF~?Zolyd)EMeR-U{^cDPw)d+%diO%eE*j(-HuWZ@?clxdW%x{ycw#Ldk4j65x<uko}+WM zf^ywt#-d{t4x^Jb5}I&WbA_0iL*NV>^~>`XuZCDre9Ul2PU?nxaMQ411h;ug9ugaS7g~usm@!w=%vot@F8Mw)m<1v@%*zC`++KE`-kZ8y|tj~@1$=Lmun}C_)pigVq&{-gP z*T>prh?stNtIY!!_NnO52O5eHgXse44k$Lk5WzD2k@6Fb#}Zt~l8GDY*&6R=k?2j# zGAqYd?IP279J;;#&e>@uZ0GfbEEYWj7l*b|i&{mf^8pbQ@6BW=UU^`*OR(*s(@_f5 zQO5Jtv&)q?Gk?vjV2;Z)$9fV`h0dFC9*g|WZX;U=qjGe86#}YQVgAJ`SwV*?Y8@6( z#J#%n;Wbqe9)$DNEU){oZ?J{V4bg$KfcW)?&9fbqh=)}InlA#4{{XFPZ@9_xVG2dF z%CgoYs8SWZhctf6%+I13bRxm$7CRL)&C3f_4ORuM@$6Qw>K9?ET`*hpT=Un$*2SVW z?-Z%oh~e8&;H;S8n8vL`naV7QlV#*20QPRNDiw0)_F91HXMeRd;%Vh zs@xE5I9Ra{wy4CjX>qU8N!WaO!!p>*wWUd|m%r?VwBHE<&+(9jNLb}1ubO7q*Br)f z_Pj%~+h{FrD1hv}gzoQ-gYu_i&l$gvog|CgO)vr{`s&1Xv_>EGQeRV+clE-8)yIEp za-6;6`X)<#ZyMriSc^NTkm8R#hSR%|=AdgPr2*XCxPN=nW!_U@q_xm@KRyK=%X z57ICrd>A$%v;~%k?I4Y!CMKq?V`Z#2#7^`PDUT1DHowl9CmIvY8&fyHI-9i$A2$#S zwIQG8)VK4BH_5FXzv|*NOcH-4TZJ1tpdNEHBbP<@9a-!JSj9@RrS8-UZ5vz~mrO#a zxT2(q(@mYXTLo5HJ7#Rth2-u~%ZsT64VAdU_=HQMyQg7JH^whm;}|4js{*kqY1w~I zKd@d@pwxua3$S8AMdAe<*J-*W?;5VTy`6Kk$x;8L$tI@*bm;O%^`PK$ef*HrEkaX@crgy zDcaxAAz96bMgA!NV5;O{yi|(^+Hbh{Z18A^RXr6e5hR8(Tx*Tke3kM+A6DWd=3efw5Abu@_9fK`FUyMMWo80a`@Db7IBTsyMj^l|V=v2m?5bCNj81Z*h^mfu_rSb8kD)~SP=U`n~#RgVX zmb%(g(Kd@jW%eX;lWW1{c;4}=yqe`Isap;BYvnn{6T*R5hB6jm3qO9fetwAm=q1k^ z&2Zyw<2&>|n=}L;#q8r#ZR~w>^i}L*6oZA=E;4Sb4JKX`Eg0b?dUn)5w z;KVml)E*quqB>TIS+?sl69O6Mmk%EX_UQdFO38H>=PYXY=5=sq$-7k4_nV*rNM_ov z4(4ig+Df*yfp?F?87JYS7PO{&sxQ8h6Td0_CVBZ5X0tpq1M*Av!EVc}c%dB@jQqYn z{H_!l-5vWbhy45O1}QqPg>ETo2P;uBSQ0 zoRhWt(+v7Q>s~lfBKH(Y(l+~ zAMK&$Ca!8gYun@!&5cQv7r)9}YZ||jmqH^eJ0?YO-`{HmHfN>GJy@I!3OssvN!R0D z1`yayCDAfi+WfixsGc*!-r|Cci$9)60ofDX=InB>z~KWQmkZfCYl^qd7Z1wo9i0eD zH&>sLpzXOJEgm4hHo1avQ03-Y4KZ|=-Thm-QE*Glk2dwW6RWL9GiM{z4!%5JV`r}W z9|mi&LPa-&+&NO7LD6-NwESe|kXP5vcSHJhZ~Q$zFy280Y(8ar+!*``Ok=s9^e;F0 zsd6oBN8|As^D}V5Q&_NaFhc8DWmYqJg>==}ul%PlmFj^zYr({wpX{@4C#68<_V^vT z(~U7drFX{HZO`s&bJ)(y0ybsK8$$C3f0v!hx>`Pq;U|^gC-XzZq0fUFZz2sR&-Bp+ z`U(+c?T)`%$^NOk&dOx)HX(znIZ8gaAIq5`N1vYq*-D{Gk&#26>pf-%Kd zCV|%>n*T7F6MnKDOfX&q?_7md@fUPZ40u&^7jcqp{|A7xtmidv17|3)TF`9wkzeHo z*;JgA6~M{?NR52DpT9lK`KaOi^7miDg3;YXt6n9Imy1t&1I=IH-c_B-ziOy>Al30t zYBLhN36>#?0081yRv>gDZs(i*zCjyKHmP5e^L@#Bd(_+{bIa*I)!3aLUhs~k@@S`v zxPRx<1<)Hec^ygJ;&}tnClLsg*q?}!@ty%i2=Gl8ipSB3dR$eE8?e5mdx(EUMoX0q z5eq59P@=dfnB2ICIxf|NHTtha7x7O>UOk+o1ZC4%2=z;iMi{Uw7&&UkJY_--J%_V* zr8{N~se9Z=Y!8V$3;7t(x!x}TbDz{alMpZlB-}xtsi2y6W=phRv1!K|u!K{jQ=zm* zo+{i!+YUH3b3MxTGCQ2DM1OwD!i8+0o?6Jz>3?@Bm2aQvh{6WGrwPAs{rLGUU9+zL zx3gX@!4Cy2FAt2eH)nEpp=I9$uXqgs-w!4~JS3_T2eWV9Y~8vj5?w9UAiY&6;$Z93 z{VejM`@I^o2dYMIEG$uGV`w_I4hc!aaQ4s})3B>)*DrAi`J)BSko+ve=WlusXkBhk zDD3Ex$z9F9Bx?Q$#3gH?b{Uk}=S=2w=OwsfBV>d+OEpg)Fg{uo@8Q-dDXkasBKV@u=*H5!9RW&pBOTqx9PR)8e zJtH6hYW~421Hm~hyx)^nd=^ehrr4oaS|KE5u@POy5f9(f}>B{vqqW=1*L@U0tMY?HoB^vnY%gCC- zCfT|PO*+L^+6-)6UXlD$#Pk6vL%#j6NAchPss!k6DKrb&uXgyEt7y|DpMkD^5oCg8 z?2M~B%smZLMb|5=wNg|A{LGs^N!Wa3{=v#Hv9w+r)jI0UTUNamNaHkF^%O4ohPe_U zmn8#Eh`iLapDq50jOFzScJr0?VOW3FUfWo3&)|oqL+sba7_rqi4Nx6>Jg#j!{ndWQ z5m!!b*U~!Mbm+8A1o4^9yTm?)llbBSWxcdZqCY46S}(=%Bb)B?uK_pyH{X)KZV**; z`_%8<4cEd)Wg#4AdGAARJBdRMIXZcOXAA0zt-pHf3sgrnYfg^oKZAZiyhe z7K^4-&G-#TwJ_4A~S6EoFUJ_f(JBp<0y~>!B&ZM9Z*QF8Le^-zBKi^mUAqY3oG4JS3+H zpBzyTac0NOD zNtfTZ$a-N>DPY=!MD9jzs&=r?(WyloA z`l)+now@u3^@RG2rSJ6k!k%>R&sYWBry_nV`PDdlFG|R~*yWhWg>C>3dHKeYhihlE zucRq8n8x<9jOggF>ad7*nE`(;lvk5hl72Yv`V-)o!~9rVYNVKCVXQb`^MX%Xgl|&E zCosb9hev%-YGsO4tNKpFgj7T-O?!z`8kwR+RnpCD7wLIj$d5PDVI*VhfF_Lrk|+-* zJT(_vw1QYRPP3?!H1Oi;MJcPcOUe9c@A;+UBR;tiDIq+yfmQ#Q6r_3 zbo^^f+|F*Ea!WZ>L2y*}ofU|?x>_P{f_&n?eESG+k{JE(0h$$oC~1ZYhYU;;*KUyq zCZQQOyZg~deswRdnAwq5TR)3qIG2MiE197X)5YXlW~bGx<0&VamNDgf88r1|k!g{u z?Qj4|+)AYXx8t@|ajGp92Y;8|Fcpfok=9R#{S6mMxw+-8N?kO2sj@&o-ec@bBzn7V*IwjxI^_;-!drE|Mc;7dKeR0hS69 z4J;rpIZo~P%vY)4*e;VHPGk8wrL8Xzmo#FMlJc96scMjgK?nGl62p?sQ}Nt0cdOW{ zb?_7?`>ih7dxUDdVjVe8jVay;xHUxG_kyRzeP2s>Ksoq(LGZe@0o>_B6@+!~$~^6H zR+D|{xRQv%33bYOn+24c^8G6H16z0kJEVj8Vn|l?7b>aTXy?|aoER0=B?%bt19x^5 ziw)`L6v{FQcBjrGTcTgp!`BPkUxKuEBIE-&F=~fniuyiBw5M*`(a6la**G70jdvWpwkOK*dgO?_z!xJ1=5;n{r?t6#ro9b^p{ znqquHRBtWu4N9ikraQ-i>K1rktQ)-i9Xp=n0u+t6{@UP`F}t>22aQ76*2ZN0G&CRQ;X=AU!f6HojD5Iej(QI&(`AVcm z$kI9cknm=T-qx_>!mvI&Q`MNE#v+v7Z=O$)dj~_ha649-49E>2$(9&Good1=Oi&61 zsMC1NT?Fpgm!*Yy?5Qc)z!qtw{Q@{ov!`Evfdt+Wt%l%Ma~f#k23i70f;AmAYTkss z0Btf1aTst+g>BA@@bK1QsY^iDc0(ycctl=gMF_^dgZ$TKKBR{eg~UJv1|4EFYP_|7 zsw4~1Q3H zL&uKtae|UHh^t_TWjRXv2K5Qd*coa1D+8q}q8_9>1YpI;p7zVw0%gNy1nG>n5qv02 zls*xrzMrJ7%9k|;P)Y}>YL#kgyd7)(s14t?Mu8O1V-z?rh>QqRDHOyh?%DvOKd_7H znlKnJF#NpxIxC}noLvu|C2l;U^*{%eRDx-Iy^(}LY^qJX-~@N7p^R=@d@N$LyZt~c z!R!q&PI?HX^UDNlN`>0b|Y-rSm30NVO zPR)4a5)C2!k|t?(dST0B!oIf|NvRM?iQlU--@{+mzVGofwO8bJRN7z>77&H7M3l_YX|SYe8U zeYQZ>SPjwO{N%U3c*X#zg(Tc%@U>QDiFsv)-Xy4IU|_dm9kHUloDp2ZsmcLnaf@Ke zqow5{v0#W}lfaiMCMGvw6pbfA#`?EHH1exJ1x!N)8-jpcLA6vhl0CiR(4+Z`v5^i`G!a*|El{04 zB0TGY3UCQ$%POIc+0GNZR{^1AxPv0BCyJ4m)fly8qQ+7;BD}lx5iUmlu*27(75F`{zfNZ&_j2SZfMXt z0U8NvIrfY@-Hr27Kk3vE!e_b{#d<{Sc(P%JEA={6V_&z7IrVrM){sr_f;LQ|JH9iF7w}r(^XV&PXMWMINj07 zD}@iy5OUGON0}mDb)mMbQ|1c6lPzUe#Zyi61RE;e2} zHc=BmkJZttsS!uD)DM_@|FC{KczTfDVnrM94P`}kL#NrDR^K-TXtknfOV#hE!~kCE zlTc`q(xW>N$Gacv*PM3J;{{O+k(>c%J%Gx`!~m}3iZdMm<%_Um5*iE{MN)rK1JmBg zSH1HOn8&CPlEm#e(*FJqxsizpGO|~g@gz!}D~Sm%^w>?qu@}U(<9rhB4Zgoe9T2^~ zwMN+vny6$8M+&;0qMLW=>AI(w4d^Q)5@O6<suOcbz@?Z40}6sm}d*pm%pJfK&q)&_UGCZV59Iu-}-Z3&UTDB zX)MHLHuH2J<$&kWkTgX+eTHnR*7?qNxqe<2MSmX4?;jVKlKm-U%%IXPIR1N8s-GZE zBX|N&87T>+(LhhLg%j$7XPc^)zY|3ZHPn9JZ^rW}E#cqx`;o6Li)4yhHl9oV(F4ER zuh)5pazj7cJwGyTwtILfTaVpFOJ_yA^$m)mMDn0+P-AaL8JbHkyc(~saMTsBOWI(BWfjVL#lFC@g1OMD)>TfgU>8B75k!gk-0C~z2o|j~c+-J?p zm+o85>MzL|I5h;Wq>@i#g-ZwS#bJs`EVPt_g0DOrMFMa#S32@jnv)SM&p|Y_^KD;| zY$0(Z8)&LX8NY-8qs)&+^xw6UY>HSkUdBQcmt;&cGfl-?d4Dxiwzufyq3%v;r5nha z4qe>~h`eRHsQsnIl$B)c}dF9xh#85~}+M+B) z_GD283mU42)6PI+5>w6Jv}r5sYF0sVT(|OiF|1IzcoO`?+NLY7?LFNecDFEdQzO~F zEE~J4a|+U#C((X(c znUE`Oui%1!_FywAtwo%648-T16QXvf+OKT{|>nYFTf3B zV_@Xdi>Pmzr^uUQ;_tQ;=O35@x9RL`vd$UJyb^?Qv@%5Kic?6#b4g8u|3-q5lQB2uAmiKZ%Pk z`K>j1eDip%6}gnx_meY8lxMjUZn^nlxtD)7m@7$_k2wRDIgOk-nv^Ywgou7LMpa=TK4SI(Zx}nb-q9?AHFZwk%dKEu9q~Efn z0}Z8D`Xpa^c__N3PZ_6who^tKh=sa$j5?{Gm#KFLs;7Ett$NjDx~oettdmBo&$?ID z`e@ubu4|Q*#~W~0RQ|7zw08fx!8PHqJ9KZiAz>$bK5w?MXPm4%JI?C5Xz)6<1CzCf z2DWFrDs8)Cbi21dS+uv@w2wQYf_r0#JG$?Yx+?~|xBIM>d(fS`yhrG}Cq}&A`^C{a z*4aD1FK52b4ZsI{WDfjc?7PALoWBoV!7sc`BD`TJJj4%>#3Kcje1HKx>HIzp$Me*u zzS}wMQ#x#u0mVetQV+^oUBi#)>^cgT;%Cew#LOE+%_9UHY-vbj%LSag)3VRX8_>mH z1nla`pZ4iR9DSe~gwhM@Ks3EY5UQ${e9sS1&;!ub2VTq9=*#Pg0B>sRhCD%hy{LW* z0+(v+4h-3c{{2m)>du?I)&G3@Wc}J%UDwaI*;6U98mh8tQ{Ruv-w#By;xp9~e8*=) z)PMxt$85^eP1a{Uc`SZWNd8A8{zp(gOvpXezVFXxz2#?q$`b|VcSKKlOsg!uldQ+* zXG6i^(dZL|>7x(o`^@SyO3{OfyrwGvtm~n;Yc|kp?!W8qN3ZYGD~s4GKJ&cco5bp0 z1m;V=<9GhgN51Aye)U(rK6%9RSAX<_hUaJh>$gPsL$H(g(&=k{>XXRoxBjn=f9%68 z`qO^)uj)YDe(HAp#YU__axR78v02dfWlsHl0!Gshg zP5^-Zksu-fr6zg=$11TdjsN{%lhx`atk<4c()KSnHxGH1)4G&gqqIg{v3 zm^(49q^OjkQKl+c7OV-CXjOtwiw>QLl_6K5BNcL;N)Rc4QC88W#pp4rL9N-?E<6Y_ zZpDvv-GX&{kz=BVYF{EHI+mhQpL+M=)GPC;VZe&f5)S$Huug=KD@zRum-1tth>u?8 z=rwHH&s|Mt!%CR6=hA2$FKm4^^;gsj370+Vns?UJbDMGnj+g9R;co>~bO?ZXbLY>Y zN0&aGdUfm9v1ix5oqKoh-@%6$Kc0Mf^XJi*-`$)2+T);!XB+-LK5)6BUnUy0pa1^; zDiZ(G0afI4LLOMoc=%rt-TR_`t7ay zaze2b6-mO6#1~(J%Sn$C?c~K3UVOTe$2*5B#RXCKE8U4 zQpzc*tkTLWvCL9Sn5qDv7lpd~lA$oc^pYSl3nCNEGtGQ*%QxYSQ_eZ*tkcf+?BgsE zg5W@euRJ~4vpBE<9n>d5-MmxLMHy|>(MKUw3yx6$ASIhs{JO}a%_gn%(o75L)KW}E z6ZKOU6N^;URatG-)mLp?h0^9M6>76fXJxL|f@F1WS6qFSC^=Y(E!Nm$k^YTz26IZe zKun63ZT4A(qIH&`YNt(B+ikh+*4uBv4OiT8$t~C1bJ0y#-F4Y**WGvFjaS}z>8;n^ zdvAnef>jvmrIZQUfU;bD`R(`LfDHy%;A9C-7-5GO_E+Io8;028ixraiVMQy>_~3{? zj!0vWC&pM^QcyLA(g`SS16`CCR(YkC6_S}{09@u4=7nsgx#pF9Ca7neUEP^ypouPM z=$w^Cn(1toUexHOXHHsZr;o1s>8O9!dR;^)g>r`d3J&sDaluA)>`}`0G@G^CKHJ!| z#U>j_x8Jr~Nw?v?TW&|`Ua0TAYaQI|f(++d@5Aj39Pz~!XWQ?`{v{`zpu~5@9Nn9l zgYuwVdjX&daydu!^MXPjT|T^1PquW=Sr^?c&}CnpcGV$${l43a+#db% z*>s_rLdiu9fcHa} zV2GrUHaLk~$;n_rHaL(E5+sD%!eEk0$RrI4X@uEGp{hKHLKe#KNG&X(4LL}s6E5V2 zG`xxraacnirVA-7s-BBfWW;0@@jaX|(TbY5D#0YNiBx?4;+>fIL>5``K6HuV1@WWA zaZQmvUsPWht60V>N)d@_?4lF9D8>V#QHyD;;}zw2M84z^Tx7iC8?}|iH*(P~B5IT$ z<7mf3uCY#nEaVp5SV%ZZl8AH!WCz>$M@lZyl9D83URZ_5M=ElZjMQN#^8!gtf|8G8 zbWsbJq(>h$NrXv?B`2W-ODE~Fmb45ds(7iwg2XbI!L-v36|y8_7SooyZ03=`n80bR z$&~`5rkdKsrfeBYFxPC8H@^hVUs^Mp*}&#Bzgf<6mT8-D>ZUr)Bu;a}Go19)COg$7 z7(f94QJ56iJ_Q9(Zt3$Ug))>-0$NahwkkOST^;_R7J5)UNz|anbdf_H`p`pBG@=?s z=(+@BDpD=%d#DmAsIqZVR2?g%lo}OEQ|i)FT|}iMbyRX{$|sqQG*ml9X-=`|BA@~_ zrk>(yQD2H5qDFHey`mLUo0==U0qdy)MU_)^71dzzN~(W*)UdER)v%sztO_ZsqLOn~ zf~a+^T{Wv)-@4U#VQa3;vXrM^;&uDtF*YqS8Dn7uXi0RU|A(t#1R&+h&`-f zAFEe}Nq6TG5V{w52ueX;GV6)vlJct#$2dVH;c7&X%^d vwe4+jn_J!Pmbbn2?Qek_T;UFvxWzT@aS)N4T;(p8xy^O%bD
- - Error in point value + + Error in point derivative - - Error in point value + + Error in point derivative