From e0090fbb0a350db970ce5f81c35a2e0eb546d2c8 Mon Sep 17 00:00:00 2001 From: Vinayak Mehta Date: Thu, 20 Dec 2018 13:58:54 +0530 Subject: [PATCH 1/6] Add edge close tolerance --- camelot/cli.py | 2 ++ camelot/core.py | 15 +++++++-------- camelot/parsers/stream.py | 9 ++++++--- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/camelot/cli.py b/camelot/cli.py index e978a3c..b0832f4 100644 --- a/camelot/cli.py +++ b/camelot/cli.py @@ -133,6 +133,8 @@ def lattice(c, *args, **kwargs): ' where x1, y1 -> left-top and x2, y2 -> right-bottom.') @click.option('-C', '--columns', default=[], multiple=True, help='X coordinates of column separators.') +@click.option('-e', '--edge_close_tol', default=50, help='Tolerance parameter' + ' for extending textedges vertically.') @click.option('-r', '--row_close_tol', default=2, help='Tolerance parameter' ' used to combine text vertically, to generate rows.') @click.option('-c', '--col_close_tol', default=0, help='Tolerance parameter' diff --git a/camelot/core.py b/camelot/core.py index ac63e54..99268e1 100644 --- a/camelot/core.py +++ b/camelot/core.py @@ -13,8 +13,6 @@ import pandas as pd # minimum number of vertical textline intersections for a textedge # to be considered valid TEXTEDGE_REQUIRED_ELEMENTS = 4 -# y coordinate tolerance for extending textedge -TEXTEDGE_EXTEND_TOLERANCE = 50 # padding added to table area on the left, right and bottom TABLE_AREA_PADDING = 10 @@ -55,11 +53,11 @@ class TextEdge(object): return ''.format( round(self.x, 2), round(self.y0, 2), round(self.y1, 2), self.align, self.is_valid) - def update_coords(self, x, y0): + def update_coords(self, x, y0, edge_close_tol=50): """Updates the text edge's x and bottom y coordinates and sets the is_valid attribute. """ - if np.isclose(self.y0, y0, atol=TEXTEDGE_EXTEND_TOLERANCE): + if np.isclose(self.y0, y0, atol=edge_close_tol): self.x = (self.intersections * self.x + x) / float(self.intersections + 1) self.y0 = y0 self.intersections += 1 @@ -106,7 +104,7 @@ class TextEdges(object): te = TextEdge(x, y0, y1, align=align) self._textedges[align].append(te) - def update(self, textline): + def update(self, textline, edge_close_tol=50): """Updates an existing text edge in the current dict. """ for align in ['left', 'right', 'middle']: @@ -115,15 +113,16 @@ class TextEdges(object): if idx is None: self.add(textline, align) else: - self._textedges[align][idx].update_coords(x_coord, textline.y0) + self._textedges[align][idx].update_coords( + x_coord, textline.y0, edge_close_tol=edge_close_tol) - def generate(self, textlines): + def generate(self, textlines, edge_close_tol=50): """Generates the text edges dict based on horizontal text rows. """ for tl in textlines: if len(tl.get_text().strip()) > 1: # TODO: hacky - self.update(tl) + self.update(tl, edge_close_tol=edge_close_tol) def get_relevant(self): """Returns the list of relevant text edges (all share the same diff --git a/camelot/parsers/stream.py b/camelot/parsers/stream.py index 5ebd2df..1f5a856 100644 --- a/camelot/parsers/stream.py +++ b/camelot/parsers/stream.py @@ -38,6 +38,8 @@ class Stream(BaseParser): flag_size : bool, optional (default: False) Flag text based on font size. Useful to detect super/subscripts. Adds around flagged text. + edge_close_tol : int, optional (default: 50) + Tolerance parameter for extending textedges vertically. row_close_tol : int, optional (default: 2) Tolerance parameter used to combine text vertically, to generate rows. @@ -47,12 +49,14 @@ class Stream(BaseParser): """ def __init__(self, table_areas=None, columns=None, split_text=False, - flag_size=False, row_close_tol=2, col_close_tol=0, **kwargs): + flag_size=False, edge_close_tol=50, row_close_tol=2, + col_close_tol=0, **kwargs): self.table_areas = table_areas self.columns = columns self._validate_columns() self.split_text = split_text self.flag_size = flag_size + self.edge_close_tol = edge_close_tol self.row_close_tol = row_close_tol self.col_close_tol = col_close_tol @@ -248,13 +252,12 @@ class Stream(BaseParser): Assumes that tables are situated relatively far apart vertically. """ - # TODO: add support for arabic text #141 # sort textlines in reading order textlines.sort(key=lambda x: (-x.y0, x.x0)) textedges = TextEdges() # generate left, middle and right textedges - textedges.generate(textlines) + textedges.generate(textlines, edge_close_tol=self.edge_close_tol) # select relevant edges relevant_textedges = textedges.get_relevant() self.textedges.extend(relevant_textedges) From 3f5af18738e269cffda41680eb95b87b89978f2b Mon Sep 17 00:00:00 2001 From: Vinayak Mehta Date: Thu, 20 Dec 2018 15:01:29 +0530 Subject: [PATCH 2/6] Add resolution --- camelot/cli.py | 2 ++ camelot/core.py | 11 ++++++----- camelot/parsers/lattice.py | 5 +++-- camelot/parsers/stream.py | 4 ++-- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/camelot/cli.py b/camelot/cli.py index b0832f4..6c1b933 100644 --- a/camelot/cli.py +++ b/camelot/cli.py @@ -84,6 +84,8 @@ def cli(ctx, *args, **kwargs): ' may be zero or negative as well.') @click.option('-I', '--iterations', default=0, help='Number of times for erosion/dilation will be applied.') +@click.option('-res', '--resolution', default=300, + help='Resolution used for PDF to PNG conversion.') @click.option('-plot', '--plot_type', type=click.Choice(['text', 'grid', 'contour', 'joint', 'line']), help='Plot elements found on PDF page for visual debugging.') diff --git a/camelot/core.py b/camelot/core.py index 99268e1..dc3bd88 100644 --- a/camelot/core.py +++ b/camelot/core.py @@ -72,7 +72,8 @@ class TextEdges(object): the PDF page. The dict has three keys based on the alignments, and each key's value is a list of camelot.core.TextEdge objects. """ - def __init__(self): + def __init__(self, edge_close_tol=50): + self.edge_close_tol = edge_close_tol self._textedges = {'left': [], 'right': [], 'middle': []} @staticmethod @@ -104,7 +105,7 @@ class TextEdges(object): te = TextEdge(x, y0, y1, align=align) self._textedges[align].append(te) - def update(self, textline, edge_close_tol=50): + def update(self, textline): """Updates an existing text edge in the current dict. """ for align in ['left', 'right', 'middle']: @@ -114,15 +115,15 @@ class TextEdges(object): self.add(textline, align) else: self._textedges[align][idx].update_coords( - x_coord, textline.y0, edge_close_tol=edge_close_tol) + x_coord, textline.y0, edge_close_tol=self.edge_close_tol) - def generate(self, textlines, edge_close_tol=50): + def generate(self, textlines): """Generates the text edges dict based on horizontal text rows. """ for tl in textlines: if len(tl.get_text().strip()) > 1: # TODO: hacky - self.update(tl, edge_close_tol=edge_close_tol) + self.update(tl) def get_relevant(self): """Returns the list of relevant text edges (all share the same diff --git a/camelot/parsers/lattice.py b/camelot/parsers/lattice.py index 0ec53bd..cfbbcda 100644 --- a/camelot/parsers/lattice.py +++ b/camelot/parsers/lattice.py @@ -76,7 +76,7 @@ class Lattice(BaseParser): line_size_scaling=15, copy_text=None, shift_text=['l', 't'], split_text=False, flag_size=False, line_close_tol=2, joint_close_tol=2, threshold_blocksize=15, threshold_constant=-2, - iterations=0, **kwargs): + iterations=0, resolution=300, **kwargs): self.table_areas = table_areas self.process_background = process_background self.line_size_scaling = line_size_scaling @@ -89,6 +89,7 @@ class Lattice(BaseParser): self.threshold_blocksize = threshold_blocksize self.threshold_constant = threshold_constant self.iterations = iterations + self.resolution = resolution @staticmethod def _reduce_index(t, idx, shift_text): @@ -209,7 +210,7 @@ class Lattice(BaseParser): '-sDEVICE=png16m', '-o', self.imagename, - '-r600', + '-r{}'.format(self.resolution), self.filename ] gs = get_executable() diff --git a/camelot/parsers/stream.py b/camelot/parsers/stream.py index 1f5a856..a7c5af4 100644 --- a/camelot/parsers/stream.py +++ b/camelot/parsers/stream.py @@ -255,9 +255,9 @@ class Stream(BaseParser): # TODO: add support for arabic text #141 # sort textlines in reading order textlines.sort(key=lambda x: (-x.y0, x.x0)) - textedges = TextEdges() + textedges = TextEdges(edge_close_tol=self.edge_close_tol) # generate left, middle and right textedges - textedges.generate(textlines, edge_close_tol=self.edge_close_tol) + textedges.generate(textlines) # select relevant edges relevant_textedges = textedges.get_relevant() self.textedges.extend(relevant_textedges) From a38d52c7b21cf273ebf77daf4f32a12cb1f33d35 Mon Sep 17 00:00:00 2001 From: Vinayak Mehta Date: Thu, 20 Dec 2018 15:44:28 +0530 Subject: [PATCH 3/6] Fix plot tests --- tests/files/baseline_plots/test_grid_plot.png | Bin 8367 -> 8367 bytes .../files/baseline_plots/test_joint_plot.png | Bin 35743 -> 48678 bytes .../test_lattice_contour_plot.png | Bin 34094 -> 47314 bytes tests/files/baseline_plots/test_line_plot.png | Bin 6808 -> 6833 bytes tests/test_common.py | 2 +- 5 files changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/files/baseline_plots/test_grid_plot.png b/tests/files/baseline_plots/test_grid_plot.png index 4487eb315d39fbc6a724ab191a13a4f433be72ff..3b835f5f078a099fb0c389a5e860c941de53a8a2 100644 GIT binary patch delta 779 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 H#FhU87erZu literal 35743 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�aY!gywdD3bdpKO(l<4#_x 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

a4K6NbSItr0!HTOY;!s`WEyZAEI zB;>&n7MwaQ5lz(jt}hGx6-&{=J+&91pJuLS(@HPDIge1!oz-a(nYD-ZL`>H^DC-j1qG)U$wOSs_8NaHQ(f3RJ^ zw9)+vuG7dd3h6~@q-d(HrIXrU>VQBj^=hXvBeAgcY`<={#V5}eLEP5V5L+cBC0ZR+ z!E}kO=B#li_EACu?n|H+LLIyPx^d2#$Y%%*;~MSO5{mL4jjeF9Vsrg8pP-Lc-JJbP zQOpKi|McSO;YV!1sqtvI5!XETGt#&rf;wsvNUi#>6B3dj zyGp{%Ou-~>IFxRczlIn-pK+Lw~>Bo+1*JH_8FTADA2RmC4kSY}+yOXh0zAVj) zb;T^tq9&c)qq1M=+1Wk(GI)eJg9!-<2L5=ckgL^!u5Ew*o5endI0G_(iPd-cq z!%ZNzN@HD79O(6Z=i-!<6i)yX9-T5WiNU2z?}O?u%Cm{@2YX9RS;p{!8oOJa$> zhD@|i$%4Kt_Ko2a=CCh=k+gu2si#ww!{MagyH_6!=tsVida%YKaIrcF1;!)Qt}65v zO!$2$rwU?ZbNAZ`i_6LS8D_{%^L})~*)}7SekfXQuVPw{X|vC}N`z}^a$>MWr{y>% zRt*7yLu_P#hnKL5H{ohT*d%8?P@0h&bRlH8fAE?dq2P%Qm&x$bWoToj-|+s8viT2a z3R}1j<%rg(CZ9WlfcV&fsS|)QHrXq(vj6U_ha2O#Xfr|R%HcaTawByX2W&%C*c2jc z^-pHuMA&_ji;E literal 34094 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�aY!gywdD3bdpKO(l<4#_x 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 CtK;JU diff --git a/tests/files/baseline_plots/test_line_plot.png b/tests/files/baseline_plots/test_line_plot.png index a7ac276ba74659b2a1c45e5e912a8a5b7ab7ab2d..e8099ce807c35bdc8259765c84e80e42361e012c 100644 GIT binary patch literal 6833 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 R90$M_=oj)u_2;KA{TCaXngjp< literal 6808 zcmeHLd010tzCO4h`hYl{sT7q(jo`f?ScvQaH`J&=+v$i=7Oi2462cM!L;_x!%54FG z1Q$pM-l}A7#b6UiWKA8a5FkN_7?PL-42u{NmOxmt-4ko4GkyBcz0bAt$9SISJo(P| ze9Ou2yubH-zu#A%gdet9w`m;!05Gu<1;1DbTy=HmS=%YJaqV-&NYmDu^lRIaSt*~b>MUE)AG8Wl z`*rA_^KEL^;*VIcx5sR)xWbQtd~rx#@KS@fcmiy<*9XT2X%xJI?Xt#}mKJLO*!v&N z(YD~fm@5D*0HDii0|4AAdf$8>hxZ`(S51bVR{ENu)8pgg{s956@gPSSzwS#cA5IyZ z|7Z$gk(M8nJqroZiF%tHR|1zfFKzP{4+QI{+vy!yu4_v-zsk1_?i7o~7ZwO}eTSDu zJ@Z6;2Yuy=juIxDEd-bNLtwMx#f#}U989Yno1DZ?syNzaxxu5FpcP$MsH&rJIp)aXa9%WVzl&G4oJ?lI>C|l{oE{H?w#m(fpu<%w#IRW1GZTLHxSh`Flcj zU{FwxR;wM*`N$}?|FseT;#OG!z$b?;fg}eu*?;Bp!-d;h(to*z@3&GjB~Ie4VwT4a zgsoY#CfM2%NLiW9(JrK~UIhR<71hI|T{mdsOOr!8H;06uP-nuz7Cfl2BNH4L?@5U- zBaIVldM5iKwQRh%ddz4jwzf0`XyXt;u_H?ySg*lJ-aBNxrA!4D9qkH3slj>F5@V{{ zlss0aG_5?gb??Jj(W6gYIP&mZ`8>q8h%mj7Vgz1f38cMDT|~$fzDTygIZBj;Dc3JM z3sC*g=mq z7K`+b5~lygdSAQFoY-^FWQl(PG1vzHIET=R5 zI7hB(Vk}kCS{$qgot|12M5s(kg1EVXF?6#tWtY)RGtkW@^mey}$y@}bUy2&fBq$6i2oSwYLxglGiF{&@(y?7fzi z?BJZI^X`VN=7EPdd(JBLQ&54+z2Xbb#|Btjq;G}Vwb-})n%Gl(JXp$`Qy8Ej3|$;b zg7kvd{E>!jzy#R0hVxM_P4C)e!&c`5m5ubaALW!>M^s+(p{RBI% zQ}vxCZs-%+X2&rts`7`3Gj@R&%iP=eT@RG|mLGF2uLgkf-#LRiZ*Q^UpWdvv7;XD~ zCM;L)2j+2|l+9$4zQ(Q=HHhLJ9s|B5T*qLa=I6P6E_rZq2%F2K(;8uK0H7IJ^s@^i)!xs5g=4HX z(1Qs0a%3P0E+oBhC&hT)>FsEPoLJP(Eq^Dv&*cmnBtzwDzMzI%VC#s59Wu{IN-835 zK?a0X)+kX;LKfPE1g{aGDyh4W!59IH1m!{R-7_;p1zS^3^5NBU&nwn-e%7Gs&OA@8 z?P`dvugD4D&M8opP9g)t?{2ezKVDIf_Hl&0#+S$Z&N&K!uy?Vip+4YT895y$m{Tt> zC}7@(G8zVu==-r9ZSD#F-P;P2_MAp+Zmu<*$YOlE;Ldd-jk$(Bu~p@YDE$su^OxCP zTW~OV-QtFTzlHH12=m?asxx4KZ^!6pwvTTK<0K>@!Axe4zu}FIbxYb*3VjPfb=^0! z?WQZa!#~!V$OI{@F?u7KvGkgiP{O0{qOwIfQ=@1()lOdXcw1czrp0*TG^LkWp@?cr zB-WZg*^8g(Jm8HY;BsdQW07Xw2$6_HTt1(F+OV9rEI2!+QL&fz06=o(z?ep_$*;~E zH~t+Mm-L$6^pup+nXITiFYmux*J)D^>KJz|VL`pKIw!5vU_e6u-8AdV@B5T2mBO_P zH2dO8ddI(I#ZTJwwqIba;y{3NOx81AYHY^P9)yg!0m zpzn|0eIz`b_~;f_d@6*~{_z&=!k{TRpE-go8$RQ9!SR#sJx9`r$fpo~?`QdSBvKve z5uw+ndrqYUcQ~I<8HE(SXbhYL@iem)`&(N77fL*ke6_nU)F+)9N~UDMdTbsf+KGDN zH>$QJz$BeZIb~ZgV>u6woX}-VcBjdx99;JY4TTVLU2;|RwT-dvjHMeqcVkPZ$h$fA zdMG)mt*K$)RN+##PYJ1eER^wl9%@J(pPij$D7R)!Oi%BYNF@G#ew|rC9;W3yaY%Pg z+9$>g3!tffIh&McT*~K6OyLZ*ClYIvI;fW6|{(3FYEuVtimG6T1{hU3rlte*3wPyIJMHwRIK87DR z~50@vGU%r6UlOyf1m1vrj-9Y3*-hil;o z|7piJZX%yw%ikO;gC$g|A|kMIOuNC^ z_o+-q&5PUw+&U*;uo=SS+FA+64?p;SlzOwMKlJzTu;Y$pi$jSZ0Z+sTrC~!V6%b?nO zF_#Ky%$oT|0bd^FkB*MU2@g#74-cPZvDt5P**L#o!d~a5U!JEi^mc zja+3Fc|vVXBsDLPwLm-ajnm{`Ib{~-hhTv&ev{NA+Dfz!E|GO6JU#iTLDKP3)g_@kw z+qLy(`L3-;2WMqSd^5+zOWQ*bCc<|LzS0n#htc}Y#4nzFu z0w?h;;|uhi>Kk{_KeEEDH-x_wTjH4U#`w{r=++vDA_@wBVwT53NCYto8s?=I?vJ7D zi1j4eoepC>uLB`r=ieJ_M4;N26~i!JbQL}rz#Ro z%`nHjPCPPvPeN6l3&y19T(>qxkO%6Tsbf;8={!|Y&|#mmr}OoXwjl=QBWMS8R_rMe zCL^wD@3r7tze;a98CdO_(9yWa2_rVpJ0^+)Z-7^{?W1GzKg>URw9hqiuhulbnUK?w~dW9#Blk7m-Udc9GSBz^nsx1wNc z?AX1Au(WPa(s@pcl-uQSE3>&#O#1|BbOJI#@Hr9gYm z_`SkYByogtz1Epp`?^@>G&)4eFOoUMEv^Ky(1%Z(K25{g9V!f6@0b*aoVg1E`bzr` z*M7j*6tv4?PB~a#0h47MJocUO>l6?6{+{z8wKl+8|7f=Y)R?633AOc_{32mcWTfWe zyFc@7-}~^xcqZc4kL+tVB(IL3V)%S|hfGGPiY{qw^*5InZdd-YglYC0Z5gSlWe}8v zrGU#|;5oxTC}_4yyyi(cMS%^aTgN30|18VZidrD zQmG1@N(37BwdrTObF`ua(coZbSJzRY0sy8>jSnAo3TP3UzQazVh6VW)o&t_F7g&E| zpZ!ac{izJ{Yp&q^*!R)-$70!gl>AsUd^d40Iw|%w+-gb;l7qVd@X+vs^!;Zp{|{%| B`A`4= diff --git a/tests/test_common.py b/tests/test_common.py index 34ae94f..b32dc6b 100644 --- a/tests/test_common.py +++ b/tests/test_common.py @@ -188,7 +188,7 @@ def test_repr(): tables = camelot.read_pdf(filename) assert repr(tables) == "" assert repr(tables[0]) == "" - assert repr(tables[0].cells[0][0]) == "" + assert repr(tables[0].cells[0][0]) == "" def test_arabic(): From f6aa21c31ffecd108490d7e8a7876ed56f4a9005 Mon Sep 17 00:00:00 2001 From: Vinayak Mehta Date: Thu, 20 Dec 2018 16:32:16 +0530 Subject: [PATCH 4/6] Add strip_text --- camelot/cli.py | 2 ++ camelot/parsers/lattice.py | 6 +++++- camelot/parsers/stream.py | 6 +++++- camelot/utils.py | 35 +++++++++++++++++++++++++---------- 4 files changed, 37 insertions(+), 12 deletions(-) diff --git a/camelot/cli.py b/camelot/cli.py index 6c1b933..d83f2e1 100644 --- a/camelot/cli.py +++ b/camelot/cli.py @@ -43,6 +43,8 @@ pass_config = click.make_pass_decorator(Config) help='Split text that spans across multiple cells.') @click.option('-flag', '--flag_size', is_flag=True, help='Flag text based on' ' font size. Useful to detect super/subscripts.') +@click.option('-strip', '--strip_text', help='Characters that should be stripped from a string before' + ' assigning it to a cell.') @click.option('-M', '--margins', nargs=3, default=(1.0, 0.5, 0.1), help='PDFMiner char_margin, line_margin and word_margin.') @click.pass_context diff --git a/camelot/parsers/lattice.py b/camelot/parsers/lattice.py index cfbbcda..83b876b 100644 --- a/camelot/parsers/lattice.py +++ b/camelot/parsers/lattice.py @@ -47,6 +47,9 @@ class Lattice(BaseParser): Direction in which text in a spanning cell will flow. split_text : bool, optional (default: False) Split text that spans across multiple cells. + strip_text : str, optional (default: '') + Characters that should be stripped from a string before + assigning it to a cell. flag_size : bool, optional (default: False) Flag text based on font size. Useful to detect super/subscripts. Adds around flagged text. @@ -74,7 +77,7 @@ class Lattice(BaseParser): """ def __init__(self, table_areas=None, process_background=False, line_size_scaling=15, copy_text=None, shift_text=['l', 't'], - split_text=False, flag_size=False, line_close_tol=2, + split_text=False, flag_size=False, strip_text='', line_close_tol=2, joint_close_tol=2, threshold_blocksize=15, threshold_constant=-2, iterations=0, resolution=300, **kwargs): self.table_areas = table_areas @@ -84,6 +87,7 @@ class Lattice(BaseParser): self.shift_text = shift_text self.split_text = split_text self.flag_size = flag_size + self.strip_text = strip_text self.line_close_tol = line_close_tol self.joint_close_tol = joint_close_tol self.threshold_blocksize = threshold_blocksize diff --git a/camelot/parsers/stream.py b/camelot/parsers/stream.py index a7c5af4..45318f7 100644 --- a/camelot/parsers/stream.py +++ b/camelot/parsers/stream.py @@ -35,6 +35,9 @@ class Stream(BaseParser): are comma-separated. split_text : bool, optional (default: False) Split text that spans across multiple cells. + strip_text : str, optional (default: '') + Characters that should be stripped from a string before + assigning it to a cell. flag_size : bool, optional (default: False) Flag text based on font size. Useful to detect super/subscripts. Adds around flagged text. @@ -49,13 +52,14 @@ class Stream(BaseParser): """ def __init__(self, table_areas=None, columns=None, split_text=False, - flag_size=False, edge_close_tol=50, row_close_tol=2, + flag_size=False, strip_text='', edge_close_tol=50, row_close_tol=2, col_close_tol=0, **kwargs): self.table_areas = table_areas self.columns = columns self._validate_columns() self.split_text = split_text self.flag_size = flag_size + self.strip_text = strip_text self.edge_close_tol = edge_close_tol self.row_close_tol = row_close_tol self.col_close_tol = col_close_tol diff --git a/camelot/utils.py b/camelot/utils.py index c38884f..f2c0bae 100644 --- a/camelot/utils.py +++ b/camelot/utils.py @@ -309,7 +309,12 @@ def merge_close_lines(ar, line_close_tol=2): return ret -def flag_font_size(textline, direction): +# TODO: combine the following functions into a TextProcessor class which +# applies corresponding transformations sequentially +# (inspired from sklearn.pipeline.Pipeline) + + +def flag_font_size(textline, direction, strip_text=''): """Flags super/subscripts in text by enclosing them with . May give false positives. @@ -319,6 +324,9 @@ def flag_font_size(textline, direction): List of PDFMiner LTChar objects. direction : string Direction of the PDFMiner LTTextLine object. + strip_text : str, optional (default: '') + Characters that should be stripped from a string before + assigning it to a cell. Returns ------- @@ -344,13 +352,13 @@ def flag_font_size(textline, direction): fchars = [t[0] for t in chars] if ''.join(fchars).strip(): flist.append(''.join(fchars)) - fstring = ''.join(flist) + fstring = ''.join(flist).strip(strip_text) else: - fstring = ''.join([t.get_text() for t in textline]) + fstring = ''.join([t.get_text() for t in textline]).strip(strip_text) return fstring -def split_textline(table, textline, direction, flag_size=False): +def split_textline(table, textline, direction, flag_size=False, strip_text=''): """Splits PDFMiner LTTextLine into substrings if it spans across multiple rows/columns. @@ -365,6 +373,9 @@ def split_textline(table, textline, direction, flag_size=False): Whether or not to highlight a substring using if its size is different from rest of the string. (Useful for super and subscripts.) + strip_text : str, optional (default: '') + Characters that should be stripped from a string before + assigning it to a cell. Returns ------- @@ -416,14 +427,15 @@ def split_textline(table, textline, direction, flag_size=False): grouped_chars = [] for key, chars in groupby(cut_text, itemgetter(0, 1)): if flag_size: - grouped_chars.append((key[0], key[1], flag_font_size([t[2] for t in chars], direction))) + grouped_chars.append((key[0], key[1], + flag_font_size([t[2] for t in chars], direction, strip_text=strip_text))) else: gchars = [t[2].get_text() for t in chars] - grouped_chars.append((key[0], key[1], ''.join(gchars))) + grouped_chars.append((key[0], key[1], ''.join(gchars).strip(strip_text))) return grouped_chars -def get_table_index(table, t, direction, split_text=False, flag_size=False): +def get_table_index(table, t, direction, split_text=False, flag_size=False, strip_text='',): """Gets indices of the table cell where given text object lies by comparing their y and x-coordinates. @@ -441,6 +453,9 @@ def get_table_index(table, t, direction, split_text=False, flag_size=False): Whether or not to highlight a substring using if its size is different from rest of the string. (Useful for super and subscripts) + strip_text : str, optional (default: '') + Characters that should be stripped from a string before + assigning it to a cell. Returns ------- @@ -495,12 +510,12 @@ def get_table_index(table, t, direction, split_text=False, flag_size=False): error = ((X * (y0_offset + y1_offset)) + (Y * (x0_offset + x1_offset))) / charea if split_text: - return split_textline(table, t, direction, flag_size=flag_size), error + return split_textline(table, t, direction, flag_size=flag_size, strip_text=strip_text), error else: if flag_size: - return [(r_idx, c_idx, flag_font_size(t._objs, direction))], error + return [(r_idx, c_idx, flag_font_size(t._objs, direction, strip_text=strip_text))], error else: - return [(r_idx, c_idx, t.get_text())], error + return [(r_idx, c_idx, t.get_text().strip(strip_text))], error def compute_accuracy(error_weights): From 50b4468aff0d6aa7bbeffa7ab42610dc5857fd64 Mon Sep 17 00:00:00 2001 From: Vinayak Mehta Date: Fri, 21 Dec 2018 15:09:37 +0530 Subject: [PATCH 5/6] Rename kwargs and add tests --- camelot/cli.py | 10 +-- camelot/core.py | 24 +++--- camelot/io.py | 13 ++- camelot/parsers/lattice.py | 28 ++++--- camelot/parsers/stream.py | 54 ++++++------- camelot/utils.py | 14 ++-- docs/user/advanced.rst | 4 +- tests/data.py | 141 +++++++++++++++++++++++---------- tests/files/edge_tolerance.pdf | Bin 0 -> 71867 bytes tests/test_common.py | 18 ++++- 10 files changed, 193 insertions(+), 113 deletions(-) create mode 100755 tests/files/edge_tolerance.pdf diff --git a/camelot/cli.py b/camelot/cli.py index d83f2e1..a1a571e 100644 --- a/camelot/cli.py +++ b/camelot/cli.py @@ -70,10 +70,10 @@ def cli(ctx, *args, **kwargs): @click.option('-shift', '--shift_text', default=['l', 't'], type=click.Choice(['', 'l', 'r', 't', 'b']), multiple=True, help='Direction in which text in a spanning cell will flow.') -@click.option('-l', '--line_close_tol', default=2, +@click.option('-l', '--line_tol', default=2, help='Tolerance parameter used to merge close vertical' ' and horizontal lines.') -@click.option('-j', '--joint_close_tol', default=2, +@click.option('-j', '--joint_tol', default=2, help='Tolerance parameter used to decide whether' ' the detected lines and points lie close to each other.') @click.option('-block', '--threshold_blocksize', default=15, @@ -137,11 +137,11 @@ def lattice(c, *args, **kwargs): ' where x1, y1 -> left-top and x2, y2 -> right-bottom.') @click.option('-C', '--columns', default=[], multiple=True, help='X coordinates of column separators.') -@click.option('-e', '--edge_close_tol', default=50, help='Tolerance parameter' +@click.option('-e', '--edge_tol', default=50, help='Tolerance parameter' ' for extending textedges vertically.') -@click.option('-r', '--row_close_tol', default=2, help='Tolerance parameter' +@click.option('-r', '--row_tol', default=2, help='Tolerance parameter' ' used to combine text vertically, to generate rows.') -@click.option('-c', '--col_close_tol', default=0, help='Tolerance parameter' +@click.option('-c', '--column_tol', default=0, help='Tolerance parameter' ' used to combine text horizontally, to generate columns.') @click.option('-plot', '--plot_type', type=click.Choice(['text', 'grid', 'contour', 'textedge']), diff --git a/camelot/core.py b/camelot/core.py index dc3bd88..4e5869a 100644 --- a/camelot/core.py +++ b/camelot/core.py @@ -53,11 +53,11 @@ class TextEdge(object): return ''.format( round(self.x, 2), round(self.y0, 2), round(self.y1, 2), self.align, self.is_valid) - def update_coords(self, x, y0, edge_close_tol=50): + def update_coords(self, x, y0, edge_tol=50): """Updates the text edge's x and bottom y coordinates and sets the is_valid attribute. """ - if np.isclose(self.y0, y0, atol=edge_close_tol): + if np.isclose(self.y0, y0, atol=edge_tol): self.x = (self.intersections * self.x + x) / float(self.intersections + 1) self.y0 = y0 self.intersections += 1 @@ -72,8 +72,8 @@ class TextEdges(object): the PDF page. The dict has three keys based on the alignments, and each key's value is a list of camelot.core.TextEdge objects. """ - def __init__(self, edge_close_tol=50): - self.edge_close_tol = edge_close_tol + def __init__(self, edge_tol=50): + self.edge_tol = edge_tol self._textedges = {'left': [], 'right': [], 'middle': []} @staticmethod @@ -115,7 +115,7 @@ class TextEdges(object): self.add(textline, align) else: self._textedges[align][idx].update_coords( - x_coord, textline.y0, edge_close_tol=self.edge_close_tol) + x_coord, textline.y0, edge_tol=self.edge_tol) def generate(self, textlines): """Generates the text edges dict based on horizontal text @@ -359,7 +359,7 @@ class Table(object): cell.left = cell.right = cell.top = cell.bottom = True return self - def set_edges(self, vertical, horizontal, joint_close_tol=2): + def set_edges(self, vertical, horizontal, joint_tol=2): """Sets a cell's edges to True depending on whether the cell's coordinates overlap with the line's coordinates within a tolerance. @@ -376,11 +376,11 @@ class Table(object): # find closest x coord # iterate over y coords and find closest start and end points i = [i for i, t in enumerate(self.cols) - if np.isclose(v[0], t[0], atol=joint_close_tol)] + if np.isclose(v[0], t[0], atol=joint_tol)] j = [j for j, t in enumerate(self.rows) - if np.isclose(v[3], t[0], atol=joint_close_tol)] + if np.isclose(v[3], t[0], atol=joint_tol)] k = [k for k, t in enumerate(self.rows) - if np.isclose(v[1], t[0], atol=joint_close_tol)] + if np.isclose(v[1], t[0], atol=joint_tol)] if not j: continue J = j[0] @@ -427,11 +427,11 @@ class Table(object): # find closest y coord # iterate over x coords and find closest start and end points i = [i for i, t in enumerate(self.rows) - if np.isclose(h[1], t[0], atol=joint_close_tol)] + if np.isclose(h[1], t[0], atol=joint_tol)] j = [j for j, t in enumerate(self.cols) - if np.isclose(h[0], t[0], atol=joint_close_tol)] + if np.isclose(h[0], t[0], atol=joint_tol)] k = [k for k, t in enumerate(self.cols) - if np.isclose(h[2], t[0], atol=joint_close_tol)] + if np.isclose(h[2], t[0], atol=joint_tol)] if not j: continue J = j[0] diff --git a/camelot/io.py b/camelot/io.py index de2052b..96ffa27 100644 --- a/camelot/io.py +++ b/camelot/io.py @@ -40,10 +40,13 @@ def read_pdf(filepath, pages='1', password=None, flavor='lattice', flag_size : bool, optional (default: False) Flag text based on font size. Useful to detect super/subscripts. Adds around flagged text. - row_close_tol^ : int, optional (default: 2) + strip_text : str, optional (default: '') + Characters that should be stripped from a string before + assigning it to a cell. + row_tol^ : int, optional (default: 2) Tolerance parameter used to combine text vertically, to generate rows. - col_close_tol^ : int, optional (default: 0) + column_tol^ : int, optional (default: 0) Tolerance parameter used to combine text horizontally, to generate columns. process_background* : bool, optional (default: False) @@ -59,10 +62,10 @@ def read_pdf(filepath, pages='1', password=None, flavor='lattice', shift_text* : list, optional (default: ['l', 't']) {'l', 'r', 't', 'b'} Direction in which text in a spanning cell will flow. - line_close_tol* : int, optional (default: 2) + line_tol* : int, optional (default: 2) Tolerance parameter used to merge close vertical and horizontal lines. - joint_close_tol* : int, optional (default: 2) + joint_tol* : int, optional (default: 2) Tolerance parameter used to decide whether the detected lines and points lie close to each other. threshold_blocksize* : int, optional (default: 15) @@ -79,6 +82,8 @@ def read_pdf(filepath, pages='1', password=None, flavor='lattice', Number of times for erosion/dilation is applied. For more information, refer `OpenCV's dilate `_. + resolution* : int, optional (default: 300) + Resolution used for PDF to PNG conversion. Returns ------- diff --git a/camelot/parsers/lattice.py b/camelot/parsers/lattice.py index 83b876b..50d8e1f 100644 --- a/camelot/parsers/lattice.py +++ b/camelot/parsers/lattice.py @@ -47,16 +47,16 @@ class Lattice(BaseParser): Direction in which text in a spanning cell will flow. split_text : bool, optional (default: False) Split text that spans across multiple cells. - strip_text : str, optional (default: '') - Characters that should be stripped from a string before - assigning it to a cell. flag_size : bool, optional (default: False) Flag text based on font size. Useful to detect super/subscripts. Adds around flagged text. - line_close_tol : int, optional (default: 2) + strip_text : str, optional (default: '') + Characters that should be stripped from a string before + assigning it to a cell. + line_tol : int, optional (default: 2) Tolerance parameter used to merge close vertical and horizontal lines. - joint_close_tol : int, optional (default: 2) + joint_tol : int, optional (default: 2) Tolerance parameter used to decide whether the detected lines and points lie close to each other. threshold_blocksize : int, optional (default: 15) @@ -73,12 +73,14 @@ class Lattice(BaseParser): Number of times for erosion/dilation is applied. For more information, refer `OpenCV's dilate `_. + resolution : int, optional (default: 300) + Resolution used for PDF to PNG conversion. """ def __init__(self, table_areas=None, process_background=False, line_size_scaling=15, copy_text=None, shift_text=['l', 't'], - split_text=False, flag_size=False, strip_text='', line_close_tol=2, - joint_close_tol=2, threshold_blocksize=15, threshold_constant=-2, + split_text=False, flag_size=False, strip_text='', line_tol=2, + joint_tol=2, threshold_blocksize=15, threshold_constant=-2, iterations=0, resolution=300, **kwargs): self.table_areas = table_areas self.process_background = process_background @@ -88,8 +90,8 @@ class Lattice(BaseParser): self.split_text = split_text self.flag_size = flag_size self.strip_text = strip_text - self.line_close_tol = line_close_tol - self.joint_close_tol = joint_close_tol + self.line_tol = line_tol + self.joint_tol = joint_tol self.threshold_blocksize = threshold_blocksize self.threshold_constant = threshold_constant self.iterations = iterations @@ -283,9 +285,9 @@ class Lattice(BaseParser): rows.extend([tk[1], tk[3]]) # sort horizontal and vertical segments cols = merge_close_lines( - sorted(cols), line_close_tol=self.line_close_tol) + sorted(cols), line_tol=self.line_tol) rows = merge_close_lines( - sorted(rows, reverse=True), line_close_tol=self.line_close_tol) + sorted(rows, reverse=True), line_tol=self.line_tol) # make grid using x and y coord of shortlisted rows and cols cols = [(cols[i], cols[i + 1]) for i in range(0, len(cols) - 1)] @@ -302,7 +304,7 @@ class Lattice(BaseParser): table = Table(cols, rows) # set table edges to True using ver+hor lines - table = table.set_edges(v_s, h_s, joint_close_tol=self.joint_close_tol) + table = table.set_edges(v_s, h_s, joint_tol=self.joint_tol) # set table border edges to True table = table.set_border() # set spanning cells to True @@ -315,7 +317,7 @@ class Lattice(BaseParser): for t in self.t_bbox[direction]: indices, error = get_table_index( table, t, direction, split_text=self.split_text, - flag_size=self.flag_size) + flag_size=self.flag_size, strip_text=self.strip_text) if indices[:2] != (-1, -1): pos_errors.append(error) indices = Lattice._reduce_index(table, indices, shift_text=self.shift_text) diff --git a/camelot/parsers/stream.py b/camelot/parsers/stream.py index 45318f7..049bc9f 100644 --- a/camelot/parsers/stream.py +++ b/camelot/parsers/stream.py @@ -35,34 +35,34 @@ class Stream(BaseParser): are comma-separated. split_text : bool, optional (default: False) Split text that spans across multiple cells. - strip_text : str, optional (default: '') - Characters that should be stripped from a string before - assigning it to a cell. flag_size : bool, optional (default: False) Flag text based on font size. Useful to detect super/subscripts. Adds around flagged text. - edge_close_tol : int, optional (default: 50) + strip_text : str, optional (default: '') + Characters that should be stripped from a string before + assigning it to a cell. + edge_tol : int, optional (default: 50) Tolerance parameter for extending textedges vertically. - row_close_tol : int, optional (default: 2) + row_tol : int, optional (default: 2) Tolerance parameter used to combine text vertically, to generate rows. - col_close_tol : int, optional (default: 0) + column_tol : int, optional (default: 0) Tolerance parameter used to combine text horizontally, to generate columns. """ def __init__(self, table_areas=None, columns=None, split_text=False, - flag_size=False, strip_text='', edge_close_tol=50, row_close_tol=2, - col_close_tol=0, **kwargs): + flag_size=False, strip_text='', edge_tol=50, row_tol=2, + column_tol=0, **kwargs): self.table_areas = table_areas self.columns = columns self._validate_columns() self.split_text = split_text self.flag_size = flag_size self.strip_text = strip_text - self.edge_close_tol = edge_close_tol - self.row_close_tol = row_close_tol - self.col_close_tol = col_close_tol + self.edge_tol = edge_tol + self.row_tol = row_tol + self.column_tol = column_tol @staticmethod def _text_bbox(t_bbox): @@ -88,7 +88,7 @@ class Stream(BaseParser): return text_bbox @staticmethod - def _group_rows(text, row_close_tol=2): + def _group_rows(text, row_tol=2): """Groups PDFMiner text objects into rows vertically within a tolerance. @@ -96,7 +96,7 @@ class Stream(BaseParser): ---------- text : list List of PDFMiner text objects. - row_close_tol : int, optional (default: 2) + row_tol : int, optional (default: 2) Returns ------- @@ -112,7 +112,7 @@ class Stream(BaseParser): # if t.get_text().strip() and all([obj.upright for obj in t._objs if # type(obj) is LTChar]): if t.get_text().strip(): - if not np.isclose(row_y, t.y0, atol=row_close_tol): + if not np.isclose(row_y, t.y0, atol=row_tol): rows.append(sorted(temp, key=lambda t: t.x0)) temp = [] row_y = t.y0 @@ -122,7 +122,7 @@ class Stream(BaseParser): return rows @staticmethod - def _merge_columns(l, col_close_tol=0): + def _merge_columns(l, column_tol=0): """Merges column boundaries horizontally if they overlap or lie within a tolerance. @@ -130,7 +130,7 @@ class Stream(BaseParser): ---------- l : list List of column x-coordinate tuples. - col_close_tol : int, optional (default: 0) + column_tol : int, optional (default: 0) Returns ------- @@ -144,17 +144,17 @@ class Stream(BaseParser): merged.append(higher) else: lower = merged[-1] - if col_close_tol >= 0: + if column_tol >= 0: if (higher[0] <= lower[1] or - np.isclose(higher[0], lower[1], atol=col_close_tol)): + np.isclose(higher[0], lower[1], atol=column_tol)): upper_bound = max(lower[1], higher[1]) lower_bound = min(lower[0], higher[0]) merged[-1] = (lower_bound, upper_bound) else: merged.append(higher) - elif col_close_tol < 0: + elif column_tol < 0: if higher[0] <= lower[1]: - if np.isclose(higher[0], lower[1], atol=abs(col_close_tol)): + if np.isclose(higher[0], lower[1], atol=abs(column_tol)): merged.append(higher) else: upper_bound = max(lower[1], higher[1]) @@ -191,7 +191,7 @@ class Stream(BaseParser): return rows @staticmethod - def _add_columns(cols, text, row_close_tol): + def _add_columns(cols, text, row_tol): """Adds columns to existing list by taking into account the text that lies outside the current column x-coordinates. @@ -210,7 +210,7 @@ class Stream(BaseParser): """ if text: - text = Stream._group_rows(text, row_close_tol=row_close_tol) + text = Stream._group_rows(text, row_tol=row_tol) elements = [len(r) for r in text] new_cols = [(t.x0, t.x1) for r in text if len(r) == max(elements) for t in r] @@ -259,7 +259,7 @@ class Stream(BaseParser): # TODO: add support for arabic text #141 # sort textlines in reading order textlines.sort(key=lambda x: (-x.y0, x.x0)) - textedges = TextEdges(edge_close_tol=self.edge_close_tol) + textedges = TextEdges(edge_tol=self.edge_tol) # generate left, middle and right textedges textedges.generate(textlines) # select relevant edges @@ -301,7 +301,7 @@ class Stream(BaseParser): self.t_bbox = t_bbox text_x_min, text_y_min, text_x_max, text_y_max = self._text_bbox(self.t_bbox) - rows_grouped = self._group_rows(self.t_bbox['horizontal'], row_close_tol=self.row_close_tol) + rows_grouped = self._group_rows(self.t_bbox['horizontal'], row_tol=self.row_tol) rows = self._join_rows(rows_grouped, text_y_max, text_y_min) elements = [len(r) for r in rows_grouped] @@ -332,7 +332,7 @@ class Stream(BaseParser): warnings.warn("No tables found in table area {}".format( table_idx + 1)) cols = [(t.x0, t.x1) for r in rows_grouped if len(r) == ncols for t in r] - cols = self._merge_columns(sorted(cols), col_close_tol=self.col_close_tol) + cols = self._merge_columns(sorted(cols), column_tol=self.column_tol) inner_text = [] for i in range(1, len(cols)): left = cols[i - 1][1] @@ -344,7 +344,7 @@ class Stream(BaseParser): for t in self.t_bbox[direction] if t.x0 > cols[-1][1] or t.x1 < cols[0][0]] inner_text.extend(outer_text) - cols = self._add_columns(cols, inner_text, self.row_close_tol) + cols = self._add_columns(cols, inner_text, self.row_tol) cols = self._join_columns(cols, text_x_min, text_x_max) return cols, rows @@ -360,7 +360,7 @@ class Stream(BaseParser): for t in self.t_bbox[direction]: indices, error = get_table_index( table, t, direction, split_text=self.split_text, - flag_size=self.flag_size) + flag_size=self.flag_size, strip_text=self.strip_text) if indices[:2] != (-1, -1): pos_errors.append(error) for r_idx, c_idx, text in indices: diff --git a/camelot/utils.py b/camelot/utils.py index f2c0bae..88564f7 100644 --- a/camelot/utils.py +++ b/camelot/utils.py @@ -20,16 +20,16 @@ from pdfminer.layout import (LAParams, LTAnno, LTChar, LTTextLineHorizontal, stream_kwargs = [ 'columns', - 'row_close_tol', - 'col_close_tol' + 'row_tol', + 'column_tol' ] lattice_kwargs = [ 'process_background', 'line_size_scaling', 'copy_text', 'shift_text', - 'line_close_tol', - 'joint_close_tol', + 'line_tol', + 'joint_tol', 'threshold_blocksize', 'threshold_constant', 'iterations' @@ -281,14 +281,14 @@ def text_in_bbox(bbox, text): return t_bbox -def merge_close_lines(ar, line_close_tol=2): +def merge_close_lines(ar, line_tol=2): """Merges lines which are within a tolerance by calculating a moving mean, based on their x or y axis projections. Parameters ---------- ar : list - line_close_tol : int, optional (default: 2) + line_tol : int, optional (default: 2) Returns ------- @@ -301,7 +301,7 @@ def merge_close_lines(ar, line_close_tol=2): ret.append(a) else: temp = ret[-1] - if np.isclose(temp, a, atol=line_close_tol): + if np.isclose(temp, a, atol=line_tol): temp = (temp + a) / 2.0 ret[-1] = temp else: diff --git a/docs/user/advanced.rst b/docs/user/advanced.rst index a36ea2c..31d9bd3 100644 --- a/docs/user/advanced.rst +++ b/docs/user/advanced.rst @@ -319,7 +319,7 @@ You can solve this by passing ``flag_size=True``, which will enclose the supersc Control how text is grouped into rows ------------------------------------- -You can pass ``row_close_tol=<+int>`` to group the rows closer together, as shown below. +You can pass ``row_tol=<+int>`` to group the rows closer together, as shown below. :: @@ -337,7 +337,7 @@ You can pass ``row_close_tol=<+int>`` to group the rows closer together, as show :: - >>> tables = camelot.read_pdf('group_rows.pdf', flavor='stream', row_close_tol=10) + >>> tables = camelot.read_pdf('group_rows.pdf', flavor='stream', row_tol=10) >>> tables[0].df .. tip:: diff --git a/tests/data.py b/tests/data.py index 246a711..c223227 100755 --- a/tests/data.py +++ b/tests/data.py @@ -312,6 +312,63 @@ data_stream_flag_size = [ ["ALL STATES", "513.38", "436.02", "-", "25.57", "51.06", "14.18", "-", "8.21", "11.83", "11.08"] ] +data_stream_strip_text = [ + ["V i n s a u Ve r r e", ""], + ["Les Blancs", "12.5CL"], + ["A.O.P Côtes du Rhône", ""], + ["Domaine de la Guicharde « Autour de la chapelle » 2016", "8 €"], + ["A.O.P Vacqueyras", ""], + ["Domaine de Montvac « Melodine » 2016", "10 €"], + ["A.O.P Châteauneuf du Pape", ""], + ["Domaine de Beaurenard 2017", "13 €"], + ["A.O.P Côteaux du Languedoc", ""], + ["Villa Tempora « Un temps pour elle » 2014", "9 €"], + ["A.O.P Côtes de Provence", ""], + ["Château Grand Boise 2017", "9 €"], + ["Les Rosés", "12,5 CL"], + ["A.O.P Côtes du Rhône", ""], + ["Domaine de la Florane « A fleur de Pampre » 2016", "8 €"], + ["Famille Coulon (Domaine Beaurenard) Biotifulfox 2017", "8 €"], + ["A.O.P Vacqueyras", ""], + ["Domaine de Montvac 2017", "9 €"], + ["A.O.P Languedoc", ""], + ["Domaine de Joncas « Nébla » 2015", "8 €"], + ["Villa Tempora « L’arroseur arrosé » 2015", "9 €"], + ["A.O.P Côtes de Provence", ""], + ["Château Grand Boise « Sainte Victoire » 2017", "9 €"], + ["Château Léoube 2016", "10 €"] +] + +data_stream_edge_tol = [ + ["Key figures", ""], + ["", "2016"], + ["(all amounts in EUR)", ""], + ["C\nlass A", ""], + ["N\net Asset Value at 31 December", "5,111,372"], + ["N\number of outstanding units at 31 December", "49,136"], + ["N\net Asset Value per unit at 31 December", "104.03"], + ["C\nlass B", ""], + ["N\net Asset Value at 31 December", "49,144,825"], + ["N\number of outstanding units at 31 December", "471,555"], + ["N\net Asset Value per unit at 31 December", "104.22"], + ["T\notal for the Fund", ""], + ["N\net Asset Value at 31 December", "54,256,197"], + ["N\number of outstanding units at 31 December", "520,691"], + ["I\nnvestment result", ""], + ["Direct result", "-"], + ["Revaluation", "2,076,667"], + ["Costs", "(106,870)"], + ["T\notal investment result for the period1", "1,969,797"], + ["I\nnvestment result per unit2", ""], + ["Direct result", "-"], + ["Revaluation", "3.99"], + ["Costs", "(0.21)"], + ["T\notal investment result per unit", "3.78"], + ["1 The results cover the period from inception of the Fund at 8 April 2016 through 31 December 2016.", ""], + ["2 The result per unit is calculated using the total number of outstanding unit as per the end of the", ""], + ["period.", ""] +] + data_lattice = [ ["Cycle \nName", "KI \n(1/km)", "Distance \n(mi)", "Percent Fuel Savings", "", "", ""], ["", "", "", "Improved \nSpeed", "Decreased \nAccel", "Eliminate \nStops", "Decreased \nIdle"], @@ -485,49 +542,49 @@ data_lattice_shift_text_right_bottom = [ ] data_arabic = [ - ['ً\n\xa0\nﺎﺒﺣﺮﻣ', 'ﻥﺎﻄﻠﺳ\xa0ﻲﻤﺳﺍ'], - ['ﻝﺎﻤﺸﻟﺍ\xa0ﺎﻨﻴﻟﻭﺭﺎﻛ\xa0ﺔﻳﻻﻭ\xa0ﻦﻣ\xa0ﺎﻧﺍ', '؟ﺖﻧﺍ\xa0ﻦﻳﺍ\xa0ﻦﻣ'], - ['1234', 'ﻂﻄﻗ\xa047\xa0ﻱﺪﻨﻋ'], - ['؟ﻙﺎﺒﺷ\xa0ﺖﻧﺍ\xa0ﻞﻫ', 'ﺔﻳﺰﻴﻠﺠﻧﻻﺍ\xa0ﻲﻓ\xa0Jeremy\xa0ﻲﻤﺳﺍ'], - ['Jeremy\xa0is\xa0ﻲﻣﺮﺟ\xa0in\xa0Arabic', ''] + ["ً\n\xa0\nﺎﺒﺣﺮﻣ", "ﻥﺎﻄﻠﺳ\xa0ﻲﻤﺳﺍ"], + ["ﻝﺎﻤﺸﻟﺍ\xa0ﺎﻨﻴﻟﻭﺭﺎﻛ\xa0ﺔﻳﻻﻭ\xa0ﻦﻣ\xa0ﺎﻧﺍ", "؟ﺖﻧﺍ\xa0ﻦﻳﺍ\xa0ﻦﻣ"], + ["1234", "ﻂﻄﻗ\xa047\xa0ﻱﺪﻨﻋ"], + ["؟ﻙﺎﺒﺷ\xa0ﺖﻧﺍ\xa0ﻞﻫ", "ﺔﻳﺰﻴﻠﺠﻧﻻﺍ\xa0ﻲﻓ\xa0Jeremy\xa0ﻲﻤﺳﺍ"], + ["Jeremy\xa0is\xa0ﻲﻣﺮﺟ\xa0in\xa0Arabic", ""] ] data_stream_layout_kwargs = [ - ['V i n s a u Ve r r e', ''], - ['Les Blancs', '12.5CL'], - ['A.O.P Côtes du Rhône', ''], - ['Domaine de la Guicharde « Autour de la chapelle » 2016', '8 €'], - ['A.O.P Vacqueyras', ''], - ['Domaine de Montvac « Melodine » 2016', '10 €'], - ['A.O.P Châteauneuf du Pape', ''], - ['Domaine de Beaurenard 2017', '13 €'], - ['A.O.P Côteaux du Languedoc', ''], - ['Villa Tempora « Un temps pour elle » 2014', '9 €'], - ['A.O.P Côtes de Provence', ''], - ['Château Grand Boise 2017', '9 €'], - ['Les Rosés', '12,5 CL'], - ['A.O.P Côtes du Rhône', ''], - ['Domaine de la Florane « A fleur de Pampre » 2016', '8 €'], - ['Famille Coulon (Domaine Beaurenard) Biotifulfox 2017', '8 €'], - ['A.O.P Vacqueyras', ''], - ['Domaine de Montvac 2017', '9 €'], - ['A.O.P Languedoc', ''], - ['Domaine de Joncas « Nébla » 2015', '8 €'], - ['Villa Tempora « L’arroseur arrosé » 2015', '9 €'], - ['A.O.P Côtes de Provence', ''], - ['Château Grand Boise « Sainte Victoire » 2017', '9 €'], - ['Château Léoube 2016', '10 €'], - ['Les Rouges', '12,CL'], - ['A.O.P Côtes du Rhône', ''], - ['Domaine de Dionysos « La Cigalette »', '8 €'], - ['Château Saint Estève d’Uchaux « Grande Réserve » 2014', '9 €'], - ['Domaine de la Guicharde « Cuvée Massillan » 2016', '9 €'], - ['Domaine de la Florane « Terre Pourpre » 2014', '10 €'], - ['L’Oratoire St Martin « Réserve des Seigneurs » 2015', '11 €'], - ['A.O.P Saint Joseph', ''], - ['Domaine Monier Perréol « Châtelet » 2015', '13 €'], - ['A.O.P Châteauneuf du Pape', ''], - ['Domaine de Beaurenard 2011', '15 €'], - ['A.O.P Cornas', ''], - ['Domaine Lionnet « Terre Brûlée » 2012', '15 €'] + ["V i n s a u Ve r r e", ""], + ["Les Blancs", "12.5CL"], + ["A.O.P Côtes du Rhône", ""], + ["Domaine de la Guicharde « Autour de la chapelle » 2016", "8 €"], + ["A.O.P Vacqueyras", ""], + ["Domaine de Montvac « Melodine » 2016", "10 €"], + ["A.O.P Châteauneuf du Pape", ""], + ["Domaine de Beaurenard 2017", "13 €"], + ["A.O.P Côteaux du Languedoc", ""], + ["Villa Tempora « Un temps pour elle » 2014", "9 €"], + ["A.O.P Côtes de Provence", ""], + ["Château Grand Boise 2017", "9 €"], + ["Les Rosés", "12,5 CL"], + ["A.O.P Côtes du Rhône", ""], + ["Domaine de la Florane « A fleur de Pampre » 2016", "8 €"], + ["Famille Coulon (Domaine Beaurenard) Biotifulfox 2017", "8 €"], + ["A.O.P Vacqueyras", ""], + ["Domaine de Montvac 2017", "9 €"], + ["A.O.P Languedoc", ""], + ["Domaine de Joncas « Nébla » 2015", "8 €"], + ["Villa Tempora « L’arroseur arrosé » 2015", "9 €"], + ["A.O.P Côtes de Provence", ""], + ["Château Grand Boise « Sainte Victoire » 2017", "9 €"], + ["Château Léoube 2016", "10 €"], + ["Les Rouges", "12,CL"], + ["A.O.P Côtes du Rhône", ""], + ["Domaine de Dionysos « La Cigalette »", "8 €"], + ["Château Saint Estève d’Uchaux « Grande Réserve » 2014", "9 €"], + ["Domaine de la Guicharde « Cuvée Massillan » 2016", "9 €"], + ["Domaine de la Florane « Terre Pourpre » 2014", "10 €"], + ["L’Oratoire St Martin « Réserve des Seigneurs » 2015", "11 €"], + ["A.O.P Saint Joseph", ""], + ["Domaine Monier Perréol « Châtelet » 2015", "13 €"], + ["A.O.P Châteauneuf du Pape", ""], + ["Domaine de Beaurenard 2011", "15 €"], + ["A.O.P Cornas", ""], + ["Domaine Lionnet « Terre Brûlée » 2012", "15 €"] ] diff --git a/tests/files/edge_tolerance.pdf b/tests/files/edge_tolerance.pdf new file mode 100755 index 0000000000000000000000000000000000000000..c4f43cde4acf09d90660366cf709d19450a2f9a9 GIT binary patch literal 71867 zcmb5V1yEeu)-{T|1b1kh;O_1uxH~lN?!n#NT@u_SxO?#665QQg9-MQ(D|NsBz5i7g z?6rDN8FS3BW;MGSa(Pj4IwpD+I3@riz}CP5j+YmXLD}8T7{DM8G&OdFV-T@*ws8V5 z!7+R_H*y4M0a)G*6#+VM{QPjnHbx&V%>U*p?_g`>Y-sENpptig56%4f-|Rj-|2qZT zdm;zpj}#w);TRN+9c`T*42>NDA5g??-|zgjU;?oHZ6MAJ;QYsm1;F%?{M}2O4Zy_y z*YX_~gP5C>gpw1`$@ni<2_+5yGvnWO5=xu^=D#z27{0?bR5EsYFN@(FEr3DU*v$#R zAZ7hty6``)BLBEb{arJIjIoh9P}tV(-RC1F`#S;-F6Q@}?@ZY^y%*vLVEzXv2?twe zyT2g(&FEiyI0mKnJPtq`N4t-@4c*@z-`^26b}=_JR+JF_AdEp7Xy6E7PUAg zLkDv^CtC-=-yLBPH+OJ!5-|fh09cse7^H#!*f241!o7zuax!xSaJ*wv{I}vhJpUW( zze4|=>Tj6;1SW0;GEjgqz5aJAcJ>b>|2MDy$Wo$-?qabRT<`_x;E9 zFOT=yb^d2^d=&cMUH*SlLy8x!$vXjE?_< zIyv9F`VV#f#nr#d^TYMOf&cIF{9jT2e@T^z@jtc7$nhUq{gC57waUi+uH1iVm6`3` z_TRM1@n2f~Tc2#~|EW(lHpX{-GI9WzINpD8ysPznrhUW_H@7lo2D}URKac2NZ~PAl z?>0{FQ=j3zE+=DAW)qh#z1R0x6ETN zcTaS&)w`;eqL{RU1H;o{qe^Kc2PQINvW;JYFtHG1f?W_WWMo5mlIU%m2(9^&lg=2< z3X`*5y!L9)7a%G9O-H3MgVcmaCm!pFhaOc!qfceoQvQ!^!u%6NXHVS^vWLqmvz?`t zm8G_`Rg?(`pFr#YIJx#cqb*VwXM~}k*SH|smXtEZSuoAVy1vkV%yx2SIIRoiiDL$w z$O~yG$1>So1#h97Q%`%Yla$g;WOa?6cIiP_mg;=6*;y1@E*p+IKmZII4?h>t3fZe3 z@0NBzF0VjVG6+VNTQSAQIY2Y{k*zEDIlrmcx$Gwz_&Q#sZ(k|3U^3|GJV~*4g-=Yr zcK4sqw01#?w`GUkltjq!oF&#Vd>MsSkFqAbU5y{#+0&G;o&c|21D|wQju$)0vMuMn z;ZVn#Lncku51upYaoqkQZOWk0ak$d3dQ1m`uo`neU{1rmw6-g70@7qi<2%{V_Oe3H zA43##+d9SX=J9kXM(I^sM4*qQyY_4{AD&c(y4T|f^2DFJ*E+5}b2E@We+Ql!bOMYL zd`d<;eg5)|x=j%01;fp}4)oP&Y1H=MqGp81`~JK^;-|U|T4Qbn3brKJNZ9T@!g0|T zUZ3C{_V&VpnvC7*yI#)qYgTY-Q6Q!`=V`Z5G?1kZYa)E5K^sRkErGX|qsx(&63h@2 zk=B%vF&NKJPL!B4<(7($)7gX(<{r+&&8H2L5Nm9E91y!U?HG(?Bhan{FesIBL*%PY zIu8V5tt`z8Dluu#VR6)ViD27o7@U9C-319;#M*G;U7fJ@WlLS_?+=BI`NpX2p9kA3 zgH7L4O&|gtOn%O?F5#Qu+RJ}xuRgjKIOxcT5aRXBEq&(i75q>w-bmBuiF}M!+2a_a z?*@nISk=q_vf{?;ibcDpD#X8r*m#w;{@QFwh**hZ;;01-+0Zo`*ut+wNndoKn%QdA zhrXRcv{KnbvFRXOBhCirG2?gbu;~m~s#ya*Km$R)u_P};a%{Ri1o;RvaX>RSIh^AW z`W0?jPrSu+F?rv;Ipak`?*827l_HH|{Vlnb0(a{ze0=Ng`G>%<74}maeo$gk+V*Eq zce4&C=Fd~K%tN=dT&B60VQTKfqkGFgc)uxh#O;wA{6a2{$HzBv^gafCJwu$9+!BQ> zRlzEOSPO^!BqZH;@$f6q>h~goi4iQB5xhF81V~auxvziuVYy$h6{O|nw`xDcMIRfT=ImVwod_5k&_$(S7X8x&)HoC$3^g7~!xtK};j!5aP&8 zM6MyO*oe%CXS!`6!pl$C{+Y-RLy+>J+M&;g=t3wCOz5P@L3u+c*ulIAUr_Z#!p48d zhigL_5A^~$9k?PTJt0Y*Dt+O$zZ8pB`crSmF;ZWUNBU0<6#x+~v9kty)VD2)Wj+1m z(zjv<4|oX&NaqC+FCkK6@9`~wB$uM8fxJ?C!;Co1NQbCz!5+mDHol*Sl=P`Dm9ymh z6Hs%ySyO{oV5Z}WdJ(p9hH`qOQ^QsuWQOYWF)yt+aUP7!WIe&gxElrGFY!|Yc(Hbg zCj#dBgv@5$`9~#mLEvMTa}k>fFe&(hgScGSU6|e8gVycq5+~p9vn$h8TKC z&tWbL&Z#a9&#^CkdbfsRdeOpsdeF|vE)%!~AmxbPz_Z1@akHh`KqmIvh;B&*;3r4~ zpeKk0kQvAr_n+n5P#(mx^!!s|^@7zKG%#xZvZZdITPJ* z`TgW#1%f7G1p<6X-|+Y)UhyA@&LKVhp2}FJ0}h z9~eDz+)z70NQWc<(fIRRpkWYR$YC9wP4i~#U?aGk*F7Md(a>{Um*A4tkojHkybLh- zFl|(!VEZM075;l%FClE_<#EX@`YOBwO+u$!&owgf`p_EoxaOH=j2hC)t;IO-vy~uF z;{XJJu`xPi0U(qFnZy=7iUgyM3TcJ}MtQ-%3m0Nedc>Z$uzJYevZgA3i%r^+BTA2Z zv=#>e3fw}xaJdKuY88O=5kTzGQ1k?jf^?RC47*sYZ%ln#bgC;1DlB;mQaX+CTkIH0 zjCFhV}Qjk!So{ zYlnw2q@h;LV$HdPwq?ZK&zIN;mdV1pJ7AN=aVc@pGlUx=p0c7W=F2VTS7H*AjKsUs z$)q5L$-ZK;n52F$sJCQR2uZh?H7kWt!(gM!1(um$7pPjQqNY3ol5-r5@(DtTbeEy zS6)hO7%Zj$Wl@vsLYFUwDH@@lLZ{p+t|5$ptlE0{<yqJhSwVrG$?Q;Y)0=mvZ%G z)U^~^%3}!O{e|Xmxm)Fg6*@RNW(so+N4Y!F@d`f|=#sZ?{ggOuPLOV~2F<_Q=XY;7 zf3H9Kv7`c$qip zb$zD#r>N{qxP{Q8ifg1FU25U-HI!$(zn8PhG*H*hQu|TxSg~WUs?=D3H>{IZ=VN22 zuu|uL6&uT-qfin5DCUrfPVsL-wE3|)lqG1UCdxPa{S{o_!$cF73H2I0cXpIGQ8MlOLU zs_(-kO7S1i`c4j#ADFpcJWz$UZ5wpRH?8{c-b+h{gJG7-nbtdW+ zhky)2o}W^v0WV#uA5-Fd=f2A*-mY^b&sK`7i!9?f`kfqY*^p%$$5s_P&33{VaBZa4 zWiEO6mMNDEBiB^2jL+-U%O|xa_6y9`KetvTlN7U%zv&>^7Gm&53z`(-P1@gjKv~$g zSkV_9J7mzwIxa-*D7S99Kx8330WuQa52ZOir2`3fhvEkd*oi9AEK93gM?QZ$M{Z%F6G3#&6DMqImd3lu#EPZsFoa|38z4`jZM4!u! z?Wj1`Cx)*C7t|6{QXm)e1ZCZFlLaU75ElH2XEEi!3U}*I?l=cN_k(u2#*V>$jIym) zkdMaZQbi^E7cP2%D1cOP;Fa50s=B;GbZ=gS)W~}VW7viyg$&|~P032i;gSDJbqpVZ zzhO0&{UgcLG^m%blZHnb6^`J&6~edgqQgGMTX;W;VE$5G1VIGqxTN=^Qulsm#Q+5G zmo<+$=*KaW>m2UsGxY@8+~V|E6IV_h8@b@dGcHaZN)B5|Zy_KGLKFhcXS#q(6pSPl zaA)b_EKYL=9k1TR5=t4%OnyU?>GDNNj>ge6o+{^RSG$9W9R9<%?p2OZO+-8TNlH5m z8b%?^Z9!0FAp+JOD|JMUuAKGkT*^3*M;%KpMu>2IeAX@mGa}9uw>^m}B+vHeU1xze zNWfH_OcDm^uaK0aWP}I=I(ll_A)@${j0A#lI7o1By+V%OEf+2Vmkbppj75?(8F7Vm zF7T00R3uEUGFP%O^7~?qB|kWm#_xgL1G~jJAqM&{esOmaLCijhw=YyDXL32{;NPqa znoPhd+$g0z8K8b**9`jV1}zkBCMgD4@T3G;rVQ}1Wm#LR8wjf-4p4YwO0kJmeJfg2 zMyu2?qNexHqF@mp!xmYt%re?k&zDFIYan%H255#y7|iuxCn$aGtyOnrp9tES*J z#N({vnff+7RRj`o({DA59d^OSB-CkRXHL6B7%iPs5i^%j>68-!`=p(yUx&?iy+B$DZUxziu2`5J)bpJ>W-*a>a>2|m+* zSyd_p=Uz^pvZS{xIw{w|JYH;*v^^sCz;l{jBIjg08LT}#C^5`U_+N`6?$N7Bw`B#gi6NjFFR6F0SPwKx z7D3MH=pYRnN%q+M$b2nJy^|4NxtEUz57(o`V)?u@YE0e2b<=Nbb)oO8rh&yWDl_U+ z_PB2tOL|#5am5dY#f21zOhwL`(Z>^ghIKieL*I4;nXx>8%S`z$Cc~`~OB4r?*Zn&h zETs*3w0-Ha84+FS@mY4dGAnw1o#WLh6>XoW)yws+5jPBcyQ>JRV(8YC_{8;Xmi=hH z>D*n`0mCZhK-o$GgIsiK>hfDbv8>ifd>qr}bJ}!7{GQ>@bd$M}dNRYvlpjn=#ME9+ zqbi{n#6f(VFcX1>7Qjf$)0=1;*izg|5T|RCV7$T!bELW3>j{4&*+ba_-mVft8@=BN z@u*qXP3VzpI22fNYdGXs6PeR(68&rsn}xfrI6X72SZ% zStnuLI7knR+P>w39NpAG@rlT}9#iD*g?YI{aJ#S!^QugUpo`2bTz5Y$`rWNfgK>IJ zjr)8#4Ba2u?x(5mQo_#eJBJ7!WP0WZ4q;sBpyR0~=xtc`_p|(o2y4~agLi+YDzQFS zk==Fn6BD9xH65)9ZfmN-h$fvTCxNEw9O9?80(R4LxI9QD;9B^qlCg|5vE8pduH9;T z0^+v#8#d&!Cj+ea@(W#oH`+7BBjWN4hC(NT_b`Nj`Ey_xemOtq34rG~s1hqx#}yfN zrTr_ssEf*(MTB#IOZMI>Uo3$ew8%C{dsk)WX4E7+`Dyo1-5(L~Cnnx$0tDVa6_6fG zyrCPlUSVF5mss)l@Qdy#nENde#f^}*hU~VunEQ+9uvUlk@Y-$N1Ph@X`H0Sb@Em4- z@a&NYR$UgV$4x*9t3gv9gekl*ZU#;U?wA)a%V+0Cp7XNP$1V@v>=-reki44Kiq^6W zl_dGD11cC8PpWl$EC>WED*ZZ4i16?ve_?mYj`$2p(>*E;AQ!gcGw5Q*L0xW)fsk6i zKVbwU0hUzlQ2dlpvYSxiWJ%oQR-CeNdynYD4KJGUd|f2iEF)q|cdj5rfx;S`G%t*t z2$<*@6;o~`I=EF5w(l3FNp*39IVdwTT%tM@-f?^)8XBtwx}HdNbD+rR0%xN;C2^;D z_X@Tn6Ox?Ls2$UIK85z%-l+Ae4Da=I(4&iQ%^#zepcLK1lbD8j^hbj%M3xLgosMMn z&r#2F^I$=tNoA^)+8Xyh-Lj;F#QX-NP>jGwz>;T)mTu8iiV>M-_kKHM1`{vLL@y{Oggr?wzbDv2lfMEHD*i`R2JxymG8k;28GNah>L(& zM{F96QGUS=GG6;wD>snrK(z(+O>hVBwqZ<`)=80Uu!*=0vR|vCnAM;r0*)-YVR?9g zf^Ty<{Q)oD*-RjaaYed5Uy9;^#B|?x04Vj3Hhj<_2PkvXJ|+EKXp$rLKPP`TD^QLw zN1h`i>2mOnbnr)Mbuq25lA1@=6LLC$kVt$Xoh9#u!83rJ8>A(|_0gwV#1x3q9zGFx zPA7h9g+Zwq*IJZ7M75ni!bd^80#p5k>ZS=?UZBSWy5T~os1rNELlGN9;^MS*tNQXs!Ul1-lPcOzTEC-VY@xW>5MAl?hAmo(q1HAc$}g!27u`f1u!ps%BqmW91*EC zNHOjox)d*ny2ExLJTrkEfg=llpEe+ms6*Xm-w>d5XCB{`?(@XOp35& z;sC!^F5X>*Zej&GwgK6#=ZKEy`@uh+yzOp@=gj+hAj7uq_nqEAr#|^@en;jT>nsP` z>~xpT0v3zp+rx3hMCZfxv}tFAe$^Xg5{Z({{$b0-KxL(y7PW8=K2f-9ZL1v_J|nj# zYZNOZ;xj7{R0B{Bph(3YA=Ey=# z8eya~7~ZXFEgkPo1J{0z+tbDAuj3gVKRld7{wz#&T1L8di0P8*dbZytSJ_M~Id0mn zI7vJgG?)sohW*^bw3?XfxRvgL6tKw9w>84EwwA_QHnFU8Wzw-qsTiTx>R#^`M1XQ+ zSlLtTd=>hpEDns@yDuv)k|rlY31z^h1_F`Av(!+wj3QL3xtR5G}M7$FkH?>8f*)HktZU;0U9Jw1G`i^`4EX;$-N z4dIuY+6)xCYmBX;BUtd&QO?*p0Ru!DvfP{VIpU>(dt%HcV$Yf`J!4gURiuvD?Z$78 zjU9r!eYW1G$)@M8Jr`??BSRE3Kq*!&Vz{kf5ZHAGJYp0m2B}gUmMiL~T2Qsmg?Kt_ zrGohGOa0=gKbb~0wcc)AYY$)s@e2!FxqIurE^3!Eu$0DQ;b1K7w_->KW(?#7*4%u` z3$nM?Px&p3Am^`s>RtbNZh0fhVsr$e+J1Tntk&NNEqXHIx4{EMO5&y)GJQhE{_I@e z9WLRlS{#Z(5Tx+yK(&ju^RD!l4qD33O$-vo5MAXHA$=N!&j|ID{fQ=r~`i{T{ZCb zep~Ud1Ppe5=CW|2%cW5{B7V*@G&Y4u%N@URNW0va3$KBgJ$2CJN($FjDj90t4;;QB zI&Qkr*Lk^zy}5z5ZP^NVY`M5_9+@lGa9MKS%Np=(;&|Qkzl|Obf|qhT(+le~+~^U@ zg5R<|A-`-r8xV-_xtfw#fb)N9-2mKyReJ19fw+F-sFZ8#8##8#U!nNwfIPy~2&y$! z*(HX#r&i)o{AG6j#A0dJh{!VU@;A!DFStk?B=0jy(ybWjRe4s=CO_6#W&?d|Ju@V^ zt^HmUkF{@h%@u=5bI=(Dz1t0#4gOQdnnUpgh>ZyI6y|jeLD4EmXpG?o9Rn1MY4h>y zW+TV`mC_;<&iYx8FviTAg*URBPP(Y_vmG0Xode<;Wp*o?H|+U+mg(sQx;F0qL zK)62zD>tXjE82G@DOz6-14#pz(Oavt+W2Y%W-M6PNI zRWHnO{RL^c%V+OkhiY#%aKe7~dt~o)+_3Vg<;Qw-S^hPMIsITlz(j4l<-0l1{l6zB=VYy|R^B(<@{4DTcc1sQ44s{clSPN1Tf{Uf%3)Ag zGG^YeL%LnKaf4lQKP{W)60HvAT+bDlEm^Yl%-jC1dbA;Ac9w~zzJavA0<#r6Ns}r`)JiDvo z{KLPMP`aV4-Wi>K+U~+u$F#;ap=CiVi^R2*-lE21$#{<1&{)iR4I-zJDce>#{Bo9- zMnhB1&tJ>8?_^>Hf2j(baarA>apnH;EOTAuVxLt>|JI!z)@#^rz4vLAWtHg!#_M6* zr`nTZuMAUm)p6}ld;w37tPW+$s?f@I;pb_+rsMqiqA}|X$6vyVH;R93#`a%| z91jTyDD^P17ICWJw$ZnZ81Qvx*aJTgPh={hTabmQ@#|{&DC+cD<-hI#nUBjW8(ipL zOUdi+e&(r&gp2dzcaoJg)Ks#uOas-VMS3m0^*)_H*t=K_-c)}wg+^8?=$$Mf&#?cR zeEDfqOCT)nxNR!HjFp9V50sLWU8YP>-<(GCoiGqvBDSuf8T_ z-6W`Y1cNY*$kyPN5Qvz9Vm21PG|K#D zA%&))Z!v}GrWL-M!m7fi!hps-8c{D6jdWJ>!*WL@S|xk-hfQ`^A~H=l<`}J}d`I>E zX#S}~jrK1p=IZVfc6_e6tt0#2JKXCRs+?K!HVUK}ykaHx_&KdoDm34~#0`#JL$vHM zEmc&oX}(*k+z@LwYaU#lTqj3UTT>Z-l}N&?PAUjz-^RO)@K0|jO@i_QZNwASaAKWe ztE4IlIhJ>L7{H)Dz~9Q0M5?uz0XH!|>VJ4NxkY(XrdAQcD;X1-K|S zY;2yW4f2dzOxVEOJ6IMP{hUW4Kuul2;O?xhzAbeOr~_XV+YXlK$YJ!Dxp8cLWsN5C zT5IN6^FE9=Zj9WP;2S_lV;(Fu$JkKV5>Z^>GPsSqqMS!o3ZH4iX!ts}a9mlVO#T)1 zZ2j=Oq%!`enT*QZ{_)hqjfV50^Mm6I*BoRtB#vX-l|(kT1BN4EqpSv>(TQXkpL+8j zmHI#Z&<8%8YXjeoo5c$luv8RvT84}6Omf)w(J*yT9_zbd+WagG_4$e=!-HIK1LLE` zI~gAzBQ=qTx-shMv@v~*d|rs!MV@JvWLrG?ia#eORB28*$=r-0F((aW=<%ALw%u2e zJal}9bWafWYxB=M_y4tN%%4o~vUlGxJ;60d9gEMEswUrNFJ$iSy-^(U)ALKX0_#N; zM`cGPW9k7SWQufl6JYwtNov<~Nx%kVHRkb?U3(`BcYx`>8YR=VS}KsWCRooAU$0vY z4)GZRNWVr#yN3n0cV!B*FBpo@`U4(IiV-JFXuWxMf2A59s1D8$DxMI>0y@Z4&2v#z zJo{bMj+jiI3`|jw1V2fYhTFG-6H!6qI`<6HNgTJRN7;s;d<&t1?z?k=$M?oYHPf2+ zzxtJ|GcAmA8_3anptY3q(l%Z$k|JW->Nz{2hslxASA7INM+*#|ym@nN@m`{M{T?V1 zvEf+#0bYBt=qT%?9MGO-?m%nIO`xNgvNKw3R)?tr>peSB|8RE6;@!EvOj6sg1+n)q zM5UMEYaj=?Kl&qi2?N$wS;?M6NQri5b5=EP=@8?k5pN^B+n% zbMI4RiE)#GHOHe!4VDRQhkgS4Z?fO@|KKbZ>{U+S5N7Hzb=*HL%B1-;8O`h)TrQaN zP!Fm(JpFkHN@>h?xsso9C35F3S}m=;=)6iVI~}S^C|shIepVdVN|S2;-e2rDJw-_y z5OFIAH0Y&YAth){kg#^$teVmgFCk&Zl)7&A0s@Ue6jP}{JZrdJt-H&9Vq{qXnl!;8F@lHs7DrN1llTL65ix+D5=S@@sHy!V z&5V;ZEnKI6{hpSp*dlK@&OAIRq@<}(Dw-aXEsDsZH!AWUdn#uGk6U_b?>xI}U%MN0 zT^P+at!lW{oUrCgX}BHT#>t2x5Fa-~SS#Hv|2&@9|2Z3-o}3&=W5`;FKVroEl^M&p zcFv`LN}=ofmzNzUpIaHZE&xo}u?wMp-o`3vDrYRjIn_)&RdFj!VWHvmemMeo7z6ro ze#nm8pVM9AQ);8dPP-yY14BgzqyGK!@t(Bhfj!LRNP@-!yUQrU-zH*YCi5m(F5+}0 zrNT^dM8b1FW)V#SrhxIT!Mj=&!#K@cl;7BM@UwQXaj=qzsMpYv%Q>KXwL$0D4{ zkB#=N@WbNO^2CmK+7o8r;y{P!cUX0YHPB>glW-dCr9v7$}D!;M~_ZGX7~ z4QiO<AD1aEZcR zVOgVq^d|&vKQmm^fD2zQSre+f8&4G@%_c_qrdivo!wxy_i!mnxgyA8xP|$Et)^1$x z&;`JV#&D8FbX?7hF)?bKWcz|>en^5av2};p3ESCL;#d3aQ1CUAtDf4EowqKrB7lOE zMco@-K$j^W`%eTepv{Z5PIT3hKDxRvnn2*zZ5jDe4!eL8eK!U4jW5Z&V`SXMIh@|U zW*>#8KOkQi-Tg-w3BP0y!6*u10Wl~yO)Wv2-gVM;-?s6#v9`$h^PPj~+gAt5!#<7k zmWs9BoFgBiWl0lcifcn|lV}?8&7U;tGV@50pWF*mSM%6@jCx<7-M;_nehWH~yAN0K3L0=Tf671!B&=?2L`@*>@ zSMW1GV{U=fptSZkr~_ycjzG~A4g<>*RZ0^_b4L_DyOWR5pisnq4JhV5H0LfOMr;xi z51gbbM&(5s7V3JlnhCJncp`oS;ULY1S`%KGG>|n`C70s*ZKm?09-rfj_3tl9@x2t< zzvkBa%aNay(TU2?Q^ewasSzvGeo@d68Nw)w1u&+dq&ffs^a4wAA8vi~x z>M%;UO5^%<9%xx2NX$!}9wJsj-}ZQUp#W!8g~@Z0G4l{kaK*2!1jS&gD8I;zl-kH$ zhxL95bXh`s;3nnb?3>>vyt22|Fo4~g4Cp~nVU~>X98lAC(}S*s^FT_X`ZJlJdjzR4 zL1Iv=!o$@X1*5BfLfKV^92ua_918k1Ww0$&)=KVs|^C=hz(|eAZ2mTF$4RIoGSV%-+5kKXNAhv5< z;8$X+@0J#h#J&d9YHmVGFtc`wp_j?8GM6^ja6fbV%U42(<+;05y8^+#l@;%FLWxmW zS|5R)y$$Sp_N=mM}X|?P&H#$&9YdIsNkDh}SL(;W1s1UQp<5__y zU9cvonWpz6u$M$ntU{aeEdDIA!a2}RyGGcU%Tm2J>fI* z17S1ji5T1DKB&7wr}OWN+w26xfoMWD_NRwRJlXBtc*^2ptUX((umc=;x1nkWuZqef z!``2;{^%`;=p&Q-!D-^!oX)Bisb1_6W5&He;gDZV1!*QQr$ zfp#2n*^GC8+TRj+E)MB@sM8xIZPF5%=US;c&80&4RtH|SuSNs8u8ic%>g!hwId;a7 z;dXYOCpnK+KnB9OSWl}Ntt*)u__cG&iHaEJ7$(&MlY%++Eqi&csRO**$MZ+3rR(d} z)gv@kvQ4R&oUqjcy2-3K>bMgI{du|j>LoNuWVo}&zJ#I%a7zm+cY%vw9yN&`e-ZCO z6!DfoTk@`^QG+O9lruo=-BL&TVG>hJ)8xM6?@Wreb>UpAqw6Ah+Vkg+T*^dgha)_t zaZ2z$WHZ;0#pgr3D8t9Mft(0gxlW%Okt&QXX$$=Oz^a|jK&tC)dkT}>=^sHj0GFPy znB;nmWJ7SGW(x3JxF{Hcr~y&*Tyqo_mX+UMN@kn5ja1S#LFxUN0+*Yq*pYj@wVrRO z#;G|WW4hq{;j~+3R|##*8iSRlzD#2D8pU&7pNVE0p-@%_E8(1P`wjOm%G@#qOFyxS z_<3dL^>nPP|EyxWKejl8$_}LJjXvNlsG$Lyke$EuZ{C3C4}c|%0^jsb`V{bU<`>6E zQOrn+YK(S}xK;Sg0Qp{G$~d=z%O&wl_+}&NSFhi^4|_7>V#B1hdkrZkZKqwj*SmT< zU(tTYeN(8=#AD@Vu@0X?$74EO`BOzqJV-CV-S7qNJ01rK2g8bf)Tno|x~b&;JxTfq zd20_!BS!fr79!{KE1sc_NU}rnlo{e0?>A`bYa-TF>AaSPorjc|7XRQRu5pR2dCL0_g1 zh@g5WcYLL>5Bxpl`H=>RXJ#8te&WevMT5{hBYhDRzcpLSZ*{f)=IaF_PPzD5Ld}-F zNf|+1CwP$dNRHY$R<4${gly!6}ztzz_98l$GF{0*`7RBa;<>!o*KTy7K(rIbOeWL00G%b3q34)*l5DM;--4 zmlX&~wYQLwSB#>pMjzlsL;w1zipU^MX8q+uGhX+YTMNjl2%VZ5+c1 z`9f>zw72Uh^ilMdeW43pF6}0IcGc7VnSY{-eiIx>rkF|fg@p;bE`+hZnczmP{ti;!frqzg$8Q(8Ks0SPLx8|O5HtC^A8TPcuVGhU`WH?0kjmm~Q!C#c0sf)I8 zVr5gD4tKnfiq{0rxde29U?X^tOQ>qTaQT(fvxnUG(TqXnA*u{aD6I?nQ`LT4<_dwu zE&W?li4>d6FdFWlDME8!A@bvm*qErQJB-e&h@w;0yj(XhQ)E{|4u278*}tA$(ly{Q zz(E){%SBt_*MC>Oml}6aLNV9!qCQI@n75ycdm6; zv{Ba#jG$XDjF|p$08AhWr@f*Zp*t#Hf}rWcD>MYhlKhoN{y78(?z+#9=SH#$d9h?} zuRo8o1q?dK-d=$xO`i{~DCQ{Ca0_3Gir(BF6>cq;Gfpy-MB@n1nwJu4m^U|g8uR5o z&zSA)*Jllho7SPc1{O)*1{j~lmsWSjlo^K1Hx<(nB2(j3#}lcq6e})wFUu5c1O1V3 zSJ72Hz#i)-K8r6AHOo5`NbDR_3VMq=Qsi$33 z_L=`O-=MiJcP5h`))c}BNS(~mmEY@#cU3vnaM^Wun33`+cc{t<>>8sS4gXWy|IJHN>FBz|j8<{&QCCW# z`A_icts??q-aKK;T^`RSs2oWNe`N?0OPq8<886au5{_HB0}1_ZL=sxV^v%`%!>{mA zkA4U98gu(l-do5690i8th*<;pm$WmTLwzZ@QxjQno_qze!?~=` z%RLdJdCy65gmKCYAHHZiJ{Lw8roN|M%*v`Wv5WhJRroEm`L=eU*Y-Aem0U9PKn9$e7_U2LI&Ya}POezG(0x(IlCu&tUJXJraCE|obMbQ8q$L37{;hM2HwLzut-)YD|C!3#~}{aEd&uyU;0Io3!LtryB3@q)Y}2K96Z zqWLC%9+`-PlhmDrbJIP-ywuNjIJdxtL+z+t>{TR_llyfUrBvC%m70Y7Gl@+gPCY4$ zvq)c4q8WpJHroh zShMxZv~g&sWseTNX-wpA8h6h;1LpES+D4ceY(|oQsuUc}t=-)=U1-Enpkvy^#MI15 zvztak;|#7mJ4|ik+y-8EfX-A+o&5P(#1hOI{<2OQpbrHR5EL$EQs7?RZMYk&OS%f2 zvBW_Hs};`5ix8>Novq*^L>BtKC%yNaMfBEP!1b^Nej1v1G)+`rhm)#Bhj7 zWWnhGRV2M+23c?LMDH)-QBZt6#v$3)h$kE8M``n0oBfsFhq_xBGf!ltU7Ev(A>bOO zK+(Kr8#IM)zv>FgHE7s|5s74rYR9HNx@##Vs{6MrJL;F~B^y%tBN%eIvHfp@{s;u#D7%oGuG##bSg6{hCz-VsT@j4}01i9b@ygiY$MZ8P3FJ)FX$sz?Y1uX% zoYES}bp!rE5fQWkmqfGwP>56uxWNwvSQHwC@~%2`<@Ct~pBy_-6BClUNj5)tD04B2 z;8S>S&P}uPI2fjlXuEdeK7XzXrx2;CY4d_sx+f8N4tBGah9{iz!E+AgFq{K?4esA8 z4t7F?IlQ`)c#}qeI87dK6_ZY9yq|hf6T849?W#5r1UTx^iE=42H`POs6=NXcc1?kV zX>`kgCR+|5C;km?@Uyb70U$98fYmoJpiyxp9+i$`i-%%ZH$Enn5i#9G%o}kTixZT4 zae46SdTc#X_6;?`fJ7pCq28%`;5&*vy8-F#2-~yUI_kx&JN*+GuN23yW+4qri!<8* zdkv`~+#+zY%z26jqq`Ia4M12B727g9X#JWCcb~+8uABx_>O_sqY)MslNh;8huYVZV z($ALwy9}uIcwu?Kl*5BiwKonUt8RJNtjGBwb>YA)FbNkoTXva(yowYzOQUH|bVJ5A zlkiE~QHNAgTfr*JR>$UMe_kCDRSDuiQr?fm8$%TWe~^*aI+(^kyeu=I&2pUd#}!i0bwlqsq?mXXODxrY#IxV6~qlp{WO#)s}MfcMA(kXJ9G zQ6xLJ?R6S9`8UhWdn4ja;Hmpp3&N#442!MjdOG2>IqXHm=*f@@efg9b1rmUT7+BFPYPceSxzI=S}1 zJB@dWI5{*Gcr!^D|Ml%x6_FeS z95d~iG4=aHLEGf7+uY3v4WvlKm5+Phnh!hplS!AdzzB~Nx}?YOT`FR${o#ANwNYi) z9pnjJ9GVq_YdI1UfhEoyf~5ex z^UwT--ey3dIn+AE>3SqcZC0tl$gjybi4}5D2;M{7dog&G-BH> zvtUrQRGwgde0Qd>gxCwjb^dh(Zx?)YW@4A%k8p4_R zS%3Ve@TelWqZh4HkcguGX%B}@Ika|tv%?~iL&1e0x0JT^qY(#0ZelqJWN&xaKQvf* ziVpzU-h)dN)`~Z}o)WWjW8$vQe$D+!l$X=@T*ulS$vb%<#XCs3Tc6Oa$tJ@2sqj%4 zF`C0M?&aCD8?F|QnZ4<3jOWk!gW%8}4TLfeWOI1rrG)T;8rxRB<8fR|z$)!wV2!12~B6av=HhA?;F9lPcj< zKaq;IrqW=BYWt^>uL4d#-G$4APDJeW%ZW;@Z2Ro8p~?-S1sN~Um3LS81FCt#(oZ2) zS>FEvFwI}L`nT~{Xs@5~qx`XAP=RX!cqU2PB@4eW@RoDx7MX`pvv3xhl5+(5e!MW$ zdc6$VFBUanz!KfrntXZ;G;P-IH`({@vk$(qrMJuU5mEI&pBE8GlFq(|lzM;iY?G=` z9ygNYs`n~Xvq-jv?-rc$g4`B1Q09^%7FaAXp@~D2G5)5u$9mR1^N~K$?w4kXd(Ky? zw~EbT#+~r3&rA}$q#8fI93cG=<5F{vxWt@QpB0|fIyATuih>yAwhq7LK0!KBo9A|l zYEgQ;c(nFdl-GBofPv=nSB27Hhr*f1doyBAOHRvXze(drdqc%1Xyd(4h-D+T4T*jx z;x~CF63~40dVadUyExlg8+^-wzF!_bj?6n7mo$ay{0<=$nndW!)CWxfnre(MZ3wap zu+YQsb@y!ruLfKH23Fm*jdVjQj^2UiT6rbaRm}3M zvv2DFAPL^jCsBbRJzk*LZdCW?tO}ml2wf04(4Vb>9TLtxKz36(H)7C{3QriI^?$#f zp(Bx=h$(>t-{$8aqlgw7xPU;Vg@>U>=QFo|20=@EG&apU83AK7&ym~UBvGm%262@B zzF))?^m7f}SL$gN0yE@71AoBO9{Y8Z@p-m)sVt;H4SB1RyX#G&;$WP$sG+H2X?f+h z_EDXz)vZT*yGqC7ZlUr~U@(-W#>;PRy@-aH?q%bdO4p03FvOv8$BfLogE8`N=sJ%#B(cinN%k{?*`*KOo8=kuqb8W%=P7o zOZka^{;pu3gxsQMoTa{V)7XNKP_9C!8ne8tes_Eq}JgS3j+Ms=90XzboCq~XAXK|j+fsm)B0PM2BI1BGaPgc9)IZgZN1olH`P-c zw|N~7pTWXz7{e$2NN#UdgeX|1tFf`Msv#1g+f`l~9^PvDt(aiLjaTr?l}%`F>1ybm zP*@+XApSqJ-34&uI-@A)2~U`l2{SWuGGS(BW@hFIO_({EFf%hVGcz+YZO?zs-S=+2 zeY>?)yVd1Vw=GMuEXi({>T?#=_tLu;ZbR%Ssm&pZ4ZisW(+(nUG+0VjacyQsmjulptH0x39>mKFV%!11{o7( zVw3b`#dF7VCOh7KZm5d6oQ!$(RD;5-l3=d1R5Z5*0eBS?!k;>Wf>X+J3h;8s@lY(t zDd6noQWyy|#;1QOgLGPUG9%jJc9T3%T^{N)vuS5dVdvR;+mhAcjE%Gu6d?+h2F)ls zY``+WHC6jOiL~MoPfwmpmYN;Ml~eWwr9rgd7wbWb>ljm~1LH@&k>6nQkZ8{+j>^dn zB#8Q)tIA&@wtCe+X#H+ToLvRKsz{La(fHslDad;xcO7mB*C_!tLvtKl6vLS2$i@rP13qy(gwy>OFVin|NP_x5pd5H>Xb9w%3TerW7u4w(5w&D*KSYXu!SE{fLZHd9jO~qyfEGG z!|$NVXhsF9gn`SNW^|oDZT&w5EHHv0-{HiD1x!_kxr3N%O)aM2F^RV~vtg#YoW!CAe% zsVW1%i33*bHhVrv45ryr62X9+&SR~EWTAmv7GG}8!J)1ST2Nv>Gb!e4c*oMWz??oO zaH?*2O!r_sF~NKGOGQ_^u4!}WFamCdy)I+r_b{4=)_E6Jh+I+)5T48Mn22qU-y2W0(_(!qwU6P(hL(k*A%0<47 z>rZ%KRG;oPw|txH??nf5V@da$VP8t`F8YB)Htlbzbv2^OiqS6hovL;gUlpsfM|&4r zm!C?=mK<2w3$HtpC(S5L+K2NeF zVL9FuM74bwAMB0a;ws84uT~avPu$-D&ur^(=^$GRUK97b^3i{JI~%M7*|PrhBA7$l7{!Wq8TL zueN=X9lhdZi0GLraTmEzq7oL2Quz1MAe>Yk6ENr!|t z!L;A{J$-d{I-jJNrlt=?Z5Xk$eL6fOU$td$2IL{;07bdhULQsff@#pEFm+%$yO8Xq zem%2YakK4Jrp7Bg$&`MsmJlv*MtPN)PF0umAw{ZrZa*!_N3kC2S3OKwK9#@0$$IS^L{@#4y)W=>`dYZ$EiJ_3X7+nE>58Z8^3}Qfb=2D!Eg5BWrJj6y*z77=l4P{=wnP`+adR7RstG^I6??b1JAt~fgRymV zxw=uXS$BL$78lKXJxv9%S%d37h~W~rkdNVBTkhHm0iB6wD_OqvTz-^y^@zj126&WO z0)|xwZZ#g~7g-|Uiz{oLWAn_t+cWvjm$A^lz3&$}A|Z=+AT>n*PBxLs;B=zZwc`uQ z2CIxMr(M~cUvE{-@rE_=mE3rga5tC@-5#Al*L5|BMEZC?XDbrP#k`dGp*^-(`K#;d zyTRxe(nlz0JsHJbWE@B;JTE4$qPIOVq{)y^ zv#;}q+YTH z^usR$WboD+P1h|fcT!jbWOb*mzOlGX>hHTlY|^sc)2@ei5EDRacXUUuS5?-YKB)sM zWiLtSM6*{q^%X_CH(1#oJClN)G)i9boQ!AsgwUDuHbMgqIg{Iyma=c+`TjvzN8`?i z=aZ|MEAfb8b7dW{s`)2b2M_u4h-&L*_EOXk1Cl|6NAvtJh`WQFL+o`BRhi9XFKl-{ zt2t|2MgQ0ZuTWRj_5Y;qlIM0UL^58?Jrcf#&KDy>dv4)G<6>D{$S{K7Ok|qD1^0^ zHguif?sU{Wy62>21ctwDVQfF{b=ZE@8()PfPSK_(rZ*lNILuLPp+rZ#vw9q?W)0~s zyX{O5OLloGd%o^|;Cwyb@wIl;wF;z*bh>Tf$Oen@t+jt_kihe4*1y*z(?+g6-slhc zvy^?-r7=YZ*II)-k1u0I)(9un{0c5k%~7Xj5c)32Owo==vC>4aViKcGH+T)Ht`Uo( zUY9@2C}#WXN4*yvlJSU&yQoL_X-1V}=T&>=)zq2$1Z>Q|g+2KHwE$wacx>VxwopFNvXga`}SPjnVoxpkZ96w8j0xd<6U-0?` zGNE7fME-<u_s#zjev3p~8zQzrvgP<$p!^ zTwVWODO15qSVn%*SQc28GcecF6wwN;4=)fR5b^WJsg^ey8KR4WuBR@~h=;0NDzzoW z%xOZ(hlJUmS0lEva)!yNkiNp6)+cI_nIh1VTO#IYV9eBhv^MUk;D5 zzP%mO>X&dL3DR^3&2vdomNwNVOcC0!=Iu1=b86A{u?CA?0Dal}ew6iZ6HB5r( zU;ZKU?tbsY7u7yYhkAryF*PZXE(39L&Y6d<+yH#a)oC_-YKK`3ITIl-D)nB@OcSVcZmM6ny4Ucu*yt+t^MDB`@xBSS zMlo@5vfd{X*Bc^0SwugTwLU$J6y+8B9lH$5vUPC+ zBXyPwVsykTLputDxDZJ|sD|Mni976iFoP8Cm`TxjotG+F=y)OvDZ-h|#OoMpN>Ro7 z>?CUpl+FVeW89dmMbPOyuxhuih-}aGI4XcQ7j+3oZk#vt)OSh4JVwg(`=k3C(+N^8 z<9!@lvASbbM_$*@>$+v^xdDgbMm}bnyPJd$BZ?UeJ_!meb!!eIvSs$|ECR0XP2KGT z<;wnt6x>lg^&2~yd3O*kg}PiPnpJ`)C#bU;Zk)5HjT(=nqkyb+hm1EEFgHmlT>fKe zwgzhcP~AK$Rz}NgLr;Q_Sj5+0f>%4w`Nbz$;r&y*mk-Pt?B|fq7m)@KDfAYfC(6Mx z<=4BIF_#|_wb2H-V@lQQY5QILaP*CJlQ>fD?A4*Dh9uR^PsDL&Z{q_XSSp`5^75M{Vb(n1Rn2E0bNQ8ec{!l9=v-xm`^IwKG- zXL8C=l&F$|zfm_PXy}4u<8~TBu0~;2;yEoll z-`Lz*hkn)za(znOL?{4A8Zm1xv0VI;c^7p(&rYuF4%T%A77-eiGhufko|Bjq+?f|G z%{Ycw*y&ck=~)(xRZL|j2yZ5GM$nMNH0d|kF`lYJ!aLY*CA?EYit?k>ehDxj|L+d_ zbnCU&%VIv(&c^ZSDrIv=#(M_*4pmoq3|nt3z(fS053XRT^UsVis3TI&zPDKSIG+>3 z(B}Nd(7ubwwv$Z~qU@Dey^-}o2z97}s6L-gRHC#>hh&qt#9ai)RAArf9eo-{s0Mf5 zKQLo!a(WL?(WbFqh)b&=R#5DWZ^Y4lp@Ce8*|d~vqtJX|Aqs~vVM_T2-V7!wXV!V9 zA6dp*^+jSWyhlr9ArJ?H-cPEjVGg$5VPR>*lFc0Z@Gi<$BUhx;M9pHsemqLN90pXW zcB*MmvUVIba_RPp=Zd_WSYTSO?oc23aXf%GZky2ZlhVZyrIr6)+P4or*Jwg))GIhnLS)#GY|L8tzi}MCU_RwV3^K9X2C@H5r|$q z2nS+dE`sp{C$0-b9iEmStk1x&Nr)iMA*zs`B$;*i{X&YJT)&Yn1UT-e+|OKH)i4}! zAbTb{`_H|TXX~(axn>UDBEv>l0XJ{jfG$=a|8ZBJmcHP9eHA58;4$hdv4mTjM53*N z+(nx4OsV7JV*ix`vUpn&f(q{_N%twiGkG@pbmcFRa)cd~RWvGy-sa%Z6y)|t;iKr^7|ytpV3 zMkWrmOWj_U1H-8XmIgN1mZE5T2~sZ}%-(PLZ=KI71&c%JZ8noBJDcW{kzId(U)yqb z{;3lGk!jp>yVgyUvbx(S4&^myEYp{<%AWp9@x-~Z0SOF;od$(cI~F$r&9(k?Sdx~X z*4}8TN1>$4o);nzV@4C#!nCkCv&AWXxa&y!OGu&oW;~C*GlwxQ-(1Sr;WAbGKE4;M zdPpL@9_*bdGW^NB_@6DtEgGdn=D1ca>Y9RFGScgz3N@?XjR6SA?f0&GQq z8Oz8Fa54dYEISiED?nak2c*Q##0JRkFMZ0!2FL^Oi-VaRpPiWvpB)f`?LUep8#`cM z0KLcx2-*MIv#fs|*#Gsz%F2$<%E5up!v0Ul3W&!H5IX;^V*~8>_kfw{0eJ&*`um*$ zpfdhv11me*e|96HcKxqAMhN#H@Fhu{~@SzO{l6&a|JJ$v*A4~PsDBImU$!j^>wnpy%z)PV zzuKXH+vxx7r!xG{c=7+O9SUgmtN=*&zwA&zt7Q4_cBnR_6V^h@r|FDYe(H=F#>Jw| zNTZSFCJt9rLBET^5M)%{LU0N@Gy*U|aK1U3PP~GEfFHtlxkiOXfw5C|0%C%M>W~VO zYg}t}i9bJg62EyDBnVh_d_@`UJ+54>9A##;^1PnE99A+t>1FkaRnlGRG>bXc_*#~Lto<_52k?-uWgt@yC^+(s|cvhXt#><`Z#WyYwpkqN(8ud94m+74khii|) zy2%Z@LN{DhP&*b8^oZVlk-!vR!NYW2@o*U9DRB~El`rHXD)j%Z)3 zJy!#6*MZW8v#Ohc?0!o&kYkff$3d{8Am5m1>n{PI?Mg1!hgy;?%Pt1=ZDi`I3-tyg zZ+O+o^@xXP1Me?)NtI0dxhz64)I%0TK2q#AU9Q>&E!F?G#2?b`sAhcVu~Tj;5pMn6*bwd z2@o1P>O6h*v<}#2C8YPFSVYp~ES{+=2&wOB99KWdxTm1!L45xB2;DBzPB6?W{&|*) zKTe*5K+X{u_r8wr0l#JIYe-AhhsE*dN?qF_;C6|3x^!?0`uy%<_zuqf#MD%@xv;#g z5E)s!^TNt~IcUg=8=XJ5Bf`zPYtQS*#O<-E*Jsbi2%KFb$o zz4)n7{%$3^59*N^+sM$4HEYT^J0OvrHj=oUp_jiE1~(s1mZt~zFQ*dvNRCZ>a*kE4 zP!V#Fl4$X9m%?2<)Xt;k0u{9+z`YbpuL-1`*Rb;iGP~F{Fh)d2+k^q5_?{rWZ^R;Z9ntYVuaDujbaDv=;0NWWMsmCx__QfK&cm!>wm|% zsv6gG3N8nCuh^7Ju#6$5PeAn;{oRu=Sx5|t>`1JSXS{5R6cLBQk_y@(znCu4UczkQ zSls2zCQ6Y=!B#lir~kt?h`KhV`i~Nc9DZ-I7nIw!B1m)c9MPFF+RvY8{6a}TB_8(P z+3?5kiLjJe{UKLi4(G+I{lL_LsA`psv6f>l^kltZ;q36adVLHKHQ559pa`1<36#tI?`Oa{?A{2&}g+@~Xezm2&gz-##i6_W>WDG9zXpmGpe zzW0$zm-Y%Qp-dadxbHwN`VU1a@c~(?R2gisFHR5H0&Wpwsqb*=m;&QG z>`V{l{(JO6E;_?c=rp<+IrBHS@_{)$Yzq)(3|0=qgYGowzt$)vn;??|bbbEkHzs{j z2dZ&_EU>y*(=sopjJQ{r)jzQAaP>q@eOmi10F;zFC4?LAkciF?Y#4e+b9gHtYMyL5 z=Px#z4OK*#4IUnY&aZlExSoy3iz6ed0}~$GmV@OENiF?>n^f8klSDulaxiS#jWKN6 zt6uW;t47AkQnxGq+;S7P6BJ7Zqdj<#Gtr{LDz4)@kVEpi=%rv!e-tNGgtaN<%o z=6*vp+RNJY#r%~XPPyPGT)C)D)h+n4UppdeA+MiwHROxHGuyte;!E4LHUJvsc;L12 zry1S~43D7;xFYh^JqX{~o%gIpZ6wqMPR6$lyck|n?nI%L{y=l-hT9+8X51g!f!e3i zBfFK^cioX_Msi0#7wCkl6zIfsA-WRrfvEJijHwE;{L7EV_-PPHU^%)S z@5R~e2d)V3H;7pHUV?o=fHO)o+!fph5IW`EP+m*{-l(A+=*xHRtXEX-%3I`X(A)TH z6oBQ)d^vI zU6~h56hRko6@C{~72y}xyC@WVqHdrr;g`aJZckN=FKktjPSDa0>^|GJ^gf%i5A>$M zC+s`v15`WgP;7MBJ6wDCd*x_X&{knokLNY-?b|ibEyOj~{#MC5fmezL25&%g%onmx z^t)#wUvPA+Yq$SvM>SIigm%h9#yGtuqQHOFoCHuOH-_SCSi zh!14vFS^(-U|;@Es7{ejOqoKRU-8q?>+m4MAe2S;K`_lxz>aEU$A0?EnBVxvs;SK| zVEZgWx(lU&st(*~hVC#Uljd$XY4p&h&VHs(9xBm4kJ&{;{ZfD5smCtDn5m6;jY8Hj zr%nnpHh=wUo+h7;Y7#&LFr~*}JQDuWmgpqob(ku5kuFTDL=p$!4Q0X?w<)=(!S&%_ z@<$ppeP$T^3*18%49+MNQI&sc%vJOBQ=D$>@0Gy#Hlfsw7~}~;1w`5i0m>wne4Ck} zbN{Xdv)Ah7Z9fvcIXbk1`9&?pg@s&OvHgWxLm5uIKKATo^F*;tJ8JE)L9Rf8(0nC0 z3+YL4{TRG{ii>-NOvviOsk29xnd*>a;A&5RS%P|&YD3xLoPl`mE}|`G>%-oV(T_04 zPhTxF6r+apfi4(gaRDZg$F^eado|}`&P%Kdlk>tTGj#azS*TJM=kMlnP#BqCi7q#U zz^@BLo6Kb!)V0sPefU^%ZAR%7XX@OLLT#-CM)hS&XJ9yV$1EAR>e~$bMN4CW3ivk6 zob#OZ>)b>o523b^$|7h>$8mF!;#$~4gcO(;P(D#L`~VNfgN$QQZZ%uvn3V2BN6 z3-APnZ1SxEGGw{c5ADREoVnUNSQn?x{q$w43khNayw_B)PsN`zbN4uoXo%Qsexqq;&PAp3&R3bK*?LX9-v8EBn zz{Xis!&yK;L&fDMDqT>P9)itRnloQS(Y643N7WQJ7l+M7)H}MJy3vj7_w+uItTcg0 z&IqA4lU(gSK;aUNSBzq$NO>%laxGL@e;BWAYx04w17i_y>TSD))ftTcL3RQkiO6~g zWy8^S2xjO=WzOHQ?|Lx8{m5SAkUJf>?jJ1&-f2$)+$)}7h%^_Jz(o>A$MY1Odq#h@H3r-t1rHq&tO~y! z*WJc}!to;!-ytx%D9WRxuNc*d#~C;+pOZ?_YobnVKh9V&jvdRTPjGgKCkvj2)#|Zw zNEODy?j6T5MgLd2qO!{DgPH{4)TET}{Cur{kSwUpmU4zpk&NY4f@5Z~CQKYDO^O8L ztWBEw%zHowZ0_J&|NItapg`m24_V8-)0blSV{2`%PEAzibgx~+NLr+l#00MywFc%A z`A>J@Yi1M! zN5g(!>3>G>AlH97C7}k2Fq4TuBHMvu9e-I5HBDy(q^x$ z<3G@+F8`pf;owDTehkSgCJtPIGDpLd&QYt_Pbn~Y199$`?&~JZ?EhRFT2%P2wW)cKE^DA6-@$m!Q6T)q$( zW$fvHjNW>Ff^~<$Z~gakSYkt)BC4ha!VVbwB@KgY8u>Y=OBZAE82sH#N62Q?T9fShodcL z>f74;P=AZH!{^h2^mlTZ#v6xxrQvsK{%|m+M}S#%Ea&&l*~(_xmHxEq+C(v8 z(|MIiv(a$UFj7OkYVn_o)$fBN+7LN%_{=Rw&2?d6dbTF=CUTBn5w2^?%-$}! zhY5>j@^kqw71qx59W|W=_89X;b@9#*s1MFLufMq1S2~Cp3OadJVv|$2U2peeVGTEm zC&WpIW{-Dw|E)I1q5lkT^vC1LiB#P&2nW4^Z--dp6t~`~_gnKlQo&w87*#~Rd}c9` zq;p283+bBV%--gHYkW_ecti59HL9c}fah^1@J#S%y4L?2tKB9!crW z27eYaAbi)0I!Mm|DIrRRAG^)oNY|Q$PJVep!CkR`0V1Nlhzc7M980D?JvL6-?s)vh zYBKN+H%sc^RCWDStENf9R%nzacB|q<6oOf^7a|cKLs~!v%_%cKF0So>Jmp1F29i)_9Ze0 z$5TVo^`6=J%~M}SlrHEbgx2v%rmMYfX}KeybbvPAM=EBiH*Gl#OYg3P)MmLuc&!Jt28T^Ee44 z@qSstX^9=X`cV0YT*gv1yGjG^KW1ln0zTBJ+&ZCoD=LRB8HghGLog{pvxGo z`aVO~Dtr8^aCQiXMNz~Z-eAVcgS@`FwYD<4vRg@=nr|L&I+t9VMSQbQ>UfckG%I&8 z8}bL1`TIegK~8G{1JK6{cO`fezIMDDyi=2tnWlzE6AiUYnuoP>nx!ikG{#m;xHO3@ zR@%7{nQdqc@YSGglRyI2`Y;ttU(OCs)e1_siukL8Q=85?pWScSa1lcQwtsZ7VG`#0O zRq(jiPd#tLim!$Z<+t)ifL!KbKWVv4w?w4bS3i_fyrMTUW5$(VFAcXdI zXhKf*duSlc-F*#w*FGoS)ZKlt1Irkmmp^sSWiO5%S}jx(%(U8mq!s#Q<>kQ1QIsyN zLsi@rJ!p_~Po+1Cs-jt5X!E+RE>cxq-|K`hHMxct-F=HTmMiL*pPba`bk-sLekw|B zxmc-=j0MyorAW6_Zy-*GZlNVe2#&=nkcRY$1+%~Q(!J!6_E2~AIlOLS}|f& zXq%7Z<(cmp*H|tbHNZ|+WX3y(ZAfR-meMq=+gs$5>|v_+(S7SLbBOt%UvjpMn=s6D zeU~%vNza{=wZxBy?T`LBir@ub>EE_3?1saOBhiLy1kP9B7qZ_i6}9?#e=824`OCA*Hya!51@Qx}ddf z8#mCk21HF4)OGgWhfYz5<8S3bPc?^k^9}b*%Xw}3R7Ejg#8n(3B8e9ge4$Am5PEv< zr?SV0)CGJ+wnbF|5GRTB&}IfM4f~ow7~B-_j?B>eprB5z)-j-P+@(?~7m zvqd&>iNEdz@-HV9g{rw3XroA3LCan3Q*4hazDFH&Vwr>?`J+(bewCx0ql?kv-L#eF6CO>rBqLMH`@GPIW;$>D( zsI8lh*ZTAQ(O?JUtL0fWeUzB(Y8lM)BRS+#-Gq9IW5bgTkJ@DV+s0W~PUN_G@U_X1 z!tPt3-)4m=w8(#ylowOd)diKr*tlhshW-l3P_9W#R)&RVvc$Vs^F228hR4Z$%6fkv ziV(9UL5zD|Aj%w@IzMK2bSG=`Bv-P3e^}b${d`Rq?fkvB+!dPBL?6UyxAl1OwAE$3 z=EsBFt*S45iZhw}0wX#FBz-O8&>-V7>TD3!(66Yj#8)uE(l@u*OdzU;aVcXpTfWCO za>k9-$Me7gnHhYPtJToE#x0>#(nt!`UreT;-J5(I@1?LsD5JdUfXO}gQ3tFTUbxtB zmpN;`Q^#U@do;X(Yb#Li{!Tz9NPS{d*OAsTM1gvG%910on)Lmo!z)K=s-Hi#pW^1% zveAv_ZoHZ*XnVraTD}Js9XxCmPvyj*U3MBa_Dz+bIfWcCoK4+P-etdsD_2y`K`m8?FKh3D+wAe$xs(P`y8v`Mu6v#nMJfbNnr*5+z`KaRH z{&X%)|vQ)|kW@UPqz1wfbJ^tK0cy12x_yVY|F7oH^evVmi1QQAhLz(^H zrrxSJ++dB#p$8Kl@cK2Qa{Zv75pbM>IZlcq*6fj`die>dx54_0!o|6> zmI;lzq}={U>Vfz-f9hNcE&TA(XYX^D^qV{6njcYKIGYSPlNWNoSTQCR4pbPc>y;VS ztXa8;y1I@^iXPjyI=SSRRuyzz_s;zf=;Ve<2;VtA13C|CCep!uoR2y{uB=z?t&mq* zE^yUkvgOuV7}fh2G6qJ~Xb>rTg{TqFU?@k3X_(3#Q#g`r3fF3Z7H4>*qKz{RSQN{j zt^bTeCK;&j{5-w$&hH_PNf6Hi!wWT14lKJEqyvokE<_cu%5lj{T7bV|!i4UL2dqrq zz*xL*g(D9%Ohv>lO@^Y!t^TSI?{vrMSsV31qb*M|l)iI^LmKyVFwZpyReqX|p%u4kBx@fM)&mI+aty!X>m|%r^Ec=D}DTK@3Uof#RosYTN7qx@U~e# z#DmgE^V(=FSN}-Y{XmQV>XI6=@2<`v6CdMv;yO9&Z z5%W%&kH3jhgv@v_qmbDS2u-3iqAcS5yjP@_F4)9zOI6RG+$}Xq$@wX`QcTYRsqrUP zLo8F+JEZm3tfEO;n4#q`HF2b$P)2#dnv9b*R{%~rq~cYz zss-=B5&kmv*B6Lxh+XY>_t$W!R0L zl@S*PLlPbXc~H`V0o$JGM;@{L@II83*EIhH<&bDadUetMam=$LJ274 z*gO~(N#A0oS7s@u8*dGjme$CoP@>k9SM^3IyQ%EQDP#s;lYVxUfag)jr_md>Zd3Fk zea6V3nsiIyNSe4p0l|*Ao26Gpnn}sX^r87(<1-o)fD}Ju-Vm5GI6Aqk%oxZT*i0OE zxP+NgIJ2;Y?^vu~Y2YxeV~faqwZk*#l0NjIfQ-EYr{3M;AaPJQ+|TFCiz9T2`(>Xt z(klfm{br)j9(@R5N+27&Dt`OoC#_v;by{j^IO4Z5Jk2qZXvOLPoj&0!DF^o&zzlZ} z3$%yMuJCJqrze(asW>p0H7>%~91>|Es83{(lW}AihKNd+W93(g3Y;&`jnTQK6z5f-Xe{ zhOT;(jvBhIW=qMWvizEwq-^CtP0?>DVJCU{9;xiggd~z|A;~!NLK!?v>@oz5GHgbb zoSzMxKxOKTiKQHjtP7h4YkJ~X6seLDtH4q5(bo zIaSglSrX=_tjxUi`+~A3lF+^EWDHF8?d9F&XOdEjWV$|cb_14YUk9paNb|Z*D}xVH z;eCqs1zro5g-tWvWeq&~_NQyanexDbsMd}$E*@5{R@-YzHx3jq&!U4!kI<8>_%3<_ z;Xrhw&UUOa9z18hmI8&8iKh;g6VH?il?s&)l?VR)qE6_UIhrt9KU$tI)}jzJPyQeV z@E-EWB_^<6hITbF=LO6|U5|)IFk$nIfAHqm&dr%2dofm^sxJt{cMSQ@ zC9(LHdGFvXUvfgI!`YdCqo(bfdP<_O7V&W&`(uH{D_SZ@DNiafeH4WB_r}{|?5D-+ zvVRkJ(gU9eU{0U##tqP%*Ddht;-`%PEFM3Y)xb?uuj2?9kaKwe<(WG=-d@plVj)GN zO6QCdB_H5T0$s7_Jh-aR45VhDec}p?*eMu??e*nPJE14AOdK72!_dzLpdZ$_qk@h4 zaI=!pk@vHP_Izx--aaC)vJ6t*4o5LGsi49s_fVH; zPn!)H>k51=&gZ*>Kk5#hPqG`#~gJl%tq+KD{Rv{X7O$~gg76zyET$%ii>^l z4acqqKeQ1_cYfAp#9JvyH@DZfw~}yI)aQ6GG{~jxWh1i_U0)~!o^`3eAaxg))?IjB z`dppIuhdDAdNM+Wi3cMfjgx@JA<+AQey1n?3H*bHmEW3eJ|NPmshJ5>qmt zP|bZz0d8?yt)})lZla#K_t$jU^3*2O6rTXn~ z6~UqsaU9e(f1jBJ8@m@rx&vd@__kPv<&kJL9BdniHsSs3FU|eF$ClCif=7(j(bMT> zgYKHdXTM0h&n?g#MI(51%ZJoy6d;AD7)ZN1g|Z!^-xoKvWlDQ{OqfjT5X#CmTuQBR zQ88LVTV82#D>H6RnW4qf*M`r|=k4R>BBNSgSAQ0;qFiU$dO-3>a!Jy2xqjIj`51Xw zQLxm^B>b2Ykeyfu#@mo_#F(CGRSt%Q%#x45KwO0CX-=LlE@*Bp)nY+aScMj^3LUom zn<%0Rf9<~26Gm|qTygYpq^ORF)uG16K$2CHq+J10L!$G0*@ZGDY*vDfMRwv-q z6RKWso2hlTRkm83G~AAc?!I21rDQgp4~X}BTQCf!Su2lPnZ+9|k3D={H*=e&7X7c< zR&NC$=}8S*3g@`li*AYr8@&sAUSJ&P+{;bgOBc&$OEBKwzh}99Of^`f!ru;fdHZ-X zvzlmp)*t6H+&$C!a??|F;8{<&HZxLb@(fhqGR#FJG9=$F*i`-MUK{JV$^`$-hN1|y zO9yt7EF$2yD#-0FdhD`$D9*>$(T=94%<)V7bibVVwhwVu+pu4fP#ZjBJ=5tnKV*-5 zbZec%*Wbs=_o0`YrOtLYd(vYUo?7QQu+crU_#U3>N%~Ulxt+Dr%eaq*53ek-!m9n4 zOc7y-g*T6Hqst|I;I}pwMRru#a9I|;+kt)pi}~!p>k7mrF5vZ&>yExlg|*d9`NNu0 zYTYl-)1yQFo?}a1W^h!Yj-cuWqeA^LYXdAm6mzG@4<_OPb2_LpUdmQy=+7Z@a)&E# zkT;`od};*Ly*C2ADZ4Ba;`k_oAa?U8anG_K2xun)gbG_?DvARmNM+=u<2FOOM?I!; zN;X`y!8`%@Hpolj)T$L0#06!TVLhm&g^y(!rNx9Hjo-y$a8!QXfRU-Cau+6<8yzxv zH?JrDIAo;q5l7AKRnu>sCb);v1QS25*`^KwVu%v(K?>Y`fNf~_)kyq=J~YDXv)v7} z=X(n@{0ajp6{|(tyEB~-98-O~pozR@;~h02aLf8p?gRdzrc2%KV1xW7Lx?ANhma(U zGS(YjRRpzQZqswxfTqE<%(3bJ=h!7t#S{^LpO`f{k;GVKOiR6i7+J5B!cVH>QbCjv zlA|_9VwufJ;0^(Z9ZF1IC~H78Btcek-s{#K>&2@x*`E+P{c(sn&%1U=%9!jM+s?oa z&p!7)2@QlqJPU)URCtZL_}CCZ$vn}@ND1*R&A!F;u63SWypaJB(n#9=yqi6!OeDH* zkYfCRj@;v@1-Z=*8DgZ$;E5o)C=7M*$6$osb6B2V`!4BVH<&i1mQHx#CDNE$89o>&z5bU>^!0&CW48@Eis)2y6 z+5EE{4cvu3g$^r}^n}`M0Q$SQ1gUV|sZpxgebW1NE7_?^t0o_M1$X&=pdzY*tWxt% z?QZ`BC%%xoW%rP&?3@aOH_BfFEbQMHC zD&TGa~VE(&a=I2+0vk9!`k-S8IH>b>A7UCGJ_1I)*@zu|>Es^58$q?Tr4Xa4S7n7VXzMTW$w0 z2jiU;DoKlUzMjTk#zR|y#-{o%yp{bwW+-Y2A>mQwx}T{qE=SJhbIVJKEuM zS(Op^j;ym%P_>-sHrJjGpem6l~dqz};+n%mNFHF=uG6 zhCtO#18FA-9DsSVrEr;D;=sq2SQgdH;9yFYmne6D5exo9#X*rh>ly?SqK&8K1^=lT zVFvwDLTN`6$oEUG8UD=^*HNS_K8Eo3qZGpgZq3kng;}n5VTbB@19d}HQ`MB+et*4I zLb~NahKz4R;zar3d?eJU{UQ0}_jSm}695ErEwD5@JRzjQ$n6$1cmG>)o(eAe2-VbV zpSNs*e}7YMn|vB-8DW?nl%IHCxm-jUo~1oKL)jlcS8b#y5%r}|PeB^@d5Dra*`e>g zY*hOhh`yb@{o2IJp0OWVOb_U~w|N-Z(DJ(^&3cotukBmay=yYfmFQD$B8XVa7|x~| z*Guez={;W#6tN56LT;5lU8mLhz{WGepVxy$B_bs$2IzLi1DV9 zCvT5i9%@8b>p<(PTO#OOZ_D0M9M)93Rx-fWzDAL?8)+5Zp%Rukpp3QBEEr9CDGfnh zej$y8UWf9zYSXL2ZcuHX-l6?JXuHQKOM(SKz-4#Ywr!)!UAAr8wr$(Cx@_CFx@>Rt zo0)z4W@dNK{@9ZlHzN_qIC;;_lQ%NH(abSzd3B(dCC51(8yJI&} zyMw2l2ihCBVsyoG)3Py~B0Oj452YSbeT1mucP7bzJesLYi}HBj@l$JLD+{tPrd z!a73Koyb+{s<|aL>6&^bg&Qt8!eU!0E$WRMQ=&)hn(Wkc!elVSCmcZ+!(iS)Jo*^- ziuX&U-$I)Al67tQ@8A3i00Eq@VzGVn1J*zU`~;}}Xd&JM1ZrBYj1r0kd5kQNtrfug z#r^7KIa`A(Lv3=kQYL|J@Rg;2C}o_z8frvFuX1U`fqN_pP_H+GO~gSw(EsDsHsJkB zCz@OTNX(8{y2pqOUs)`waIyAgqcY$RSs#_j7L&m;g=dhmV^Fhabofx+eqi01d2@ya zjbjC{B_A99eMK^?Q8edv--GRW+Yi+b%5e(9@mlUi;AfJZ0@;si%r;qEbNo!oXHsw0 z7$4$@K7z2wCjFd3*jP;PX;W6Q9$eB0FutmB{FcakG*3WPB~lPFIA0{ys8SP`mHtNz zXK7zAZA>N-%j|@x(>ms2Tsv~jJt?vuT6LtyW4aXN{ zM{lmITVW|39cp20)j#@UsPjT7pVl=|Gb5tkFFrq*+a8#xTc3Sk} z^bo&}Qc`4WlkUyjRFKJ4rzl=JpO4*BpPSh8u1s+HgTs|iDOv3MWrr9dl>5EQ)5ZK( zW2?(*c#(wM<7X#%z2|7S1Y(37Z2A0`hL4I5c*-D4q}=>XivgW2qh6uu%RUbh<2tuh z8q=Q!oK9E@)k!hwuq0v<*(&?+KcRs{l@Z~K!r?q*ZB8l6BitV_)3Sgin0IEAK*o|` zkNe2wUOyQw5fZXgaqNUJ2`y#)LuvhLNn(KPwDKqw;vXw~KPVTxQOvuccv!SOLCRH> zjbp04q|;;eh$k|Ve!iPR5dmK0D5hsC`@df#&}DwUwk&Y`f|l~&k0U9-e6%4cN8T{M<< zZgf>=JTBmfmYz0ugj}zBRPTynRn;WE;KC?DE;r5-ANc8vFIp#PfG`f_XU-2O#G@Vv z+*ul|ZHr?@1jiJXX^9~u#tMPYdJ?;8Db3gmbPFy8LZJ+>k;@;k(ErXAyIVslkB;g= zf**8i`nx&VIcuafhrneI-nsxG1fd^ru7cHAKR#1-tdZDj4-px|fU9`2}&)iP^{nmB8smqJ9j!!F}hu7$9y~RdbxUtL9 z$bqkbAC=;ONqC%?H_Oc0Vm>AXkQK7PJH>42J1KOW*&rxX;#~FVScr-v)A%&~1Dj zpgk0cs<&6GBV3KwqPa=9WMl+98}!J2jg$sdGB0U}E(;jK2RSwy5Dt&Rl2kTQVK)HO z`6BZ?SCufM*zfu~``NCGGDExiS+@7Y@f2U=uungR_eoVv5JHi>HT^-lhA&cA9v_>jXh zOr(8I*RZs$vsXRoN<*a};n zvOX5386)J5Txj1XEjB@vO`U;gXDXdq1vy6-wWALS8G(p*Qi6o{J6Kz|W)G?m`|FK= zr0=N>K1Gl%o-^>}&3h<3LN_-#te5~_jF6zPGEl-FD+zvsxFvIa!j9EY&n+8;{<-B@ zE*2U>fWwsHDEv@g0!L$9>2}e+Q@$v=rLj)RGl5$wt*}{*bH?)z)?HAWe92tiV?J+l z$`#UUqPG0Q_4$F-n7UJjQRHGkjr46O&?Do3fKx$F+%9_1wIBOvXl1Cd%CKUDm1II| z&?B@K+$kD=uZ?WqXE>YeL)kx#vc~(kQhe%`V zM6%=9aZ{XB9}B~(gBP8h_z&&i`+}?(VK62{C`Fe2_I4nL7cz0c!;)qQPN9Z)Md#$AUo0yO>8&mAx36zq!AH|TO^HN= zsDihSnO>y6`#J<^uT2}K?SrQgTd@3e5IS@SC}&HFX&>cD>Z^l^&U#E!gO;GHb1|u= zT`#x3xi_(E zzWj9de$TGoOJBE+`a-L=F_Z}U$I#6Re1e&tQ0d-=_|j}>Cw-Qo@+O#bFsP(Rxa@kE zNbjW*a@<_pb_9q1uBu=pmVsspQc7addV3dZvEQ-@}?!ftsU_FH-RQPW*Ybzgwc&Gz9|c2r|(-!h?Ymj!DeO zJQ#K{fFb`nIN_YcpqQg_mt{JG1b3{!{lrxAtaedc>=Bof^N+X;4i2w0(vA2e5SVUBgNO(J>is@UT5tvM zh#c4PUuj1c)I!BkQ?J&MS!Zyb*vfMJW0Vg=EJ^` zlrDFHRyCAxWMzX<;e`cavJb{VPpH#I?vhH(xRkwbFB}8c`-Fg&CW!aFBn8JTT#vwmKWitFR!%BTJZ@X5j`3&TOMY z<5_5Wc}ZTvDE)J_`BqZlfSdD{@Dal!+fnzsb+AI3qQcVJ>}B6-Bx)#%#?wfCJcEw! zOIf)`c1){N*7pJkoCUB5x=%`H$NkRNZ!2E5bP<5Yh#Ad;=!v;-UDD zkl~QyzKPanCA%5pfnMxM<_`sR+Cagc@kl1n;ACG|MJ9Y)B1yC`kD&u*@_prg@RLZM zwrEF_u|l3m?&6a1Tr`Y(!T@bU^q55Pewtrha=|uY>5tnGU9p&sQ;d{^G0ZcA5eD|vpqf#+6*)0WDwzg}=3wY|Cm_A<-*tazF@-653F6&tzO$0{1jd!3pkB*q zfa;i3Os5aDtgh7`ts6hTT5f(yHPfg$E8@X&F_OBDUZ%)Ij%q{*o7?WJ!21oL0M5h7 z7vdIT{^+BIM9`xjFeJ;kq2dQ+6NSi{f#2;Lx~^fsw1j~riY4~%11#zgfVQ6T$7 z$M<10`gFDKg%Zso1=HU)NKJjS|AtXQK>+Rtu#o?c#h=>4FW2KS<04d?cIjZWm(osx7Q{ml808A z%WXn!=Mf{yNr(DsU?a2yrNpobGliAe{4Y$2bxPFSR{HJb5M?N@E~}qD%~YbcqQ8aJ zQRy(8sA3PmO*;UrFGQCWLAZ;N#Fo9p=#wig!n|K+KYI3D|x}TVrO9{A7Zm z8wdpqmBi{2Foep&OQP&g`jKRbynqE-6YB3?pt~<8YsSn2kPQ#;0N#TKG;;|TTbd}- zMFY@A2yg`N%R>+NOs%%RzlcVxVEv1o^PL4g^6~nnz|e5ag)uIUW_&iT+}N>j&gsMO zSg>J%A;i7CJ1Zk&(e8;9yR}%-Q-61lO2h8b`Yqb|>9XQ7{b3&Pqt=`9gl{K0ih}lc zrJ341v1aD4mfwt3ZJo8>zcyHZ_A)0@;9z+-`JYoiR>a$Fk8bje)G?1A+}K<>N~EkM z_b(t;4}4h0GlMH9<@No3^!5aLTeA}u_yoB0)`@Ob%XkTutu1G z^rDTAeF9rMg&=L&>QqiOPEn0rF9%~RVeL`hn_-02mB!d1NiM?@=ON`>CogbJx1I%T~`3rrz20yb*fb?)MQZp+`0IN z%JhNqGj?ondu&hbf-8qn}wvZ$SmZGI_}1BVf1EdHY=V zlafLbg1uU?9}jv)f(TmKLr>plBQ{h6AM|^1+-pz9nQSuLpq51XMPjMJ>z0yq6f zmei2_F(P>A4FtfbK_GhrgWmUDIvK$Q{DJ+_vXJQUVPRtS!-yv? zjPn#N-gFb2NTR6Cobj*(e(p#Wymbgr?}LIs?y8@wfI%`g_)^&y;H>krvE#7U9@-31 zivWQ!5VrL@puZE9I9ZMF;A8QoKZCzIc6xW7aG>drBOU9SAn|I#zB%!&#Y`@Q0+3?> zvR``zi}*S)1MQ>;(8p3>d~&NSoAc}M%)wx*1sd+fx1{f`moDK8r58Zu0SY~aVK54b z#|SSS_=a#S>*bSzddrb!dzi-0JEy*7%W0cl-3_7)k=?JF(} zH#xh~#863(OHf&lSyQ_H7Fx@Qx$RHGsPC>L51B@eWfEK(lWnccm!!&&Thbx*>_i>I z2SOT65wP>i#fmX>_;UntjhAbHMqUiGm8f@i1X8HoS`C?tQVKDnZ_-85Z^`W|!I3HA zfunwAivrsU1+E!HbWmvTB>#O^5Ih8l%1=86i57(SwY9UK33?zT4d8a|Y)>N{PIJ9S z&5ofBW2SV_o~h?>fLKidvW)C+0oBVAw3GhRRw_>xjAbg)u!I`#{jgFo&ZVZb;Ysqg{0_=fW^z%_2{YPsj|CMD+7C;pabcm zma6TvunEFy6)CuE~UaF4P;NGvLcd z&~tdAETE-EQ`4o;)%~1q04Jx2ER+j!Te-nz$D#qS3Iq?>A|kgF%XkXBzTXJ_z>=)$ zoyGL5>RsrICQ}13Uh=}_vmo0h9{5!!oxRgjn?+&skG9K}J!|^a$Tf%(y8j$?D-OlaJ#!M;y@t5*O3$Mr`#( zmM?`S7oV|sg?0jD1QUg4(>_FaQ&C)t0C*dY@IjXf!!gs*V1dsVhWE3C036Lqd2VYm z7k^u6dusXt`}mcA=RYTZiK>*wySt(D{48_a0*Q#hgZCQhk+40Wm}k-0Mp#kkv8wCt zCm*j;ws6csIe&`^X}3KX$8p#|r2~#3Fnc}&yS|urA-pZh zC)q;($j^{7s1+Ar&#X_+!2ybfnVAPBTt=)$dyp8KrFslP7_A?x#UNINexLypPXo42 zEgd5e4hg`9oi!otH4fXLd=UBQNQxK>pfi(}aX??g z@p!^eV8BS8T`X|Zs0^X)n6P?r5&mNU1TsDbBubqEWUadxQ@yr7O4Y%V%KQ@$JY79L zlY_Ts$i|d5YNH3ff>u)6L@q?EIpcjOFnN2pGtJdx{i?V$%jU_lBQICiXx2r)#i|O2 z?=mIj@%Kt$^Y2E-7pd8J;l=GR?bVG)%q#b1+NVYF3#KFHqXUpc-_GmkaZ;Ny@|rgM zr#4lKH{k>a2d^dH^hM4j*NGrO(Urj31aTAZipgdu0s=}~)Dp+M$$Y5O(@!vIvuW%R z!;6U@Y4wwkl#c!p>;iGpweDo4tB{LXNQoCPW%WX0j$zlxwCHl+gq!yiXQc9TQiU+z zgQH>_7UcTUua@tMFn z3~^00&wY^kHRJEH6M)7-Vpo>94 zilV`&n$r7Hce#dk_2Ex0QzEa4@;Ti)SWDBS>z&c#!+;V_MnRGA{8_7reiPD2wrC|< zoLjnNJc%tcp%I%2!`RKd2$FxwhNvT9&(owazv220Fp7(rayl0 z2(oObK^tLlEY|RXtwNfyHSk*B*pXOT&lok~8#$b*TX@6Jm?6E_1ZuE}H8GJ9cFNF$ zJr;ZRxUbyf)h~Ab0XykPtcK?@B%|k)u=#Eq1L?=Uac_yZ5Ax&2_cYElUwju{;F^jmE#D6b zPPBxA1cbtSGV@dhWkD<<{KX()=zD~8hx7pC6!{0EbJ8usepu)ulZ5Lshi;aJcDA4! zu}%ZI4x~e{Be5JHpyW+{v&ro1_9+bbgq7$S9(*~ zicL#Ek0|T^7&7MAYKJqOAh0p>Q-F|GN_Dq!1MO*>5|}6e5X>GpeJ4MHo_o~B=T~yX zc7AVz`{bE`LSs#7>-Wq5Ub1KVA=5jat2G~t?H_>53Za!0%N-Z5$;}#8Ef#Cl*xUln z8Y1dfq6ozbTY2O)`6MTB!kqB0N*F@wDXvdE0(+vOe1ga3PS=Fk`iNKOkNA_OOxkdM zz!yEx#6V&)YY8_8?zcc70-S=Oy@upCV}bU9ZULZzPKcxIoN-9Q637FmW24OKL*o0R zpla>T!N|RM{B`fUiu68&MZPyiMFkZBf?+lubILFw1Qf85TC_~r6heN6zNBr5ypRNo zM(8*jXdZ$(2mW^svk_yae$~1kieAAI48#F4+LEB{3~77OIo5xUtv94P4&=j+yl^H1 zjMKl?q|G7%O58kSC_DgE*xst+ovdczMgSPE)isFK=20cuH7B*darJT9Ohf0XjS;{*f&qDGi@2;rSV1L zNE&_j@@R+Z^i4_QAxy~qi_vF<4r7VMXPM^_fSGX%u0s#t9YBMD;*BNK=tahmf8tX; zi*%a;`L4?}Zig*K4|U@4n3|ZBW5ix5iOMtuF((v^2$3HCh~e&M|IH-^o}V2L#5B1+ zqYoITRnvADxfBh38AI;S#dk3nli&Y5dN1aU>BCsHbAIjW=z|W4+|4&?^2|KA&ybk= zYgxp_*Sfq~)1{s^B)vQ!8~6*f9@O1M=55YkSf#(YS=%%X*I_QX>%*FxmL{}(+0?#5rs2`-5m|TzS_;CWK1U@SO+dbr9rfPt z@fZX=?nVezPU!va7-UvIiCOdDbJ+PZvsvv#T!1moK>TXfldDKgls!>$KNh=h0v;B| zAQ(0NAXJ_kH&h-sw}@rCz$tL|yO+f_@gENRLYn;%gy=&*VDK3i8n_d##vo^@y;Ph; z5=rcty`*(eciv|bLBO-U(D7OO*}LT4;+{ccc4V}vMdU%xVU%9Wb3pADc9PnC5ymkP z=GTT&OOM-U1fW+~5_g|;#JuxPVckw~3m!}!7k9Q5fYo{sK}`vIe=m5#68MPvKeZBf zjn0th$*u?+e5)dH4T7^4<{t8G-Z((j81@ zN9f1Ay8@b!+Nl6(rXit)E{}v1c;f=e1=I~R5i~vxo@S#&A9@QUdv;I3J9D%frX?gm z^13GIG@fQZZ>6ZEu%!?s(fbAhSz8=Wq@Ay}#^*B$vE`g^;N9jpVSmQgBXPFT2j)Q* zws*OEnn;+4nxxw{H!U_054mHw-MVIbO+MJN&Lf#8A6^g0l%zg~MFK@>gJ8ae!4{jN z;$I%6l&d{*unYq8L7)0%2T4i^XkByqFCb5n8Y{3Q2>UnR-ONn%_|c!P^0t4v~D zfMHapQD37}&nKp<5Ni}UErPm|nlUM_E^CzoK=?1!rKg$CLYHi~MLc1!K7b=rVtV;pUw@0k>e zoJm;&bB=RK!KtP@!~R6&{y;zE3!x2RP7u-yd)5{w0-hC3yOevt{pAVVtPMRmJu_RT z?sJ1&+N{|=4JoBU-RV_vcgA8W9gB}aU3-RGi`8bc+K_i6isRQ%d8KF$?v=;VQ+Px2 z%Jb@P#Ok^qO+30PD`b6J8=r35Ot9k72H4x|IL@&4))y*=eGV8m-E~G^c$Q3>&F?K% zaGF}0qOH+ywQX)6F*Xc7Hvchw)mVaLlh~oo-~(>|S%$D%)dhD_@Ch^nm-1==qgVkTXm@J*K++>5Nwzy@I3W(mObWA@ z01&lc<~x$i(7XuFPUE|EhUUwAhT+?l`lx^>bk)B*$L~b5L(ZaZLIIc(J@hVgT??lw zaPJ)Hq}mTFxeROt=X?c>DZq6BX(0LCsiAA78aR=VdFUiy7VnJRcknF`NpHm&b_U&m zF4n%U&YsW{!lFl3Qq(sQ2?6*7h|`BuvrbsWavbHX8y`Ra4Al3s#}2qGz!%|6%a;Ki ziGS&bx*~LHD90#&1O(2tP9PB};j4dTsO``R)Ez0p5-Cv5KHvv`Hw3p1EPCj9%uuFb zq*JN_+zD*g2aIVXLenx%%L4Gf&3ImLgt7F%FoTXDA`2pP*CrhJ;dyAu5B{7f07SNB z#nM1WWEC+$O9BzUdtPb#utbOc&XxH0%3rYTnC~}3Ji}Op-oek9&6@zs{+~y{+63(> zYiPA_0|Vgsc91g|1zf84fIQOxUOnM(&%iuM5GsN`KsE3p0y1}i+weFc4+9k;0HnI^ z%tJzvqv#6w~F5$d&5%ge&Kqh3A*$_Te zm+;141ElYZ$>JY|XCH^_|9wjiI3N-|;SWDmL3~qLKuiP7L1K931)%&-cnEjdQ~XeQ zeA5gN^dJUIM=(Sp`XOCu>S9rSPT2XI84aLb!oJxaNKj9hR0u0LP&`~Dz1FY5-PAz9 zV;Th5&kb;)4+0=rVIf59*qFeZU|G0Vb7I`LxYmm}d@f*m3`Y?}r9=Lj=1ivNazKbHej|2GM{sq~Qi z=!!C9@~AHyLd;P(MU zs-n5u?Uez117RV`-*N?Z7*4A(Pjc08{ewDe{NIIYGw%43!KyoT#AlnFHBL9usdVF) zESdPVu8g1pzs%Acv+Z3Y^L!aBxcjOj&E&IR6gu^PstK}b%1n6ine4@NZ_-|Y7){sq+F0CXpoXTyY*GuzgIBz-(R*zFJ{jAI!AI}tri;*_L7msICod+8k z@?Ww%k6h+zmcwdF9()RBvQQ#|1dT9$x%qKRkif)Iq1YD*kt7^*)1JZc@)Orr6TQ)1|x`uE6< zK1q0`(V(Nj#ej2l`F{u@6jqDr^LdQf7$Rf8>v6F!E_s20U_rMC1 zvD=2AUuJ&4D8~5_E)8)8xEw)s!Lf~Wg-Ip_Lj);+E7ETF-Zk3_8|1Fl@^2K&k$*ZI z>O$4Z7LhALG8GBe!%&nb5KSt1&gEh!{o18NL_tIAIBW`8{{fpMrj#FRLPZjuiHN`` zhwnchm?`@+JQlt!*7BDwT^2dP10=;~T$ji7QyzD+Y_AC~F*)Ql<7v&w)rm+uyZEh%WG>*RruSy%%@(B#9k_Z)z5!b1BN4ACfa z1%2uw26#cOMkLp2p#}M7X{11EE8$SXKo?ZCnz)JOwb7D0MFy*nrh&a>?hpf7L=}I& z_0Vi1|0I}7x!@1Fp=L&aj^>J0Q70yRu%Kr#!@YL<9!bsWo>_`s?W28pLy6+W*t|uO z!EcAX^hr%vLRE=8?9n*Emzl(9{{U_%{CPbhA%%?r4Rty^Y3q2f>F6tHJvY}zMP!e1{y$L!a z<4-Zw0T?_=Vt0QUmgW^mt^-ekFh?4bO>zG}&%}_FD%o)o=(^1P?qXG}P?Hgj9wKYg zU8cAK^!JkPs5}|jz#hmq>8`-StcCDbH<0n!5ly9yYmKk%MhGCy0AKB1Q_7AK2T++* zM3g#b3EbuF`Rls6Kk~)oE61T)Grhr>jRpx+AyrE7QVd6+@WKtt4OS52OZ3KpqA8I~L4Xn5*3?>LgPNP%5-1IE^`}$j0RbimB)jkeq&!CVPG8F{FRi<>XA0 zB@naKv8*d7to|N9O;|~85;$xuI}Eu+Z_^~fRxKTiqcSQ-Tx!qYJ@0>Q@8^SKIL}^@ z()k11q1_Yc6J`k+jY7VgE^k+-udsxEaV_N}A`WG*%a{kmBvJ{ee=F(6FgL;N=55?z z!1*=7z_p~jpQ?0xD_KUboSYR?Og>8hyb4v%Rkove%ZzWJ_Hjc?$eyeNq;YISY0aPW2O+H6<{sY zf6#ZX7qvab6v}J3UDNc+=EapU5B&C9T*tlMW92nSj#Wa&677K({!pE=+tM0`et3H1 z%DrH|p%Or4PHXcBzD`e+mc#31U2C0@ROPpHHEj-ORe7`1af*e^t95Ah(xl#N?fD;Q z!jskAWr0HvO1y(tuZyFX{3)x7se${K{rY4&ikX^?HTUbX>$hD}2d3x_O=r0CPg|FT zeBTq*@#IPblI-`+HW2m4=~lv9E&ZbDl3_FdD8HmFUcZ` zyM?@ojfqKA{_GcMQ5Irs24YMXF(z$XeXG8kvlXN9lJ}VB;utPiM=j%% z>yy;SvwOa>Po1Oe2Lq+#;Tl@BPPh2kPD`t#SJ6S_&c%St?cd^+Rv6|h=(dB8Ajj_m zbAVjQsH<-}6}Ys&3%IcuA61;HSI?CcT2^IjnAhX#hfRvt^Q7kIhNP)np0@(LwH)*a z9%^}~QaO2z)*`&-8HqP5CX;Jao4C3AkK^rjN{JBqR3lO*A+6{h)p07|rWd=QsW)lo1A*4#?O^2Np8Do_-*?a0lhTZeFg8&8Zh^4idK@kXt5dMiUGR`;{4K7n+R3>eBJr;#~CqR6sv zG}n*UF9&VuqdxeWHM-PET(!CIzE?eAQ36-pTIZdx<_ytdv0;eSK=-*XLZb>BobE9j zotv?W<0Hi5%2207nwQy2ut@uKC`VN0H|M_R4f|9u?=Yjz53E`EGgYHQ#`vpJZbJi% z1N(T}*orbTTj-pS_h*>aQ z*wgpqYjG)QXe_s94`giV%2FKi&JMTmW5?si9xAu{RSsZTt-o8y)tKwHvdbc5Uh_?Y z+bfx`cio1(OLgkPQ|kF%BJp$~fq_ z8IRR^cP2RW8E?Z&v4n3uegnB18zGP5k~%nS?d+2~YQl1UPrF~}-NhVH9ytmcr?b~* z8Gx+y^Cem(rISEFuXulwzWxVmZ}}uwP#>tI-H5xt;a&WV6V@ zCyC^TE+Icu-#d?sdz0?GRX^X3eEkSQWa>7#KqkmVrq#i#NuYNri38D}ZzNA-=1XZ2 z7g7YH2HzwKT(DHClCQ-AIKpe&VxUA=Vc~5x7r8_Sq|aY^Y`pu|TsN^C&Vb!By*pmc z3w~@z)m{)BkCR5_E#JfX#A>9dta+F`ua?OiV_xn~-fle&7kY#z)+#|yF}G;eta((7 zz6hOu6liQr%Y1#h4hdY%CpSw8vjKIjZ58MiT|`PaIgt__b8B?zU_K-nY#*96zyL?5 z{u&nk!>h(L=;LbT-uL5ii>F(=#iUvLhRVmvoQtf1I$)gI{39F+K?)+LPC`m6xhuNe zE=ZYXV`_BSLfdXqP9F27aNXWOL#O=sesV)FV#8$%k{26mq1EmvszZ&}A?HE6@poIZ z>jA_U^w^A*GabHw7c``~z}tOjL-61{(Wed@&#M9s4Bh)4A#lXahEHm{D;9aQIKZKQ3NLwT7kfh#L7d+qDg&fkO6 znAwuG(k_tQ+^(At-{a)B!65>l6<6XS8&0^~VIn=AfA(-FqBhOSKZ-5@gQtY}4T_&n zQ6$6SvMin~C@-rpd3?NfC~Vr0so2kVD@SkO**+imX0@0jMcQ9gcDw5Ou zacZC46grJ3gg2ql&RHm@$#`Mi8_!p{KjBrBO_X$(SG`6b4o@+bsF$!K3oA!{yvjwr zwf3Vq&;&mv(|!*nLMy*+mF4UckRQkEeHhPmEZgk^vRuP`C7-r#yRqQ4x6z-_?1NtRhhkM4x+Gg%(`wm`^MQb1L+gF-uz*9xJ82U)i|Nl{yxM*Zox_`H z@q*FNb9Wj=85A-`{8w_Cd93!aOO%IYs4e!H{x9-i~gC9Ol-;Z)Cywz9R`hXjt?l+p061a>T zMyuFO5b!(Q&vH^P1_is(3T+z>JLkuiec}-33G~+d?x&_eC)n}#8fJTi306xc?D`r? zTW5>cITbayDZYzS)pPHMRMqSL^(~HF!L3Z1laCAqC7V4fPb3!!x26}`>E&o8R=Ly6 zMW&n-xb_mh93KV(-RuW+Kg<2C(7D!dz_LJ_5qs-9Uy1zUT~Pnrrw(2p=Yy{4Pf78I z83%#zqeAuhTd(7#@G49uI%-ZPZ(j#_*Gl|rkPr7B(|kAMN+Hc&>VU|mR6_A)&sQDS z(Z|`KgAfg^#lw)f|1a?iWoR|*2^qT3e`Ur z>|90$*TlKa+Pu#N%##`C%1@p)=y5YLU3sFYl@@31hFN z)2L}@6b%;THku>rufuT?VJ-76(qdH@9EYc!XGkU$>365T6=fms?o-qsoqvwpumG#P zJ3M49Ki~?iHCrF9Usx+}A~v_T)Es;Wjyr|LZ$GMrEiL5tkm2YSG^#phz2rRAr8L(w zCz2|t$g!IJ&u(_f?FLa2aciHy9xtCyDQ*jp*ksmmDil=5r@Z8z`lECZEu9l>2ZEnJ z1424f|Lk8*x)XnvQQ_)fI}}XK)((yA)#komevkjLnH zdM0xRWM7V5Rs2yfsHo{;vSD-;WN`F?i^1p`^)_4jQcp3Ik1*L?jlK1?KBQBr@6?C3 zCYix;zG``SdgnNK7X{7xWau+LZhc9R_50-H_3|^LJlz`O>s?}Qbr_4ya$}!?mrZr{ zQA+9Nsv82i`(5AXak#;1_#Q4eP}6Im+XvBOTWopDa99GHPXePwyMB8n!#41nVPpA@e}`|MjG6H}u&{jZ|AyRH zz8ST@nA71`2H3! z{j2Gg<>ra3)c%yC;Nj%tqI4zBnRO{`V)N5vTXoJ@5at)YAF&uQzppR894eq6F@A0@ zP3}%BorCDGktH@xKK>q~ilU;diHKZVYhLNZ$;3%(?B$!Hlkd*?fs^r;=N8|Ij{J5x zXGwCy#}tRsDKS4lPq1!ob-DL@Yg=$v7(jP7LQkE$rjpZ-!r2bM>~6f6UzjRvb=h>R z(L*0ztvZa=-oFM#DRPQ;Z(5<*q)kito~Gey`XWx(08X@!&Vk)hq`C-!__z9=m&%lm z*=Rn@9|!>oz(G#tmTimgFf z+aY7VJhvuDaCQI?u40aT8EtmQ+BC*A+HaOzy9Z>}*HNoduV*5Z0F)!O>$|G&KJkmZX6I1gwuo>+bAJH@B0!@}XTLn;e~S3xAOSo_3p1%W z+6q+T#9a07^Q25@G9NeC;8_Bk^fSgeyHIP_Gs^=~(eqF(JV%coITCw1J$U+_GyHHw zC^Z_t?Jk3$^>GO1ezmZLGUw>+?{Lw{uYP*q?YXZYJ zIKaR>E{5#DW*dj^N~DSR(Xv_4QSnPle-L?dCxUm*|F%t-(abnjB zRtSyr2W~zdVcRuQ{*~YPi3ed`PB<2A9b=?{Hz129pykY*Ey8ucejAT$f3|Nr(^T8; zJ?|Ur#%s++j2p^a8j@_^a~{I7Lh5lI3vutofYAv*PBe(*!7$29nf)Nmz#I-hRD1jz{ePIvn}T!A0Y;C& z!Gqh4xQg+U`XZe!q(X$nUDa{f5+vY5o`S*670g0!jkv_ZjEdns$5O>JWhvksoZ?mPf=Z=i=1U>F`8&Oa7%>+0mnqGDV)P#RQB<&M2#F6|d?LYcI z7(2%(U7oeQ5BJ!%ZQFZn+qP}n)*jooZQIr!+nN8#dy<^2BrBgKUU41|OtXlQE zM#n~b_<0tIuyO%8K#TE91c~YqG6;P`NTa7_qq2T2#G&;&9XgqXdjZm5(gj4uG3ouP zN70C9(pNcjOe?ZyofK&nz;b|{6qpWnkDt-QZ6w-YnGSs&1+4{eXVAjt_ywhp;1EA7 zxr=ycpceJlFJ`pFjzTM>Q|bUwEkFxWGJZl&{SZkFb|OA?0P+wrno6I<0i`kmJD6%0 z^3XypP^-Y6rc&5N(DcyoG=SEKtx~8u@Nx7JvnGg&2yd_9;MbwZYS<=-DnZS>8;cgs zE4)W8SQ`c_QH{T4{7S#`=tUe}@1q^h-LF=_HK?vpnp%`LlvmzOa5h5QfXuiJJuC;V z&8SWc9|R7do>@1j&4^Cr18Y01yB~M6J3hP6VXi&eLv76KkdF8tL$mk+JGu|VSIOva z&>q1ri34vt-9w&MJfG-~reUyMfx|#dyns-`>;8cotV7#fghL{D!4T#vKb&~i8}kSG zL)$%uL&F>PJNp-$JJ(U6S|k_3_g#oXq#NQp@zvnXU@t6}0h>d`8)OGK?r1N}C&K4` zrudd!jOdyEhS8H<_rv=e&%^6@-+=FsZ;@^QI{fE8-owZrcQX<$cl6jXov`1)qH&_k-EesLe6ueEUg#X)czq+Iv3ulqfZpOi;YC7NMDPPZ{)+l<(?k%?G7p&XeD$7} z4ApVhwxTXRQ($M^Y6KtMMDDR?=$j+7`0v@t@|eDal%yGOb`&j~&DKjT8vd12Ibh#w zbbV#&n#j}TnCif;I%rLEHHuCNvvH0ULsGQ)^X@|uA2Pw$^)me&Rh#8u3T;zfFnW>WsGT|wz zVuiqI{h0!S(5Ehcv=)e{qNZoI!(g)Gr(jfqvHGLUqT$ES?S@KSVGzxRlc&Rwe#c|| z)dqb2^(Wf!C+F$M<&(2--ti4|aLU(o-Eb%0mik%+f_{xvjh?+l|!- z*OQY_xN=6KQ)BA>Q2k~|CNOfLe0}~kHuO)b{+3gzK*80y=^Touoj39+RW5cP;7{ zk%y|%jyc8ypL^L)sAqgB1AB5^SU7m057k!mmN_G}r9D?weovY^WX8nh2O8A}--!To{j8VY-pwDE^GZ zKyF+(nPeFG*fAmXDT|mN&0dsHt}jmDKDA2X5}|rkz7fKfN+e1YY2Xs$jTQF4G@Uwh zGReL%uGT3am-p!5x49T>HgZ`@CiUu%teNN9u~Qa`U6uoNYncBU?1>7BiuUEyqC6&; z;})=)lJ9MCTnO=g2iLjm9RvHdSlF=Hebtiot2nu8Mqn{hE)zFJ+{J0rHpa%rdv=x) z9+QkoOIh|hms|BSFzY!$E^rZ%vbAJ`6A&_83_3YyQL+FHTZePgNHmx7x9?_f zPtskAA$yCGiVC=53Bmg|iGGnj{d{V9o95(AfXQY#mt9vvAz~&Ypi^k@>%ZOioUQM@xnOQ8Fhj)z3rm?r#B%osidsM+whW6F+pi{ z2T?z`hS>gBV=XK#?OUZIy4@sXaQ8?3dZfICL61nnfc*9a?AQDs_+13?^(4{tvGC9_ z0AxKB^gw#U9{#JjU->Rp>t5>2m=4~E*0$*1uk-N>D=QS4PKLKH)w^au|Vj`?Ek%|w2^;*qqU=$IY$!j_5)^pfSm>9FB(oGi_8Om zbIW0#qk%CoHt=V&os`-(&yJD=?w6Na4rgf)MGI$j zct{(YAsAg09SB3}62mt_&l(JDP`C9l8cC#9%N6x)Z5*&jn~IkM zQ2RsWXi9o2`#@_%`R(OWxmCIP8i^?a)a~WR{<;3Z^dWNw8WkB`bN$uXn@VM*lWYy+7*$V- z1XaKU=yKkS^999v+&cJ&>6Z|FhopG88uAULAB{Pt9Wf3zA_bfqT z71u9lrXiEq;Cl+mH3D0ew@Zyr4~s9{EId^_Oz(u+4PLlID-8wB%_RlxDAyV*L8gzw ze>VR@FKI1cD`;$pW2AJg16h!=C3AHZA18J=leq$BBC}G9Pr#-C`NZO>=~D;^C9VX5 zvJ{oAg&!>z+OX}qI90I{TeXs?jQ|f7r_5y~C=Mxd)Sf+-S2;TB!kg^Llv*k%I_&^A zWW@^7?~c5gDH}fhiK>&9H*A*~&f@G^3Uzgty7*&7KybO(Qn^aAbZJarfJf*d!^~?` zW|g0<%}NGj_* zQ>FqBgE3mR4qIFHZqob=ttM{$u*watB3FB-r3)Z(V9ag7FHL@00dB@%EsFmeuMhk$ zGo{PRsB)qU$e8luLdGAt+LP|`yfgU-x#TL8DJ}*2>N5y9mjMlOXG*25`%+K23f3i2 z3V}!mUIdWSc>@d@{*9b1QGO^SnGl4uEm7eCWE$vX7=gOI1=;;AQ9f}yLt(I$p4~9I zx7~Z@XSAGHJI`&{ZfWUFK1068J4uu0{nXKHI-Wbk$9>ek&q+gys|_0pmmLquKksO* zoAa3`-R_z(p6|_$TWovv){@QdBG4P_T=QEUMZ=fdh^vCuXOFF9Pt&JGSAR+Retw(e z#`S0PAz`UP9bv)XR&cJ^CqZ2!72-2u+O<83#M~1=-hUT?yHIlRaGfoWaN(BleypB+ zof^hs#hhT<^2n@w`h)CLdNv$LztwE9KBvYWwS5OnWXHz4!baQSd5m26Ja@%kJwK%_ zO@2PX6y$4j--XCfczDO|@`fSY0Y3Zp0=_lz++KCHa(5Lke=g#-c*>fVy|-IhY^~T- zJL@)Z3~V*D&3m)ZW^#?R+3v*cc3TXHJr~2MUqxfBZ>rjqI@XMkwCX>k<-@q`YhO%W zIcqmvT}^Aa)?Q?l=T}cdKVxp5X=z?wsYwP{&XiG)TVXA!Y%FgsuQxYFD;m{o*i1Ow zXRYAir5>4>)od6{JH(ErG<*z4Npa9@r6o|3y+`5JWF4|{B58-TzJLTyUD2n}s03D~ zJ$MAl)14FZj6iv0A)na~7pfl8rb9YtW1|#ym`Q{29@lwg!%1a zle8W&_DQEg+K?k`I=>PdRR^z!M8pN}ws#XIUDsS9={b*bz*i2U@86BTsc{{K53kkRUMo3P%Wxx?jWDrv4q|&Mq_DB z?TXTpJ!bUn+xE8s64|5gLbzl8}-iqjO zKg*kh`CtWjHuU-J*HysAE~T2kbt@EWpYshAv^(~;pWz_T=b+Txm>Fe!dHxkKEhWFU zEM4CNcLardP=8pn5Bd;JoouKEvk>)%4`vDid>p!F04M3{0uJAWbSE+|H~M; z18=$jYNAa4-s9^EkOA2Sh0Y8kwX`B~PfjquuTCy^D2Rq#_D+47uWhxM7wWodmMjh= zp6_m#^Sk471DLN{JjEC9&97p{R9-Q>lgf2(AOW&V2J)d!$e0nT{eqDT1J#aKL zjz4(put%?ej^^ezu($6Jmklp=d9mMDQg2!ZT9#z$HYg4T^qi`S^xt-W_JAz*3O8Wk7t)p65wg=>Y z3anHb0>|AQ*XPfs6k~M1`;5QScuE{E`|UPR=Whma8Snc%#qK<`h1k6|viGjoc3^kf zA;pM;%EA^Djpd+?Z@xuK?}R=u=G#2gE$PEv!E7S@5V|+b`=UmZ?1&+%dZTmfbw*eldPbYiupzU0o5S zUcLjTw`i|~eOe}+yv`LkLR=Sh%>~y=&dYi&Nlc77Q+^i4^SoT#JiNc_ zzOoc2mtME7mbH@f5A|83^s9{6Z*}S&xeMg+Jp3+`F*4IYCebdFiyub2W$_~F$uf1% zE~GlZTdC^;D z_4&!6vCjIN_fVukH}@SEyjqVW6FJvQi$l40NkMtj{Z9Cf&>dxm!c`-6aLk8J+@Y;K zv1{2Vm1!+gK0_=1h-an)$TlfHUH%w0LZVLdbIDBjdTznP+l0P>CDEZW&((zZF+lb9 z*ey_J_yUE%tdvRaSD<<1D6thFRFYxc37CeI#h*p$&rdfflM)iXn+U#)HtBvbzDNwk zOvJ`oT>3I=P7=OY`e7nsb3zW{D`khd_A8pB170&*^%gsUm(xez zH|izf<;|6y%LlGX2sIsU7hyO{8atPptXCt74T`z!UxepQTg-+<<|4Y~hWqIzCcF&+ z`soo9b?#--F~u+*YrCwI^wg~MgpNd_7pGX^>vKuZCuLu9_ti&DLwHp}^9dUX;t}`Z zHLDZvV!SLx-}2XvgI`&x?Y-|>FAXOi>7pKeN@7bW+KcI5J`fX z!Yzk+-crR$R4Ee5PIA~KT(TK`lX0kw_s)?;6M2bkS(;@RNm&g}RAnsCRiQTF`=I#3 zg(0QdQ+i3MoU@MZt3%GfnQ2I&VY|O~PeM)t7oEGP?RF}%62?>*89hkiST|ko5Xs@abhNuRyj{rdy&@#Gdu6=V{gGWa;{n0*lgVbt@0aQ9^%;>0P)ocyY|HI5S zfISQ1)l;ZG^1#;4MdbY=e%^cl8H~Cn$QZbl30uLcgJ9MKpRLLXf>p6Z7-)@Kh zI8kQQ-1M&%`#BvjrYdLh?!(4@puhTeb-oy<)^^+thYjv$R3@_Diq|Ki(jltPII|NQ zHtjEe=7diMaW+MzyRPrWPqN>StM7sfPN`(H5Y&#fJM!`k{yu>^!7Y1w9D18zHUMR7 zg0FyN66irh)fW94uLSkKZ7$~*THdTYQdb~6g$Wi978l2IgsN<70~Ia;MQIZr5;jgx zf7&FAY+38Wiur?CQ~7u4-a2U2~Q_xVsiFuR>0pjsxveJHhriA{I)+T6~Az- z_2fxDm@8O2sY?y^hlVpsz{`5iN1k-bTLxeBSqb%gb$7``IpO5>=%ev%(^D9zbVuW5 z;TT#=NbGUB3(=*~bfBQvnSuC0{7a4{2`RTP&byvqv*SC&{>`60@zS|2f;o{%Q}W1U z96z?(X*U^|uAld!Wmx#bv~I^eo^flWB+tf+bL1oc{Pw82I^Hy$PNld!ZF1- ztd^oCy|kKf3i^Opuc1cas+O{$(qW8hN}XiL^H*jmT%5K*zd&ccBR7*@aT)cZnhX$^;)6ZhV)F0O;x(eTikE*_8n9H6*nN2Jo%P$ft;Ikq2 zGtc|1x74>98}8bVyQ?wK&#f_Y$2o}Tc-ge@$s=}NHn1r|>G0dt5><9G4pR;;^S)Iy z4n*dI-=gx^8;=qa5tdx5iV8-~UxveHCDf)elUea=>EdLSCoaa&Q59caUT=fVxwLH@ zU#P6=RTKUG2um?U=VJNFw9f6(Cx#(qgP_kb7${jRRq?&i4Y<{#NtFdmOdA0+K3g4i zUYB8;zao?7UaY)yNp^wYYI~hXk@}WXG~xg z_d|9YZy^p6(de@UL(Q8KnKZq5>7)S(uqYyv^QkF{QXsPi6_ys2EHH)?EP^RsjQA-Q z4ayVG^KEk3Bl{TN`u{Vr@?>3oRDSN_YC}?p?<*WFZC<}t;RuAhW>N06@ z&GwGX0$tQj&4BrifLN)#?rls@s?fG?e{U>OidXZLjO#ox1E zxav|{VmDl$b%cBF4O!05kBWY3^V(|uERwyfXvex+{L@Y0kfc6RIXp*&a{})krOu!+ z^*F6!TGBl*8Oa8QGr0Ey<)VsMxmd4mSP6sKSBQV|p!qcy&u?2>noJe$P&bs2Ub~&U zRIX7rB3)FJ(FS&o%0|cYCv(A}T|eP4Nf5MCzQ#k=n2PV*#)EEx`l9=4%cmJS=u>yP}}o) zF+X)myuMPeqN-ng9!(2zuRs$TSI@Mx67 zer4p=-a#uMi~sONK~Xp(Z;KmzK~c z>~pCzWXA9M4lf&0E>TmRE?Vo2aD}&E>#~`iBDC5ot38urj7l!N!-1#WeksbFaklIe zKDrtPUjjB$Be110Iwt2~XE)XNXnxi=g*%#KBS%1)q=m`gV~cyGdj}>my(Bnyh{(KveykX%AsID$E8H&DELzXW|V(NE`&(&R1QDW8I+&_U6(^HVHZbbL45&w4ViyoU8(^UUa zR(|b2=o)O)+dfC=&O+-dn?jo5TJ7%aD2CVk9j@Z55*B*N6-mRAQijS|P3J()F3pTQ zvcXuD-uyc3vO#$OsVS-@+Bpi@FVe3Dp>MRN*R)O(AuP|DF{zR`HkmegDE@@Yr6 z5WoieO|vQGUAD!8OA9CSU}t=Yoz=1}llBrlXwyKJ6jQ&no?+Ek)nA>WnO(3nx0j2< znJwhfo{j6-;N9&Vp53sKy@>N$8iC*`^T1d+hRHw_z3fhW_>WB)er-=5a=Juzn^Q-la3k^TEXHq>SFWa8y@1Ad;>-Xi? z*5}Febfy!j*C`Gp;5>QmMeNHVr+q!}fPVG~27qc%P^n)?>~4PmD?Q*T3(z4uU4J1B zS(r0(!g4qStabM;$)1$1Qo^oIVS^hds!5>V0IynAqp>A%MO5qufXCoo{k|^{4#@2a z6Df$_!?LDo`<`&%6=oF(oC7(O=ZcR9r=LXPMB#*T5aEvI z&c?Qn1$YNA<@6pT1RlniqFMxUjw*b8d znE*`%sR4!d2N>S5RmH-h0t?l7YJO^NZfebjh}qC@#p#Sj7cT`Llr%!S3VPp*cjMFv zTCk(*rvl$OH>O|7w&hp}w>1UNN3OLTvwlxyrL_{laWfo6S;?UIaDuzvm2GAgg7RNX zj2|_K$J(H0rPJTi3li3CHe^kulfGaof&S}Y6x!4&%vdZyf9v%0m&2@CI|`|3CG;^y z8W+(D*JArPH0fE=ZY=CH^T7r!MIASro6=foy;7zT*w6}g>IL930dT!7ZPfk1jd*$@kZhUls8v!K~bFbYiy@oE>3=V75AR5?`fh`Q_;!1>9@k$2HJQGqZ-@n26Ctx;wBsieh!W~;>>XxTBN@P$i*IaYF*{1S)z zpwXc*69)h%;)YoD>sCbyX=r;Wb)Z#0hR1hME8Ce-%4XjyyMS51} z5sbtM0}&kgdIJP$N5-z4blnTnwoiA3UKwzSLW){RZ`4*8rY;m#nG3qAI`L*EFQ05( zs~y)*l4Am!Z5AA;MgbEVA}HZmOfeR@Yo=v*yubc_iDH(1z&%nNrn}q4XYaMqWCXth z2vPvJ_X4#^V=*#4*)*FP8Jp0PAzDmi1H3zW-|sH1*#Pmc0T|*cfgTBj3A7Fr3ZM#P zNOCCMjQUMj6N)cb+<7W>Hy7A>256taDn}^G2*|>=4xbj0_2C?&ta|txtU`rfnb_MJ z7kUP#hi^048guVL8FOtm345gjzgBFCkMM!N>_IP#DHHGbQf1Zlqkq*+|4&OXIj6%e z!h}yuXmpSXP={7}&S==u!mQ0l?TbgeZ;)$^N_9u?s>Gi?9DOT23q2kiw@oWwgjWJb zT}ZMnm|NwbkWiO%o)Z*@(6vQzcG7ID3&0=6?OljoCP5}LQ6py z6IdX`e>nwy|R7?TNgea;`E^4e_k2AX2J{meBe?Q(FH)?x)>AwK5Yjzzn#j0HaqG@ zY0-Op)gT$44IrW#8#l4im|=XZpjZnbF&0p z**U3*9#v7pIG%Z_xkEhuWI{40X6RcvTO644f)OWXNaMVnGc$aot-J#BI1CSQ(FFpk zsHy@CIr~&>)LpJKGurvE;0rU{B#D(~LIV>T?@-Gh@>1AEP zIUb5H*`G@-3XL2Tp|@h9z#LJQ$kyV^ruELu>fbQJnir3jRVy_#W2T%JX1%5v@{L3! zB|R~}9MZaxF9nun=I4w)jS@`GqnQ+Kv(i1@m>wV4W-DxSRd@JpKVX~=dJvyUgFtY} zQcIJA$E{#+^OP!*Eb2t6mE89AUtitoxye)&!^kEejn56z7n!t+QzB3dv~K#oe2g((wgu1>^XcBi$M zw49c>8<+M6F=vG#a0yf_jn4DN2|M|qkYdg(*0xTq_WiwJB8(cP-TOL}*gu2C7!L%(h9W(iD2t zVLj$XAxGQfCj@E~jKc|aDVDF1PpOwJC>0NSwMb4Oxg(j&31MiHQ6@+j>t(8`bsyse z+AyOjM<*%@3kMr=9dCI0I^E4Bl*h4~)RHyNg zLn8#f4(7Sbov&&mL4ko#kkB*7TPy-@;+3iAy45rHKE-GPwk%khe_CqcV$$kCEh6*@59kiOIW zlBFnptt)mY#}zjxPgjuB;rEWDhPxT{8B5UWz0@hdrql&-I5pJT&HBlCdri3+?x8@q5K$HkH=!-JjD1VetN?KN! zjSNa4FR`M^drR;$eg3q#H`0cvEe*>cqEJ?a_@hv+1uD^q8b^e`^hmNI9(QUqR!Y{U z!`qxmJySw%Iy(;9Ip!Rs`tW9zAO+4maW`k1-LEV*fPf1_mj9f2C|6JOo=US##36;b*TO@Pi>e zVf*qIHr>b#1OmYsvM)tK8CppJ{OgL53B&DH4%BGs%IX8&P{>UC*>HOgP&cSe^@@Joojhe zj$cSGCK8Y1Crn0GecU^TCVX_GMBDE2%cO6Z5pcOpc6m+>R-bKIKZS}Wo zEK5>a>cH8S|6w zR-I|YgwBfkaJkz1>A=y;GC)4?u=HK{TI^nQ!|)iCtT-)uREAQ!srX9Hqo>9a@dBk0 z@8cfQK*p#>6eXwd&bG151pOc=Rowx!B>Me*mGQKax!kA(DP5(J?%u_d)L@awhqFb8BK*R z>~MCw!mHIBijgOuE+*~Q-}Ao4zNd4YLQvBh)_Y#o)7g$+2~(J5tDtT>C_ zMb=^wg=scq9XWd{^>FLfz5P~hZBGNEH^J^rqsAEy+e`c;r)FN<5oPvc@;#^~1r!CL zC+*$XNWDRg_ah?qYOnwO81#*_)w({SrKG%wG82Fi4q{gZVDT%yfPdEmma-{XB+br0r#rW2~Mwd?V*3XCsuZcCak zhbjV#SMO*5L00CQaHf{LbH!lE56AUvhZyJFcp(qmiRj&aC}v6c@%Z`tIFr3e zi4(=wlT?oRRwZ&ly&|?IWaJBlQVw?y5)n6A22#_v58gy=jx-l#Z_n zE9l)hYX{N6*@M{g1MdW^YRpZcvYFN%op0@0v|{ox{501eGz!K1G5VqWXvtFHfKDmL zvw^Eqxs@vV{b()8jA;L>X5xH8^n=|dO&rHj$glIPyXAoS_;bZns(H)J^<%rGnDg&z zVyVv>&r|2lkiVgMa42~Pq^bZ`%nlKE!g0`2jusk-DX?p25+6x zNZX~hEqHJ*JYq{}LHEtkYj!U~Ya5DJ>=lqRyq#?=f9DpQcJ!55o?lOvPI(Gmz*O57 z#^1=$!y?y_p)gcsTVa?EB9@~qIu`w_1XFa}n7q%PvOPsgenE+DyQpG&W1d(%P8PRT zx?K9VJMy*iTJa8Bc6~Y@Whc6lmMdCLB3Fl^&TQ%FH;8h)J1pPv1l}!U`>eVyS3T-f zj3kFShzJ?8M9O`!{CIAb+*mqZJ}=t)FsgIjN#wPx?-U=zP56u)2K_A^SYD=j<_bRy zzoo+cTXf=CPLs2)O=%ZZUd{?b^Zk}aN>2)yJ45Klo7i|dfH(EZn1^!S)IM?~wn1>< zkm403;2T?W0M|Q`1CQ9<4M_YD#{Xn{b@w*1YG|Nq*!DcwT5Ja0n&hmM^7{VglaxwEDPP~{3dbjpwYTe({`yaJn6l1h zH@Pmu)o`E>(=i?H0M=QCUJA>&=j|E9tkJ15(f}!JIIQ#V9zHVGzoRVnjY5j{ebo0OxN7*lNubSSfaOK%`hI?JdyR~7!d>9lS*^JJT}R;?o>Jc;lYZ_CO7SqUP>QZ0wPv_Dnh6S| z>O9C(o1M(rj@IkNdJ~GanX1^^A3_P)MF|u&qe7{xaBgWmdAXZD6Mi{lytee4Luvax zCq6^k$|i>^4KjFK_Rby`Q(M&|6L{EP+wWFe%LNH|pR(y|m$coeow-Bxc6HjH!7x}+ z3ME}?t*WREy=&%sr4%83V9~~g1||4s>2@UI%-;0-Z1)>pNGK!*OqadaxV``bEK&l)+V4V8yjbVZPem4ApJYF5`MkVHgsh*dV&wq0AiNw&zmjy%@yq%eQ^9_53W~ zFMlZp({Gp^D_}ot0lY8v_0@Oi4K|F;$(dYzrhOh}I*Y2g`pe|e<+L*BdQ$u+_i+mX zjqFL}JFB(L)Ow&)JDv8*TZY!s68qRRd$xh)CLo%i>hF{kK5rG3L0XEc2i)_1&Cc7SXx>O6TxjrR*OG1Efcwq2EwP(VNyp}B zJiV9W)5r*6oD$xfq;}yb-yy|$uV6INSmJl zzHm^1ssg{VOi%J@WP{j}sywge;?5i#RfUeE7WQEZwlf}dikK6ExZof%e*SzuJRN_I zn7}k+#{FSCIIV1T!gM;6C1hs&YIpyfPW>QLrK#rHuoCl7aTqvTc2Q}XL&?m|Aq-|& zRRyR!CZd;8TKSA7*Z}iCe6Of3J_kNLE6ij?rDUG%5e5G2p0N+&7VKF>&J|G=k^)b8 zQwRUH=&x40AKT7k3h|6oe$HX*!moeKKnD+nKa;*vuJ--BFSE@m$Nug&b$SsU4O;4z zvk_!O2x!f*`eR#~^sVE?l$xA(xR!#+tdg~TuG4r8#Iya3nM$#gN2-6>MnV7?NYgy;WZu)1x47L#m6{gvOC1? zw6i|?5{ZOgLZsX1ZCOkF^jcnHcU~>&oSiLj5 zt%lM(ci&6cFZT0JQ`D3%ss)4B<2MG9FVBOP%Wd0SSGZ8@FLy073d?ESuV}Z0cw==y z-O7;q3%r^&?lG537t@XkEFs(tCF&jK!xJ!AI-YS>_3ipc%!b18LeYr*+`s#U47gyh zY+$CWUIDEW*``FnrIZf12B+@VFMrJ*u_0XR- zR0NSSgOE`QfCL;UpI#oEF#Sy|GV`WmH7qjxXwbPQ)ouUSs2EnftklHYLu&hti8&QD z{Jq?#VO-h_3FC|6Y-=_h6~NRIQ@Vp%E$i#xugb_`dJs{k&K7678aTaDZ1RwJ;w9^;9?BQ%%!%Vi)snhx6Y>KN z`rxg%&sb0OxsFsk;*zP#T0?O62(eVlCx5vSc~5=zDB)=zvXV4+e{+#r4BJhd`Bd>W>@>FuuwDdDJ+ZDSBv7P2Pflzo z-nOhf2Nd`Q9hp?L_&?A>{sAcbg9*_57dqoV!4Urw6Y`(u|No9ye*hl;#(&WN3;ywM z-9ONe|GxhZ@Z+Doe_$W~zWSeA*8eNy;|KKdzd}BKAR_+&KmK>f$3Hdy?}!hEf7Qjp z!SI9rVELcm3&wwH{x>o~$=%KvpHA4#NmS8E-^us~a3PIPCu8eit#1WMXQ+?Q@DC%w z*v9Ce@<05L|4*Tiz<&z=iTd9){y!iM_)H9J%>MypSkhLvC1OMLVcY$ljjig<&t!uD z0X!Z(T%9sVaC60Dbe~(> z`s?7(UE2Nm^e|<>!12x4RrAItAyVFzg#mQ?S2JD+sUtX5vxs;;(yl_zP?W4Gbi`T`&#mo80PbFDdK1~}NTgp{g zW=4WemZhSBZcyHU<+=#hb8&v&_c?MtZkyivIB+|M_c#(?dM#?GGb3WC?2AM3EU+BQ zR={9+e*XEf?9EptVyO7d-sRU)QMRGz?S>sqQDI9b;;UlHhll5Vefr_ywHVlfoFvyU zys;2XU2)R?aFCB>5M0W<5|m7!=>0v>an8&{w>^y(`6}&W;gvRnMp7Jdm_V)!AsmF5 zZ4y2&l-}o_UU%5vgMu}2{y-G9Pj~I(q03V8owcc>{P^JVF|aYmG!m|?6em*1PBj2w z&A}GLbf!~ex%0X7^k>J*@{8fKquuG4qr;;!hZmdm4+XDMyA8|CiDIFvdCvAxG7Jp? zjG|YCXEI6DWhNpHFLZRQQpJ@wC*HR0Q`O6jHSctkJK*bv{~(q?6gG&s{641_0I>j! zz6U%pjd(!_f5H?kF)QXoyFc1_K9FKX!e~~4L-wocM^}T_n%|K8Nxl}JLw@!$f__HG z+W=jUI?iD}K$HFKU6}3yD#e>x;bsxM6hZ;#)=k-;sNv@B?kD?yu)j82 zqRMnxx^8wkX4+GFa5WXzTbY&LFnn(?`8~1)1HWj+(n zw=RH2*&JPdPMQ6c`UZ57+JfCH!uNW_d$HIj9ckKmaA4rEk{}LOARri&_?gHPF!qBc zcgGx^`2Zc&8uI2cH~V~_QyZb>$a#DGJ7wC#(nTj0&44Dm0r-ahOA#0#SPc@7JVXH) zped0R zO?{!_@`?~LcKL5N!Z=Wiyx3Dqk z8~{hYUcBY6Y(O7;*(NUI1#!=#FD14!Z(j6@V5*wRnTB(wE=|wuDV+mg<=r_uftMKV z@<2H&NG#5B`k64L-cHvM)c&>uXyWEZ`25J+Y8gnxCW*)^6tR#or&RHIV@uKweo_QU zrUAg=N_Y$-A1TAF%wQq01(FR3sy?b%9Go8*7{_~oD|!D) zf@?P8Ns#3$_a3RQc%3@e40505n2T`675r)c8e<|xWcz@7m4G7+qnNaOlo_;V*+f7f z#R!zp$hoR|Egpw9CO+#7>%rqk8xAwtS`X4wfkguaJ%=kb$4Wc8jxhT>ht9~gEsMMG-~#1_7BE}7I1 z1^==69mxXc83<6J>e9Y zxt``hrB5oA$*ReB$(UJd{T;(sH6s`q96%ktX`Qp+QX>fkXZmzJl};-+E`O;t5?^ z-q2gysjBvpGWDK3Xy0`uBeZ4b#dY(0DxDFrG8u^y2|`ea%1wC-L9rO96`MKk;QCDp zy*EZTZ0q#piG+aKGp_JIf$X+Txx33)05R+#DmqW{!nl^x6O$(;v0~6@9~CUO-h1DM->ja+#rT}FAtD_uhy!4)aC64sa*_ogFXzU@}lx!$~5bJ zNbJRIJL69^f3`t#nu=akLzwoYtBo*hH!|%>Xg0U3oV0pQ*(y)V$@t;N!B85pK;BF*>^p|xzcfyoAq)jN@ zP5(Tdbk7*g{<kpY5w?5zG$iK z{&dvEvN)>S2o(4J`=(2v&bgOCPvyIw@yAU%MZz=Py4(y6Y^Me;tr0$FRSHPxwL!Z_ zTq^XBz?|RD=O+gJZFt=le2B|4C~4km*(%B(S!mYVOkLzz{BSipvv>3%XxeeTE;dqj z?Jes#MYNphxUween_n?T);ZA8Xt4e5YBp|j3pOm#DhE$e|FS^tj*SNL$M)Gslmg!+ zo6p7B&ik5y&wgD{`N5sBD6?SIKXr(+n^fGaD4q!@j*h;vGHVaR4AKif-Yr&K^gC>l zN_$Z~{QCSVo*^~p_dWiDVw8f_`Ka2qAnJg^$y@8yhzuVcy;@sWg@GR@7xYhU@l*}l zj@?;O7T2A5^FVoT7)h>iFMwH5!)!K1%j8IJIJp`+HZca?!o3vbQtZ7f7bV(>Pr^?L ziohg8+hSy>^Bc%bb|+eS99q(sr}}Mz5KZO{X|+k5QScuui(4-LQdN)|RsMW>ffRT& zy21PYi}JlNIAyLbUC%@Nayv?(b&bqO^jjCfeZ`!A)uh_<-T05HB87eHw|bXzsTjVu zW|~92s(D+%B9_5Uw5r*n9@j6|@L91_4vDdeUg>?+A)twrgC|Rgq=gr&&}T$V*r&3d z@u++A0k$FYK5F#)_dz_jiSRehD_y{io)M2NK)QW>w%VWyXMhA5*`RjUqqEmj2y-~$ zN)5um`y0cthYVZ`*0_88qJmU(dOkvD&wf~5k=x%TZTa}a0i}}RTX(ovJY)jT7T?mG zzUA*}F_Mh;1HmCk4G{dlf}l|-4HU!=@{@5g)1eMsbvD04T{+KGC*`m}e{mA^6# z1ZwwM6dcJ>QU2P;Q3L+A9|{3S?4B8gKynnCzph1V?PxZ4Gi@|S-ndi$-2oZ{=V&f} zW0?OtgF^NR2*Q&=dU_nkV?Y#s=liNVgoIEaJBCn>h|z-R7XsOds{fi6!zeyv%D;bt Q7D5Aw0Vyh)*_wm?0k`8%sQ>@~ literal 0 HcmV?d00001 diff --git a/tests/test_common.py b/tests/test_common.py index b32dc6b..0289655 100644 --- a/tests/test_common.py +++ b/tests/test_common.py @@ -81,7 +81,7 @@ def test_stream_columns(): filename = os.path.join(testdir, "mexican_towns.pdf") tables = camelot.read_pdf( - filename, flavor="stream", columns=["67,180,230,425,475"], row_close_tol=10) + filename, flavor="stream", columns=["67,180,230,425,475"], row_tol=10) assert df.equals(tables[0].df) @@ -102,6 +102,22 @@ def test_stream_flag_size(): assert df.equals(tables[0].df) +def test_stream_strip_text(): + df = pd.DataFrame(data_stream_strip_text) + + filename = os.path.join(testdir, "detect_vertical_false.pdf") + tables = camelot.read_pdf(filename, flavor="stream", strip_text="\n") + assert df.equals(tables[0].df) + + +def test_stream_edge_tol(): + df = pd.DataFrame(data_stream_edge_tol) + + filename = os.path.join(testdir, "edge_tolerance.pdf") + tables = camelot.read_pdf(filename, flavor="stream", edge_tol=500) + assert df.equals(tables[0].df) + + def test_stream_layout_kwargs(): df = pd.DataFrame(data_stream_layout_kwargs) From be1f0a2884c890ff81978a352de772b0745e6abd Mon Sep 17 00:00:00 2001 From: Vinayak Mehta Date: Fri, 21 Dec 2018 16:32:44 +0530 Subject: [PATCH 6/6] Update advanced docs --- docs/_static/png/edge_tol_1.png | Bin 0 -> 20450 bytes docs/_static/png/edge_tol_2.png | Bin 0 -> 20252 bytes docs/user/advanced.rst | 81 +++++++++++++++++- .../{edge_tolerance.pdf => edge_tol.pdf} | Bin tests/test_common.py | 2 +- 5 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 docs/_static/png/edge_tol_1.png create mode 100644 docs/_static/png/edge_tol_2.png rename tests/files/{edge_tolerance.pdf => edge_tol.pdf} (100%) diff --git a/docs/_static/png/edge_tol_1.png b/docs/_static/png/edge_tol_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f7f7a67a00a98649fc067dbf3fadfca5a3ec55c7 GIT binary patch literal 20450 zcmeHv2UJw&_U};>jj?cVj9tWp78@u;+MB=ZHiug zMb&rf_nPT;tLCLoK7MPIb>_a-e!WBHcVE|&@9(^N%6s8az z|2;)G4gZ~&|6hgS)!A z>E`UI05vR`2s$Qoy+41vGS9yHX0a_+k40)spCtBb6Yq|0!Z7r6j6Y4+ifniKgyWer zx0wo9*zJ~*RR0BK39_b1Wj`2QuI3< z$y!LA!ST)YrHdav@6`>3{ki2fLw9bz*f6oEb>wbin%bw>lPcjgTap>NkKFZ^Unq`F zEHcl!+hzXD9G;+HAUI_hF$9#}^y?6 zK3Q#$+N1F)%n@PL4lMMmLAY2DeNixXR|dM|^QZfTVM5*Y6)v0{m@*h6eYU z_`y_?y;bpr36s24(E^Ho#})WN*$~atrOd|t<07El=G&Kk2H#=X?h4=j?d<^!W z+}s@;$Y^uouJ5&NE`^k*{slb*3SJUPkYijsb zCFV^FcbcJrhH>Qpj8)4XbpMkhLH$2p_L?1g|FSYNQUTA%qFFCD%-EGGl*U5SI(i-)YUQVWrNH#XNu^3;U2-ZJYqu$1m!<~Gsre3{Y-f^n zW$>wuw1s(Iv;=R4O;3rnDpuxFCDi;zYler1@vOAZsPFg@U6Vw#5 zD{vJPyDM@ZpXD%X(R|m`)R5gGw`;`LCMe0e6DIo`qMLDfqebn3Ls=@m!|y)yJgnTl zwK)wM(vpPb)e>)qRc(2E&enINwczpa)!o^zTO6sB72Ex7&Y2aq>E$r0Cnvqhc7cJa zk?IpilKekhdFeJa}>&1xKih>fq{X){C|nE2{~%~uRA0t^SD8))8(yu3VZYy+p$0RKSEbx- z(*tE6t#GiUY@Y+%b~P20y3K1<(dbtA_SOI?S-Y}M5y8?Y((Ul&{x$UbPl082L(O*k zPWpGc>}~(z$Vxa@t0{QpKJ3X~rg*qSzQG3KbO`(td;2XCbvXW?f_z(q!`~lRmPmL& zh3%oqvf1m5om?~G`)1%R1r*C61YMuk4@tH?vTqac4YpgAyBmm}$4;&vVo0wL*|h`< zJ$wvKS$(jA%BKr@OV}0CB_!82vN5$xy5-S`%JhXxs=>-}ab~jtUUG5q=}L5+*OuW; zb-^EoaxSrIgU4)g9qG@4%3(I0FxZt({<21<^QIuSI(84Q%Z-+MsNM-o+f)+TS_KbjkE(_T^M;iQiX; zVY^eHhj9EmoBtcDbIHj|&bfd%3pZ>XnVWdx;#8R6N2x~rF6B>|9$fcoGw9q!(@aiF z6Uxp-mT=M%R$j_#bnf(#At;)taV8knYxFibf*nRcf3;bv?Zi(LisP!WXaq%9Y?ork zHljgap9;+24ZMBBo!krGJOQp?m-@%v+YMzzKTRH$sBHr2`fw0Q*Vu--J) z1v7dXi!H-eH`LV7q6M^Pa$T$7pIR}0vd5^UFP$<+;mz^t^UKkf#j=?v(Tp1r_Q3xR zN5eEEf6cH;sG*w@GEH_5_{N}19OVkJrP%!=#?b=2+$M>6q7U-ZY$jobL!)Lq1k)ZZ zd5#7$kGp?JB-E)CO}^3P_>pG(t_?+s;gXQ8jf;=3Qeh=Vi>mqds&#Se$c)*}ney17 z>=GF;iE)XEHEWdGud_)4o-q{xNh1Wu!tw>M8EP`D=LZu*rdzmGrsZT060eO5rggq_ zGDY@OJF`xWU8Aiz5!LR)IK^cuRm2hK8cN7E+Ux`4Sv-_oeJ4^g9`wKLOlOeC!d#9( z6*V!WED3kH|05e-54W-xM%fOqZ;_qY7<(#s{N**A7>=kewlH>?(B@Xy$09ATq9sWD zN>ZX;!ht?r>$wx1e5Mks`{@PlplL?YF9BO7>9sz0w;Qq?wYg+9+}DT-(Zsm-br^ zoPBLJ(ugzVd0iCGY&3P(9+=usSv5)NoyJ#{Bb8AVOpUUuU zR~vmS&JOD0=?7HMXm-KsaS0a1{NcQ4MOQMH`_-qxOR`MfxSRf6z&1G>8XC5ghw#Yu zZI9flsS5*CDf|JC&O`}7f=>7D-P=%zK3Gkqo9=bzyjW+jCm=jEDR5U8uXAR@jP+=< zg-30zQdjA0u&?g{i$`ZwMmYWxw2NoDJAs-9VwWNEb6~~jl3uLt1)J60_Vvxkv;mebbxvZU3>@k((zXkG(Z^+4h~-3PtIGO zd$}G@4&hDr4Wv@*U^%8TD@Db`=(Dr4J6V)C6>g(|ek;M^7Qcc&VMsKCJ1X0Q_}bj< z@NU%Orcvk8f&qcn$S!=4WujfexndCfHFfrdG+Dy6Ig?fbcr&6$;7bRAa_K(TqIP%;k>-i=m;Q!PH=!aFl%n8sd zpKHpw2ddGX(?Ta6VEb39O|&w~54bY2YezduI8l+ocOwizFNEs+J_4zJ@!|z-tGW<_ zsQA;*pY7tb&&;ZLKG_?JZ5a}fa!A=qoQ?d#rC9PA*C7C9=nw(}^x^Nm46;9=pNp!W z^jmr7>gXq{EiypQIyV1!Iw$sQ zNBrvLtLO>);A9UjH!S^LB%FLj=rvjW_|#?+*PwoOe&G$iT`KH+&6EXE^G^Ce&uYx` zYmgFj{88d$-}lkc_zYve&(q(!NRIe+>`ZTRmo2ON#~c4*+3dQ?d+UFWW@K4YExnIV z#hpC0hzxFz^ROaeO&u9SHAF8tu47}pKa~T zT88Z#L_@Rr$-yBhWCCY)Qge_R3?oV2hBPP~e|N=yW0v8U-|^NJgx-TZ?db&{>Ck9! zP*Vvmyvaa(1!<1Q_?GFiTAp(y$2jJm5Go+cx+~w&pkrmX9c=EA?BF+fAHDg;wu-fK zrna}@Vk=CH7jZ-11}zNpytH+-{)k~Sn*SEVj(<8S1)7B8KY@!)w`sJyP3dZ%CdQlW zb}lq64=E{|RK+#T5A7f*UWyCgx*Dgfgf)F|!q#U6Oabk!QLcxzSARWis5!?#ruhEc z(XsCk6Jf@k{y6yqBi1Y8GWOThR9k24`W4JTW?0eV=<*BEi~{pj(PmONzxg(`vDDQJ zO$K2dT@16i@%Yof0M@FlQRnrNavziq8sx%8@nrt*@R7+6i@~NQ;@57^R9lkbj4;Do z&onH6wZ|nx#a(gQlG^JMl}(Jt)s|p7w_&R8*C%QCNGB_x1u#)N-7+L;Q7Coc+mOxr zP514#$86Jk5S*F*!EY&c;|1(QEcxm33xl|?I@q$58(HGd)3(Ia+#%mtc{9@3n6D4) z16or!en&KZS9$Mg) zUQ(xFK!F{&eQ^+B>#---dXShMRFEf3ptZ;xGLtINy6|*I(9CGI2Pm!wx6o50Sm14>MuyLikxsi858UIwwB{cwAG;`P z_x#eDfJ(K_DA$~_10;?TDO!RHc;Nb}5?_1p_XEbBt{?z0!+#??f1*y4H;l|)Cf^d8 zPu_(LVsChOI66^!FAi7@&8aklJ_40znO($;m!Ng{by0v+>D$^hdpNs%ZZLSn)w;T{ zVt%BZB$#i>cQ!;wpl_Z{B6ZG>`mxH`As)c1m`)8q^IDQ<#x?~2ru6dygUAFXC?LCJ zw0JVGOoDcP*@}tYXafiEldrW|dC?>Xyj5E&NF=hIU|}A?)I5ZQ+O7Z9F!&Y( zPOXxxCY3^|y}8%I%CiFSy=&*K)yt)GTnotVj2G(APLt=V9a!>lpo2KJxM^E%DrqkD zY-gzohrIRI?e&SCy6W`}aTWefWjEJYADZ-Lr>1V>&4Z z&5hmO2|YZ_U6`q$0!Aj)y?twx{rJOGgx3SQ&#&0P@GI$nr8sI}AdSD5n#y@C9@%?E zItj3OId2q@!}pIox~u|-(A52_7T6L%$V$W>r3nIVhJbL|#B5I_tB}MiBp}9QuSbCH zfwS+fZ*_nCl~PwQp$;eD1K-n2VFx=x`PzcBwqVxo(9W zH_L)%97?M^`atMIucB^8P3H*aassL?I>`VF1+S~ErgKY~ia9i;^6~J}VS8C!a&Z4a zv8vVr*F4x)HMO<&tU3z!U8Uxu#{x4)N=y*DOi8KJ-xl3_w1~x=8_J=N6n0rLb^;<7 zl3D=D_$-{DbjTvhM02hol6gmLzMtSuXgIX7PZo%?%c5)0;>IIC1dh<9T(si<8U&dR zy%^SelYeeG=C6rV$mb(1h6pYpmtNlW*@KTp_##Vh)3UgX0`;J11?R*inAJ~cZl7G+ zw@HCxSSNe9qQd)3;Y!;bgo2xn9%QL-fJv*4FLvP%v+M^IRO0f@eNvNk5WHtlZkvxx zzZok1hgLT)GDG+70g5IcysU3kNDT36IMn2L#z&|Q{jR$Be5AdFz|GV(U|P!gjq)LUa`-z2GKtPxhTV9EY}+L#2WE>jQ1g9ydZlphyTAl%uyH z2&!y`c3|owgPhn&UTOtN)GqtgfP?0_3ROjWm{F7OV2O|YtPwP*k4dBLHS<==r4WTP z76DL?x4djuj{YK?@Pa*uDL-GcJaw8jL?jJ-Kaw_zFvq##xLCGn>LUFD5{ZsKWq)5) z4(TsRy@$w$7>_P@*NC%()tXI$%YnrgqKpF>ioH&G5`QdzW@OJZ5ipa6bzF@f@$PLPbyw_3^3n-ZwBST@Dw@A0yv%W z)u}EHlj_R!T|{XhDv|#H z$DihTl%w;_@g=85_P33sFakvX8EM%GsTIk%c%A7H-L<0T#lc>3DgwS;aA}g|jSS?} zxJ0%LNOZWrVKZWXzh4KvXFa`Yw?;p;8JI9}J^gj{-7g?i74N4Jxj2YdpJUxGk!z0D zM~FaM z*rlI4^qX_&FDnY9MR1G*LFubMd6Iszg7{uT3`<^u=I(j@0IVIeTQI^ZX5H!+3~SIH zxi!67YV*2vX6mL!3p$!j}L&4EpeghUQ;b^OFc3ghuT{q*Vu+o~oZwb0FQnAGvf2>*7+n zP*8Ou+po;^T#L=V*PUfSgr}cw>@DTgRf9*2LK%|0slc+~)`Hzbj2t?UD1_?0g}rI1 zN$IMZ(6*5dtcJp~gCZI?Q1q*6H&|`SY7YQZ!Q5)=x{ZLSg6D^<={=FSBmh*t=jKI- zV;4|!V1^Nv;vmL`x-gl_0ro6)5JA{b9q2v4G=M=k@a9ixa%l$46xoo04->!_^`U6Z zLbu4m4u&N`4_ROoOc6E(kt=chL_to-Uhw$~fgYRbHO>h%7KU~Zrb1@Pfk-6wo3)MH zZQ3$do%C1ptc&A_-%}QPuw&m%k9H&=qz5pH`(%aYgU5UbG$1Y_Pe@h8T6zKXua8J7 z6hHYGrHTipY_EGB#5~&ld%^=I8?*_)9j#GxO^yDWAHWaJJ!dPYsQC8z`jif zWQy#XjbC)z@P)4AtuSvc$WhyuyFF<5As;xvKuul?{hsl7h|lQbo(PDfoF0D&0rK@D z3^s1jlj{;Ya|F8Mza12zjh(2n=MDq)@$Y4T=LrKOd-m)eKw}KVjY!zq+9Hg~WU=Js z<@4++?r29k0D8icA@0TMZ@43!B?Nm2pAElz__ESAQsY1`SS~EIDFyCuxY^a3*Q!48 zTAa(P5b$1B#+X{g0Wa!4&dQ@}s)?wNJ^7&7;jUC>CEM88h$lm|2%Q}8;fnNz!XkD# zPj3JIsFAip9P44_N0xKsg9%lr|vdh&Nc({Cx5KGM9S zX?kzn5f_(Q_z^Z)m0MH(i3^Hm02g$nb&(7D4PN@Q^vS`ui}@biZ}ZJpF-CRvR@52z zeC(#W4x6%w!psQ}KJD?j4DPoNM7trFeK0~)?dFv$S6Cgsf(2mc#5AdiF!$u5BD>(= zmC5So2&6fx>=#x?^Al;33>%E%Ni>_~ZO0m{pf1%I&z{T7qL_ed(4$Srza8 z%hgO)w9n9BwYRF2baYx8pc;4CFtJ()aRQr3*W-53EW_{FY3^rTIjjQSMH*Vt)yH#U z!8*xpdQ0hj38axbLt+y>8@Vj=?|nLd96H2wQIO1worI3ybzq$*JM(7yDW)+|{Px8EABvkhPZ zDcNQ19~Lj*kjQay(XmRWk&l320Lm%ys#T=f9P=YL3ZwZn*`%%saFiI~HBC-)K{ju~ zz@0m}6DhP!w}}-k>#Q$4bt0aKZOG-TdOY(HCn&}*Y`>*o`?nU+O8(LC_v+&%l(0w! z<-;UUm@JI$$o0|G)SUas*&PCT$F)LlnAbx)mnB)spT=)C_pObpz2IEhX=3tlm=SH4M%~7Zo)H&2zaIujE(D zT9?^AS!G6~&};YZ+1iJEhllE%Rb`GE{4poJ1zDv{VGFmGVd`RN{BZmWT!w!7d#FGN zg{H?NN$NSleY=61h=N@V90Lm>tq*fgZLWi}&-`JP%xlQri0vrxLxxz_>JDSb9n%6<{! zRkuk-hi>n4KJo3G%)w<*CiW?NzE*G&w^uN`tCjZY?nZmv#O|NpeHBm98l4d#g05>x@7#bHCJhxcA~Gkv7>_mh(Htaj$X%>Po^XWPtYJ>#7*ci@w2d)c(D#|U=R}7))aH2 zdP+lTTb7r~0NY^siptKyXFh36Thla&RU0GRW@ai#YqTvmKhG!7B1CCd*V9sBiDQqK zVDU})E(PXp-hag~ZQHs;6(MJY=tRfFbB9qx6Me={KxFCwi{fW>z^(O$u1t{xERa!l z=|t7pu5t~4Rk~#L$@+uBNG~uz@@{T!+TL~V-@o_v^>uJ^`bJb#^zuldy>71m_`7Ll zE$z_8kjD>~DzsjiEArjbqxq%_a$*c$exZeFRr}9$_;LF0L^?n=+Q7(2EkpzJNP>ku zr;78NS?vV6UXf)TL`%sM2?yM&AUtYa0$EoOB(5GC^Ryyz`<^GcdV4E8fBt-(70712 z&K@wc3T41!rW6(`iHnP?jN~`wx_1=sG0*?T0+;~{3kwH&lE%-1(g2R!zJ1pvHgDQ= z%acPY4JjS*Y|b=`Mmb2@r-o+bvGk^ged3SK26$BTiHDkakEzbrF0}s`sCv9|4ff?V zxSLbps*N%=K!VCEDBP$NBdKSYWL1G15;>&81}~)@a1h zLc}8{jhSK)RX^(I=SRLQo{_wBN0#W^-prF>aw#ee%R zu6&Yzd)-vt(D$NB*s*O%pbGO7m#tW92a|Sfqih{bnwsdC6mYM(xvPt+lS1z7?3BQJ zcz8T=Yr6@)M$=rTb%iD@r&+#J!wm+C8XCStysO>_3i+=$wT$vAO4JCNwuAgCE|9)) zsZ^pW$ac~AtF44eQ9nBnv4Q^n*Lw@wQQMY4{^H5ivK8vrHtelJ02t*2EL*m$2(b1W z2E*@Y*O*`*gz$9?RwQXaXQh?lrT#7CqQ!udrHjJus%mONKM=)&sq-yVNj!LMVs>+r z17;7;96GG6od;>N{C;g*`n(`oUv;N}CfClroXeb?o@Tx^G^kBC&X_={fmM~DTlKj+ zRi28{9Sw|j*;boNX021WAKSlZs( z*9L=XbR^9ldk(j3z`LsVn%5fk)W=&iT#jRj&!1X??K4&fX9H8-b>YG~kFf|`Z*g22 z+{qm7bP?U@gi!5*hrI&^jE*m_FTP`+BM%52pGqvghc5jBKD<3{YWk+LvwxS((KH2L zy=Dtj#=D1+GXaD6S~2|;x#_tbmz&$Ku1#Wz!^&&r#W(cB9j@Nb+6z9*-Bicn`TqMh zp=k`E9>KX6B~H#rU${^?qds-_w@L)H@`}ZEdbI|t&qNT`M?qQHHxIYDgiC5T6rQyr zBG#*D%KfKw?z`1%rNqVAZlq%xwZ{k=+eVPOiINNz_BuI~4@O^0G#s}q*<8bNFzk*qZ!D>!vur5^r?3-_8{LLu<)OVK1=c&_xuE9n<==6aF8XN!}bT z1GLKbV^zDuvqMGhWbEDhWB9r49pF0Sx@xZ!UEB{`zFn0z9w!T6X*%A0re4d4pI)Hr#=WF9&pBfa&2 zL6>5)y&2Hrm9q9O@Zie zx2i~Ujp8y);RonRa>TBf-Z#3@QBj9YC*BJOvDNu#_6ht3nP9f6$Hk$PUtL)bS7xFs zucFl-bn<*K<*^`bYkO8L;!Kd?chHl>5_B}pF@5Q;Qz2k+{9dND1u<)<{#PApA zJNXEVdwSZ=JHH_&SQ&;lkczJ6=9|Os zqRzH>*;Nh>>Qwd3HLt+xk0POXn_nPlpdOV-Do;40#Yr&jC2Op@FqLDlX^zJJPz zH(hMbTI?GcT_Ew_Hgwy#l6a)9^1G>(wfj1|er9m{``?v2H1APV(iM$%X12asgSNwz zTIcH{obbP5$w_}!^6uZs&c18p;=R5y+i1(yWu?@EIUJM6?(r#1hcsKcTFbV_fuvUl zdNwV=2AvPzfr!O7WG|JL2VZeJ*b($`N4kDsU9uW96 ze(Ym&D_ZxlvKb)2hC5GDZNV`54v+WnR)2zBJq%NFOgl!$YaoU8`t`U9G400WOv$&0 zY()bp05w`Zw($zJ@%~xQOkCi7hfVUBmWCOMoklEQ5y=iukBYj|_2b3E%9BV!az9E) zSb->;{`R2a^IOn!{Nj@T;Vm1g3d`2o7TGnfoAQvLCGO)Be(G9}`TOFtH{%mhB50-7 zZZTEwG8z;`JuWY(A8^|ev;@mf7w*mEpITeV(n&`G0|$fJVQMY2+56u+#Z==-Bspc} z>GJj2)edPzW`nnC-n(QNkuR>QoSvF7a4Wmq>|H9#=e*0`$;AmA&+@pe=+4fxG$?2g zE-C24TVW9Zxh5qxo_hN(u-kuUYy#`mRFunNkB*wOb=%0vO>|BhF*@&a=Q`L@?kK!u zA^}5J*0&1iD;sf`y9r6?nDlbku%IJJJRH7!_T|hY-IO$I)n&=s*IHe!FiSGsw;pIh zTHzAR{0f|%9IyC~wg}b6k1I?fwx_3mz$WE0(-o&jam$wj;!*xo=Z7 zV<4;Dezd&^@k@<3qV%9(>*mdPYinzL-27ysZ>uvhpAdsp`Pm@l1PzcVp=xKU9bCYD zrBoi}*BRir>+;h2+<0!$rPh7}ox`{yVRwehE>5(=)XYZp+Xd#uaVK`T{r=r}3@%py3xCxq~l4zEV~ z`reDbW7R=OHLGbaBIKRxdBukeEBvKPm%LtWc0|AfTp`zJ35ZmC5Kt{c<2^ly!|P6f zvG1$eorCTu@6lN*K|@S1O4$m42yJ6?^YnR^==SaUP!|Agy=iDT_l{`sNaET?gU)G^ zzyr!6v~dnsQ@#=TG27_X%>o^B$D_3;IR2uw${w|H+LsBQAyX&l=e7^9KgUATK5T}C z)7`vfiw?OaPF@V06q0PNyuaKpt84%_02-H4$^r$9DBj~#>=!LzFO>#4Y&YgzSkgDEYqR$|8tz(yw9PfktsLA^s2 zq;Lkd(+eDG;{oP3TRBpEn$O{+VV&Ma!;90(4AY#tXamhSM{39cz?2SdB*3XK`N;D# z=&t|@+S|{MF*n>^#F=TWY?C5@g8|;c{pmnRksMS(H8{$npd_^nGfXm&a|Fmb7WhcJ zr$2nUu63iVRU)*mLRaS;b+aasNV{Tm0)v90CCbXmS{}Js07Nt%%7ferZ*OnAhTDgt zlM2hqGyuAObPUu#*@QW{goK2cmH4_5=NhRFfc6U%d1`8E@&slL42k(_t4EEfUwf1a zfqD1N9dVSP0e2wKBx5D;h;v3hgi^cbK~(LqdiCmFK;}BIe*koERY6gGWp`okgCKMe zEkT_hc9b3#fOni&!LP13O6GU3z`dRvXv{nF@+#;H2dM4hHbfGQhJxPUrTYMg*MNv8 z0!U7Tq!6eX z94%Cg;Fk6fcbOXjCZy!&W@kS<7Zw&)=5g^CF`6b4jMBp9Eo7ALJ?fnq%7~resVF=L zsHV9Zw8fKi_02bdVt>;pKTY)Z-m@t*JG;3e?xc+L{5-9@`yJ0@lVRT5U{BH710I(X z?g$a@Sy+u87tQ?gK$Uj-&t?D=$4-9+y#~8KR^}o2wO+JfUvgSB{0_OT%U5*qn&-Q1 zY+b2UMXvYGEyK2D3?LANj{7(gbmy3M4;|aob+5oou(i`7h!o8G{@gDx5j*;9u4|t| z@W}jc{3y)FdrTh7+}zQcDOkf+Ii4d}=hKd9o%2U^y>NVay#ikEi@P4)c$q2*-o+p? z%szIt{U65i;G;Q2JF(=t_B}Fdak}scIRe7tKOu5B>Hh%E{0;0w{rVUF!GC-6o4HZA z(*RifOTCmuusxXe5BU7;@f7kN%UfY#3dLUxrWxtX@h+knbbSbFR!elv+G4Kt_u}FU z>EOgUY5ZB&L2m?XS~bce=We~F`bDb%uYP{E#3hqoaRKNd5AB_E;m z=;eFo0V;{Ak@s3`IknPL-N#3=&+ASG>>8>w_`|LJ0MsL1;Q2FhnEbR@a6m9TDE_tA<(YJ8&nYwjozLRs=)?qK4Yr+t8W zqLC$05RhyK5Fkz?$ajQEA_J48(3omKUnN`W`OY>H6tBO(|FfYZt6@n+>eCM&ex+Ht z1iShjOl^MV`Sa%`Xuu3f4O5jotg_r}Y<7UzqSR~Jz6t}op4#jv2N~mdfD9u(kP6jQ zgz~zq=E`tC}#8r54GVAE*z>_Ize){i_5j3{|vk2Bo@#lGn z>(MMc%8ZBP~#ebI50X|Cr?*5Y*SKKPlW2? zufXu(5velVS*DhtH6xVL z=cQ8E;cJ1C-}<0pg!aRytGs}Yb6nta7lV+90Tk9LA&O%OA_2SDV$2KDO zjC!NGa#|2M=?B%#M&lddYV1q>kDMtzN2lXn|G?QJ#F>&bHP&zo-hlp= zB9gq`+b29k3Su0ug}pIKlZds74+}fmp`x2|x1vjE2c;0mL)u4wq*h=z9DLz|VURv_ zE1vqXZ+}?#`@99BN5?Rz?u7GjDO~LNV9_NyQq_020=IcvVllzjC!B)jY^@Z$+|ToB zS%V5Vx6py6MaTabVIsff6lzc5nvNvgw=@eW;?zgmfeAT?{*M8%RN;AAPEIZ$2)UfA zpenEV^vWIZ%j^D089RY@baQA0M8BG#2;LtDZUXpAUE{ND9pe(`aoltY)4;<-95;RDy zZ0gp*oP2|(hmpp+Qw=MSpPmEa5uA)DWN_T#6kScgr)j>v<78CKCggap5xJc<{j*zEFA= zAH!AiWsW}IPpZt0Vb&=LmV`Qd*p2k*uca_Kx*QxnQVAkwJ?->W2kr(>=TU3JHk){< zZ}{cbYJ?RKqCrDO$LFvAy)Y*~1#?_v>CGtolr!bX;~x(UIsEZsBWore!9(2CG65kC?Q7)*7o3K#HsnYql{|cbia<>iUQxdCBp0=xn6hzQ>y_Pwt!6(7yrgIuc3%uxl?x+K zH;tZ30gl6Yd>b2_7^G$cpqhUIU_>wC#sMq9#yc^T2RNaWKT(ZhbV(3^QU?zfRrud? z`D_jHz>!O6S}|vg9uokiajc1ISvn-9xQ4h_%un-&9dXr=Uvm>4Am9K(0wFF}ml4R3 zala{RorKD`AdVx1D9AcM%Ld|?6zuENIW_H&%G**JKp;X|7VC|!Y%L`1a#26F?W1DcuG-siy`LI$^$VqDk&++ z=n^cq|L z1j3vqs&yfxS6nP@p`&Y_5}*dz8N+EwP@CB_HN-H*L4KK$2c(R<6bu&gc0iSTVLGhO z`@3$;wODewkS|{s^q(*e0#oKxfItoq0SSQI`+KF#!(0B5h#)=VQ$VzL##XOmviTf3 z9YBst2qdWAgs?_y;rnZ&DEx?uG{I2cD=cJ`ivA2z3j9p)Gj+-A67liDj2s8py<7;a z#K-J5y>}u_Vm~}DW9onqje7b+5C<>!{xD;fH~t7egf63waWooTd+zP8lB&3 zmMf%;Hpp1s`dHJdzW_Pp%CcpXWF+|V$Ut1IXE0)8tpc5&nSUs)xVUPg13VA{sG2I2 z_-CA9Vh{XPxJQg5-Z!TW@csW7300DgvjZKOtU;Gv|ov{&&A>kMIInZ36c{xp7K8K zP;)D4v%G^H^c)q7$Rl`~phV}3UPS(au>Le?M3J!_)1n}~8UGHT-5Urjqfp-?4}X7U z+0wD^eqm4Gxd>4AX*nc(JOE7HEHxZwDqQJa%uqh)Cb`pBZ!Kw{=Zq=7VzfeSa z9W$q*0vDrW|BMey=JwrBsH){7^I|A}UFsZ^Z34*w-S&iZLsVeeQtab8;sblwv9Bto zz>VYA+X>Vl)bjGR0|Nss!O;0QfRztj9t2Nc;Iz8tG<8d*~ZB`>Z_`%dOu(EQND&SHFQD*C)b1KDTq`&_@5prF#M_ckz zm)wankFK>K4@Q#sJ?2yaly7G(KuN3dl(-o8$Q0O}v;|aXmoR)rKa84k8i62 zJLY0)YB~iOlIA{8v16znpEebf6P$uNX4=-;nvQY@rU1TYEO2lFLRLqqC4N(E7OSaEH=k{nU0C&|Z?}HI z`_O-6tk2cbugbiVoP4(D(eWSG>D%nud1UKp+Z*3D{`l>^28G*aqaNMWWy?)t*-%ARTTY>esFbLGPM6;x1mi2s_W~^}zwmf8Wa$JK=o{`{LLN-Yd2m z^#x7i8oB}6=^f@P`7liSTcfl`UFphidi66T0*^MqE)EJr8`t943!|z9kA@+=ILoP& zCZd(@It=4mn}@-Nf}fA&zTu|0Dsxt@!URSB?uNHG_HINg&A|1}n>2$FjtGX`e08h| z#(Dgmo%ooW`~9c&Pn9>GzH@Y!twQ01lwKKA8IwMVhOO3YC*IemmDI?7WRq>1`RQQX z(K2u7y`ub}KTQ2u*SI7{qKiALWeOLkB*HIfe@WApmu^pvkyar)x=_0%qpkPFhFp}}GB0Xsh zxtERSCa5^NyiuA#u47m9Ky`%m>~K^5RQXm$?_DW_L)*~QLy>w32CL1Tn;Yv;WO%&4 zww5S1;XC0SBGzI~@GarYX3)F6Cu+<1ak19%p1UK={T6Gcq>5+GqGt{b4XI97?#gG5 z7cw48`R)~6tkm2mgk-9x1q#L&AWJ^H%f2N&&a;!iWiM7Gu&P)r3fCvzdpy6>lODJD zE=fJ?RE)yF4;v&aP2Ib~G(|kcg4LI7i2W+mMeTU6;p9#{MNMhG6OSKy96{?7<$Ab{ zcSb?KcQn^RH|)poYfZzF;Xx@Zki{KWJ^UoicKfLSH2HpV(0-+bQsalMV@ z{CJlZv8&LX9*ZYeMa$b;#b;lt4&SEgA+4jnXi2SrCt>=+$;zNs_KWQ;CE=^qZt6EA z%o>J>g@lBh&viI&kZz(x_q1<*R@L9%UxT-j;)r$=JgD_2Po27CXJ<#FUth~V_x-2v zoYQ*=X#S5>CW>Su%)D&Ls*IY|xR%R#UEyEuH>go<&M+svr+)$}cjF0~0hz>QlIXA2 ziq>SX+cRn%j0@c^KS@f$zc0O}MCl?C2+irHDvVe*b6zx)J6ZBDf9OffG>E2FHQsM& z$ZR9R3Hy+8uOTBbHl-R`k2I&rc1XT_|3j?Lbd~4egIiX)@-ek9jM7e?JSnENd-v|? zpEv9Dw^=8|d6HN0tKI{1=g|3b>M4Ee_U*N;t*x<0zI-ZFG>=eNb|v>NSHtvz;go=Y zqG^J@!LxJsQ!`4G6+5pSF-S8CgWFBuim1rQ$~OY$v10lC#1mOp`^rr`2g35%a~-lu zN>MRRB}yu8qm_e$Hs%%e$oQD+D1{EsJ^}*-Gth_vqf@HkIr(aBqg~GQD}KMpfA}VF zW|Fd9h8i3?au4e2>b7NFIx+sTFDQyF5$AGtoW$jr;A`bkugOXA(W&VL`|>)SPvCCd zGuSUAs-qlN67ROB$xbUf8Dx!}`xK0qMWTswmAI12V4eMVYLi`CKHeHs%JW^HqC@LF zCqG8ahA$@~UvzBY2J0s^#z`T`YD_F{f){B2ggJ?7S=wZ^=-J5CC^_0oY=c#a8g+|U94>7C&HXOuQ>jxGGC0`KS}GdOcDH7p=l zB2If=WWM&v=kSg{hap~y%($bw05@cuyCey3{yjte-)HUWcs|O%hv%fu@|>k@P+$!^ zvo4CC#Q8?>iRT(@;VN=drC059h*MLK8nx_l9<^;_eWx46y!b$t;>W%reSpD-T{+OX z5;o;w$FaHn8=l9JU;7FdMp%vq-yo|pX9ZqAuaU({GfyMYz#{z9U!#?W_6IIq%^*V} z$7r4kKh}F{rOoIv^A+D%$Fr9~odG6Arl0F2rsISh4&`YR;7eZBss*=se?}|f^{nZ5c}0kJ(y&-rs=-Ki z?~!%zt~8R86L|6f!`fr7ScU-q5##w%INJm+IONdZ~x>l8r)&WL0X1Xye-*6ul*3KggR44U!p$*)$Uhb?bbpFPY63>ZEGSd+b=(K}{pDAH1<&U@ zUrH}o8dl}97;GLy(?gQy3*f?2$SU1aLC6j-Hs_UuCB=K~Bg|+LLKRD<0%a-4Ix^ZQ zehLX(7M)Q%;VT6f*yTF35w(+K8L{a3$U%vKZ{~T?4idY=XYhz<%J;|61cZ1NI)KV$ zQz=WcBls3m_gV*UMhsPzF#!?efNa9zNym~!S`o8rLYv4MO5oTwKRX|i;X7vUNo96N zsCm!zcThQQBHp8!CLTREw1_xPAC4@=>6N1Kb0_)n0IlcT(e^m~8PBN&kd{(OZ^6Ar z&X>#=pD*@uC4-yunYwEp+s1X`&N)TJ#?~Ouo11nn^D6;Umosh?-Em@V#oq47fo3lx zh{Y&6ksBVLK$FcNTn91v-vQn6zn1Af(d{#iPpCGgE;X}e&AG1W`Lt+OxfAQ?cnNb{ z4E(Mo(XuvL9v@_!ZB<)SQdL#;%&gdp%(;L6{xhQ-JDO64g1mef_+hdqjJWhUe!~vT z!UBZ|`IE0V;78K(c59*Gvfi)7Rnl?XMHAO1{S9v29gc+uMVYM?UUOcvUNXwjCr{0e ziU%8~HP^!EN_!u}!`74+xQ-x~rqn@JXO6Pon6thkT8_2nXc56LTXz+>%2L|ERg=}` zJEQ2T%+YMTSs(bqnqa?~hf#gzV^3ln-)>awlx8qqU0<8+$6nejT9npn$fki*vni1O|cudDu@mF?VN1Sv1imB;jcZgAPU$8 zmT=y=R=$Pj(wzY>sB#wi^56fkfhbn!Hukn!iWGZSvS3i2qN1!EU0+`xANa7#Z%l`) zqXRyHf+JZc!Oru4xZL5=NCt(%8Kuygjh$*USZ_1>CphC1(>J7icA77|79fg2cvXdT z-=}wTLM2+HqQzP#GP;OXBTK1~;!aCR3~}C+O0ix`^|uh%EsRA9L0zh7@|*PHx%MIe zmeo<#@#hC7VSb4j$laGNL?tXnu?EaJmmCX*o^(1_AM^y}jiva|Wb=FP?6-<%AcbE< z`i->y?X^{Fr^)UmvQ*Aoo^EOrd_EvWP--#rzT7>V?tW>g;W2`~>dZEZ!67l|=4k+e zxO*Z@-OfuEj%Ga^H_x)va?BqHM_p<9l2i0kr^7OQF750^D_wWa2&@TeiSx*OLOZ?V zqn)gDhks}4 z`6LsQyEoGeWYptbl*?rOqEh9(4_tR>r3+ye3Mjzy-~4WfkCPPboz~@dX{Y-+^e`)U z*hZ%6Dy#+pL}-60u0kDqJu}m>%Sq9#(*fT!UlLhULcVp0C1YrRu6ye(-}n`n)m8*@ zHEe|gEnCtpC%W@HBBXQ_9G>ppydl+Wg3~P!foe>8+Hb>}JEkmJ@Foe~iL=?_HKA30MP^*^QjO9;J; z#lO$8)@fSz{@AQngUvSX)ii?!M+$dgUuCCg@mrq-*CpFXO0#Ty@~APYu-ITk z((3%VpS}nzpERZLX2##wx&m8s8#%X`bA`VBy@ZCY<_VoFxbe9MQVM8)iz!@2Ut1u| zPSMu5jUf6U*V7nL7vn6(p--dut&iQbA5W3?PG5R6@d>u)HX34Zu2Y8c3US0|XbkSm@74Q7kH5mD$`-mqPa2*A8FO6N104R8=_= zrgZaFDm}%VrH%O$5e9kPjA+2 z7!APk(J(ysv8^1@w2)ZrO?NaeQEhwvAo^rzn%RVzJNuoDSgloqqamKNDEMPdwyap0 zth>I)tjX+M>N@Q7=U@~xf`OoTa!M;n*4;a;*|a9>`L}z81A7YN*Y0HOuoT=vTMu~c zEp{R-#b{ zrk=X-#S4jAVi*l(B~i?0E`Lk1#nF~DZA*$V^@ zZjY}fzTa?|E`piH~R2g(DPgM#1o`BbwP36aq_2OBT;GL=i~r zF(=A*0;Zt=M*0y_aDKZt=|HQe6LQ^G$~Ma45GEOE$w-(V`PJSCmy6j#gGCtRNA7M- z^V_if3|-u;?qURCG2)qNp+aM0qtcc4rLpu;Dv3Z-Sp{@Q%r9hz&<8@I;CtQoS(Scmtw?2S>p2C-&enMrJnFPKZ)oLC>}IEd2*06-tP5o~fwhrcET%Gx zV_h1wJh@D20Ji$z;XBVQw=UTI2-`LZ3-PYPrVV4(2@k+189^(hGw3Z97*iC zliJ!eT8tApXuFDxva-?CAas>TS_VGB+=bvGE_;FkBPR?1S5^t67g=>_@S##)fGkn$ zkEoA69p#}%C=>u}Y%g=@(0yGUHF-l*SAB$PQf`7{!@`g|T-BFq&K@2a&-fL~L3e0< zzLUzLDSB_;2$$Rpntg%qP8$B?z>i*PwsI-j^#tT?`CAq)jc1g#-Kvr% zL!?}f4Dz3V8>YS6+yxm2h`T4fcyYJ(=_Fa71ZVX#DEuxglktoC^(FrTvVL*@|H`2A zOl}j8%U-{f3|uxqmA00}=KkBd9Xj^3e$kA>wDDGw#OYQ#PXeZHa(Q&?! zd>sI@ibVd^pz~#aH0U6J3*=4M>6J)Heu-Kyx2mrLsg+Lt+o2+{{sDOapPWwQMb!s( zd(Y{`VL^I8aFkDpwg4$M#|lOW;1IRuR&Z*AbS=m{7*TtJ5X+`&W17glG8P2vDu4j6 z_Ny@bn#PHAqP11%+b$Ci$l+iIoa4w-gy8}Jln>n0|MjB(j90C%Pth&SOl>M?8Jl|A zQdm(t&x2u%T21 zs{RKs2AkMl#6B-1IeAy!$GC(WWwBFExGeAVK0KjDks%%QC1!CiA59I~pNMq_EaPu4 z`8AB(a|UG?*f^)uuooRoaXets!&h~s*7Qp&iau!}4#UL%i6j%h%`s|lm~*es`arit zGbj~1EaT&L3dQHAzWxQG@FdQcubsqAAo9RuS}zYISzAAqsgV8+WccmS{#KEBli-Q!^Q{M=NPpWxY~yUxCauRUcS|-=B`vp>%;;YuM)^h`U)aiSda?Q z>V^oG(&opWZK02tbG^ok=et!|lVvEE>AW})K^Y}L&Lhipr1_+d4*kBSNL80RHBQQR z=mcb0)Eg#tB5@7y2It9Hq~qUwY1n_)ob`S8Lb)Q@fdB~+XL_7FO*dglPvLTV=myD` zI}n900vHMT7%k$24_(D`I629gqBhUNHjg9BqJs&nKE#Pb_JOHz(@QP6Y00hN`*(I- z`9Mr0DjrP%Od#C>?hFmgp}R;aVc};9t6bc#A(Fzl9t-c#v+c z%^HFOy0xXH*sfi>JQsRy@pwG=`+T<5sgL=aiZLn)2T8C~M1*vh^Aou5dFZS0l;Qw@ z&=^mYgjN#)wiug903>4aBHAul^4%AFFm77;M>xRCy`_f8Zc;bST%$W|f7Hpd9^ z9><7~&*{G{5nq{2QHK=KS`m*OKu5N{yxMn$q6VA~BxaOQMo!SJ1XfV+QzwtIt<#M- zb|XGF4)SYC(7AQ4x$kUKe$UOVS$0h+0fB)71taOzKmYu#WXVFWSe1B$2{CZ1BJJ(| zjGD1LYCHhTP9H`s$~GR=)MTpfhNnLzqLB;#5oGz(Y|V{i*o=v&{>Q?CT}x%v#wNfv zLV3P86?c)@NQ51&q9bM*TA~IA`b-R-8%%i zl)6m3i^NY=cbaEs^M@?s93CdfbW@3nR(592xVTRN3T7s(+wu+YF&iGs%(qBeuf_IU zL!1D#|FmKKe*>GKi2ur{UCy|xx2lynouPy%p9&vY{L%FV!{{-{JgjYrM)f(CJdQ#;t}TYCw1nfT1KMcwShhl1IzrVZKnHEj89@Y zUh1fN_wIEu2kg(GF&0B$d>gOhq$dS9{-u@45XPu5GKe2w{QE57*nI$s6#GU7b}8dp$_uZ1 zKruujknN$=!J(@_zB)pRGTfAk?+a9pNP0>}y))A^9otdl@VsRTezvskO8b`r+=H>;&8~ zSW`)oDlCt}<)x{;i+EsU6y1Z&?({yqKaM(z z_wt4sB!1ONjS@&P(NKL%V}1QqJ!WT)yaEU}%F1JIW9{-i$ghrR z!><>i2aR+4Uo>i;u(r15ECh282je&%TMin9K6voJ#l^*PZnSN4?!?$wZC%}IqNRIvj6=6CLT_vkuwu|^5mNVCC=<16O3`n7exdBqI0NC=w7hO3LNScEZ_^55z3W5L zxgS@kur;gdZoP|vx<-% zDh8Za@gr$vD`eG{mX?TOzP`ST^91hvx`aH~YfG&UT-@BAWM^kzz&|wzxqm;n1gEO1 zO#ABdx*+YJ@rL<6-;=judp4Z_7;^A3#7IIyLRGzQ?&7DbBdBF37kbLCb z>9H_K+lbZK9YAS5XdmW~>5aL#h#BV@;e>4n7e|&9nd+bDCWnoaFzm`Rbgi`3-1w=I z$s6_b=HNB$ZLI~I-|ZEf=Tq~T;6=7gVprTh=ow#iR)eNwBGZD}Z)FB=_^(6*ho-Rt zvCdww@?_^CsE(P}DDiWzPCFM>dS683M_-=~$+ZpOB~5nW+-%qZJEt?uE& zLnXm|IbK~DrmF>`t+NO_?mYCkYVu0TQP3p#7zVstd3JQ*>HRO-;+%T1KW}^mveIvYayi;n1lHPit%MZBl8c z8Q18y3`R`%&kP>h7iKxq{OIAXw!-;`ecQJ`?2{t-xFobRhJ;oJrhSGb>Lc+#9T_|( z;(b7ALRH{r|7Kk@!QEwLx4Nw+y8AbnA6}vy2qV7wny!i^Mj}nEvuLto`Y{O;-Im>| z0|Iw)WQLrX=o|tGiXXyAXR#z>u+Ok7D8N2D(-d-Q> zCQOHnUG0Q5TN^KGl!n&qda@qT&UI#ypAb3PTK^L2wY_JuQ}yW@SfU5oDjQ*~ftTXr z*CEp*kPhF~lWSS%D>4nLGI+XJ$~clboBpMj%k$_hlCeejVUIK!NCF(q`~>?xV-|Q$1VKx|F*cgL3X^MJ z)*ij>+p8`Hi!*5Qb9iqrqH}&`!a7mI{8+wCyJ2a!g@6hz2osw}x*mAx@zh;ibX#nD zH2-LurScUrY0kb1t#<-fb!Z}iB@D{Gyj_}xZwUm@YEMWOJ6EbXEyC#H?L-r84wZW%*FlR`lgZ-8>f)a$7Q(fMP$jjsIwK0QlluYA)rJ|GMZL=0 zug$gg@Ho6`)hfhI;oEJK22jQgQpmdEB+nZKiu(gTm;we-$Ab+8 zS(nB;^AVi%qr3Y_sJM^UK>hM{MERitaAH3y?nZPUuz5QX+V)#&OrYhom{pTFBcvyJ zd5WZ|t)%-TRyCDppC1clP&?}p2%Uqo)!z3;fjG&w-hzDXNz_bYQ*CPXD2 zwQb5@iEWdD<*Lg(thF`~%0*7K$nDoSJX&IN#+X^0I?a{GL(AVJqc`{Z}|LN1Sq2TTroIo)-O(&Z`lqgk((^=ito ztC%f&(heKKZhH>9t&RxC4HAqU^TiX`qt=We9fGo!jGSC(P*6|}Nc(kead9!=trRC& zPA|80p|$lD!b>gbrkh2i&zC!{=^95+<#ld#tkDD7l)PMa&=K1kBHPK=*!H0YvHLNN zU0@~s!{wxh0 zzJMhr;MTT6cPA)IICOyt$n|kXMn*|3sFk{mx`LZ@UYDCO$nHF$24dZo873}B{&))JG6jukji zONvWsp>lvC*d-}(~l{)t*MEfmFEo!S%(IJSC zlxE-QqA;@4cfLzk9wm)!*1=9sy!6g4XP2YyzXzw`bD1+UVsUX*mB$*7C*BA<{;=X$ z;mD9sT=nD?W=-;!b|U6S8h{5i3Emf0&ke7xO+L72!xbJljk|SRJlR0AB3j7_YNo`Y zw@9&%b~3O;L`Z1kn!}l24t(=HvXi+jZ|V)6direC8krqGt(Kxkys<$ufq#=i1`X-v zTBcG!t>*zgTUrqmQK9JJngx%$-q2ksV5Ik1<;yt`s}SZ zdQT6HvK0uMlTL0RP-q%`yfpcmt%Yk#Tk-9N`=5DkO0#enV`tJOelU1x{R!}2Nb03u zzjzx>uUlW<+%4+u_m#~J@1t-|32jiYr=+$1@(()<_ouqhC$q!7H}M!5bEzzqByn^9zE9s^AgD5AA=4 ze@jbWDpE?Gf&ttT*PyB!!1$65`%4Fi+*7Pu5VqP~Fjig{}boobwj zb#Im4*oRX!c3|dNR`cmZrR7Zz+PZTR6kGkc+xqB+(FLyyou-ZPOIQ(pKs2D1w zN3k}f7cWsud>7vumJqi(zT63Meq5I42dh#UI!4rLuD|cl6NTs)H9%g;|Nu;@1^+IYu0s6K6NFk0lFlq;_lZ2s>~`s2qq_O9q?)1xnT85cPoy z)`|V7j-9~-)@gAB{BunLj_{WDP3CA(V7Aa7D*-}YVDK+F6EH+0cq1`HZJ=zh zZR3+A1xT4vIBaG%9827rAq2Na+wxRekO7r@1GS3OXCyxm6sm(mUTwfx37ys|fub@x zs>=Fd^#nE7}`DCv{)& z{1K~HfK-V}(VNYwUL$E*M8vi{xFzxy9Rs!o#K%i;0#(dvc48Z#b914`A1{#>D+sI# zI7Fa~D#X$1pi^!0Fy2tgYBYmWx*Kx7#js5m(Dwqs8!rM*Nal;>7>(WQ1AJADa`J@} zCCqyrXhuj$1EzzFbaWcpq5=Zsa`-UyCqS5NgW4f9O4yId4|jQvW?FU^J?tn!vARUw zZp=Sf3_h}X&eH>!u0r_PSuM$8IU$kwXf}^KxN8FMp0r%I z15kddLDG0HL8c(X&UJVWxH%1P#4JGjd+`%Q6my3A0>_b#mB;)tG#)QxH`mfATc87< z2%=xo>)u`x7yw1KkwjD?v_I`i5l$B!Hpn1#kFLjT6i6E||1Bs@z3>vEHeGG464ro~ z;YyADhX+FIseow?f_ug$uZC4Wq%J%I+q(`+OH8t!abJaL+(qVO+g<0jH*j(qGm4JE z5U~cmBP0NWOFFAGv(L$ZxdLmyjo!dGIv=dGs87)c8?E7u5Hg0b66|K{;3!`Gp?Uwc zSUa-bsQpzNjjlbdu}rUghNzQhFoy%q*{Lhu+W@NuCP~$2ath+ntpFKzz{NJtkBgsw zd1a>eOmZmSru8ty@A6f>y3-B#)g@b3FAsPb6DcXHsxGy^`O1IpjHHUwD(uaBG+StY znIVL0myw0sIWWch0@bC$j+%q0O7(uXurs}c{LaxkaQ)%WkfQDWI)C&v4*saU1iFRV zpMjYE-K7||_9Hr*hswwhh$N(vRz_dWl z3Cga2yxa|l{+UU>3x8@lsvzfuDNsPo$IsuAhcJX0 zl(e9FV03ma9!Psso~$c>;|YrMAxxTny+O(n&TOFo8Kvj|sU(%uwvafptc403`C+hn zG^#s+3h^p^LsNZG?)&TfhMqS7waLtTEXRo04i)fvR2n2FwLo&V zIozcTZgfGfaVccB?6vH+!r7iCyNAWfi~S+?=ybhr48)ej;g50wpg?tWsv3lNIiSZa zH*ek??m(5rIj{rTD=RDCX(z5mXT6@X*;Hf=9p%s35@Q8w0?} zYH4N&;fkapnpHa_wuqMGSS2kexllkraPyKo6p=kLk<=Na0tpk*-QB&UfPiDVY2h&S zN8D#{U|=n;{vUijgyJJzXM`cVhElHGGkdR&ZVy!K_SnUsQz$5hi_|{sxcKev6_{KD zkB%#SuyNx?@v0y1nq17NCyx#rsf<;^4|l|V`Y-fGm5r0Kva$?-yLBBR zt)%O-?hele(YZ|yhXZOzhlF4?A`Kw?zXZ8DFZWM?v^Zu4IVh9~78L@Sb)#=9K-^K! z>l;WB;Ls)KD>&{(iUW@0y9w~Z$3XWrcJlG@^&@uddC+0a+$%k=QQ;krVj?V*!MVqM zu*5cQ=MPRmGK&l_D;B`>W4(Ryg|WHWkSSYYpxuYg?wz-e3nOso1Tuh?m~%pyM&>zG zuySK|c2-;qs1Su7Hekc13P|*20adoHZ-T`2Lv~_G;k!Jq*sAx~6UST1D!jyeH| z5D2ntz*OrxL_bOZWHOzsy9XP*QEzs{xWyW`JfA!>440XB%0Uf$P z_Jy6#*$x4Zw-nUqaqk17Rhon4s)T3&J2m%z4DRZF4`e1vd7?w5z?-I)%(+9eBF9ES zBw#{d&!S2KS!;4E%wzygoFZ$xT*fy5wH%;|yxKk#gh6h)(~mhOBq(?c($=y`ibIZt zW4Q<56cpfcRI-Vfsq6&y0Z2^;z~VhSpFKPuEr^GTQ5uk*86>b^bJm18YjjN08NOs= z02xbU1kh;-bS|a873|p~uxF=cA=}zS^y$w8A_-X>D2XJw0n~p7S$=yU#&W793!f<* zK76=G7POO-GzZ@%k__KslGIdCP+(^cL7*Ls$nmwqljc`T;g9CP7&qtf&V;tZcZwvu zQ=hu6^G;i7AhcZ+${pT8{HWZ6M~Awzb3y;xLEG)s)YNjI>JgU);f~WCYuQ;8lQxr; zN1ho$`g_dKZ@|zFg#cqoIJT{?$%J}5#djQ^1K(MZ&oSa|8jH41Pllu48O`P|}e;ueDg6Abe+qQJPj84;?}xk(Ymk&HMMj-Tx3LATnrw3hsIE|JTF` nGLoqA(!B8c{~*Pc$mRd!$n%NefNXg*6Rq#GzfJ$f;)nkQL3%&N literal 0 HcmV?d00001 diff --git a/docs/user/advanced.rst b/docs/user/advanced.rst index 31d9bd3..ca40bb8 100644 --- a/docs/user/advanced.rst +++ b/docs/user/advanced.rst @@ -316,8 +316,85 @@ You can solve this by passing ``flag_size=True``, which will enclose the supersc "Madhya Pradesh","27.13","23.57","-","-","3.56","0.38","-","1.86","-","1.28" "...","...","...","...","...","...","...","...","...","...","..." -Control how text is grouped into rows -------------------------------------- +Strip characters from text +-------------------------- + +You can strip unwanted characters like spaces, dots and newlines from a string using the ``strip_text`` keyword argument. Take a look at `this PDF `_ as an example, the text at the start of each row contains a lot of unwanted spaces, dots and newlines. + +:: + + >>> tables = camelot.read_pdf('12s0324.pdf', flavor='stream', strip_text=' .\n') + >>> tables[0].df + +.. tip:: + Here's how you can do the same with the :ref:`command-line interface `. + :: + + $ camelot -strip ' .\n' stream 12s0324.pdf + +.. csv-table:: + + "...","...","...","...","...","...","...","...","...","..." + "Forcible rape","17.5","2.6","14.9","17.2","2.5","14.7","–","–","–" + "Robbery","102.1","25.5","76.6","90.0","22.9","67.1","12.1","2.5","9.5" + "Aggravated assault","338.4","40.1","298.3","264.0","30.2","233.8","74.4","9.9","64.5" + "Property crime","1,396 .4","338 .7","1,057 .7","875 .9","210 .8","665 .1","608 .2","127 .9","392 .6" + "Burglary","240.9","60.3","180.6","205.0","53.4","151.7","35.9","6.9","29.0" + "...","...","...","...","...","...","...","...","...","..." + +Improve guessed table areas +--------------------------- + +While using :ref:`Stream `, automatic table detection can fail for PDFs like `this one `_. That's because the text is relatively far apart vertically, which can lead to shorter textedges being calculated. + +.. note:: To know more about how textedges are calculated to guess table areas, you can see pages 20, 35 and 40 of `Anssi Nurminen's master's thesis `_. + +Let's see the table area that is detected by default. + +:: + + >>> tables = camelot.read_pdf('edge_tol.pdf', flavor='stream') + >>> camelot.plot(tables[0], kind='contour') + >>> plt.show() + +.. tip:: + Here's how you can do the same with the :ref:`command-line interface `. + :: + + $ camelot stream -plot contour edge.pdf + +.. figure:: ../_static/png/edge_tol_1.png + :height: 674 + :width: 1366 + :scale: 50% + :alt: Table area with default edge_tol + :align: left + +To improve the detected area, you can increase the ``edge_tol`` (default: 50) value to counter the effect of text being placed relatively far apart vertically. Larger ``edge_tol`` will lead to longer textedges being detected, leading to an improved guess of the table area. Let's use a value of 500. + +:: + + >>> tables = camelot.read_pdf('edge_tol.pdf', flavor='stream', edge_tol=500) + >>> camelot.plot(tables[0], kind='contour') + >>> plt.show() + +.. tip:: + Here's how you can do the same with the :ref:`command-line interface `. + :: + + $ camelot stream -e 500 -plot contour edge.pdf + +.. figure:: ../_static/png/edge_tol_2.png + :height: 674 + :width: 1366 + :scale: 50% + :alt: Table area with default edge_tol + :align: left + +As you can see, the guessed table area has improved! + +Improve guessed table rows +-------------------------- You can pass ``row_tol=<+int>`` to group the rows closer together, as shown below. diff --git a/tests/files/edge_tolerance.pdf b/tests/files/edge_tol.pdf similarity index 100% rename from tests/files/edge_tolerance.pdf rename to tests/files/edge_tol.pdf diff --git a/tests/test_common.py b/tests/test_common.py index 0289655..83c436b 100644 --- a/tests/test_common.py +++ b/tests/test_common.py @@ -113,7 +113,7 @@ def test_stream_strip_text(): def test_stream_edge_tol(): df = pd.DataFrame(data_stream_edge_tol) - filename = os.path.join(testdir, "edge_tolerance.pdf") + filename = os.path.join(testdir, "edge_tol.pdf") tables = camelot.read_pdf(filename, flavor="stream", edge_tol=500) assert df.equals(tables[0].df)