brcobranca 9.2.4 → 10.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (193) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +43 -9
  3. data/HISTORY.md +71 -0
  4. data/README.md +47 -54
  5. data/Rakefile +4 -4
  6. data/lib/brcobranca/arquivos/logos/ailos.eps +412 -0
  7. data/lib/brcobranca/arquivos/logos/ailos_carne.eps +412 -0
  8. data/lib/brcobranca/arquivos/logos/safra.eps +0 -0
  9. data/lib/brcobranca/arquivos/logos/safra_carne.eps +0 -0
  10. data/lib/brcobranca/boleto/{cecred.rb → ailos.rb} +7 -5
  11. data/lib/brcobranca/boleto/banco_brasil.rb +9 -5
  12. data/lib/brcobranca/boleto/banco_brasilia.rb +5 -5
  13. data/lib/brcobranca/boleto/banco_nordeste.rb +4 -3
  14. data/lib/brcobranca/boleto/banestes.rb +4 -3
  15. data/lib/brcobranca/boleto/banrisul.rb +4 -3
  16. data/lib/brcobranca/boleto/base.rb +12 -7
  17. data/lib/brcobranca/boleto/bradesco.rb +4 -3
  18. data/lib/brcobranca/boleto/caixa.rb +10 -8
  19. data/lib/brcobranca/boleto/citibank.rb +9 -8
  20. data/lib/brcobranca/boleto/credisis.rb +6 -4
  21. data/lib/brcobranca/boleto/hsbc.rb +8 -6
  22. data/lib/brcobranca/boleto/itau.rb +5 -5
  23. data/lib/brcobranca/boleto/safra.rb +4 -4
  24. data/lib/brcobranca/boleto/santander.rb +4 -2
  25. data/lib/brcobranca/boleto/sicoob.rb +4 -3
  26. data/lib/brcobranca/boleto/sicredi.rb +6 -3
  27. data/lib/brcobranca/boleto/template/base.rb +2 -3
  28. data/lib/brcobranca/boleto/template/rghost.rb +18 -13
  29. data/lib/brcobranca/boleto/template/rghost_carne.rb +18 -12
  30. data/lib/brcobranca/boleto/unicred.rb +61 -103
  31. data/lib/brcobranca/calculo.rb +14 -9
  32. data/lib/brcobranca/calculo_data.rb +6 -5
  33. data/lib/brcobranca/currency.rb +10 -10
  34. data/lib/brcobranca/formatacao.rb +2 -1
  35. data/lib/brcobranca/formatacao_string.rb +7 -6
  36. data/lib/brcobranca/limpeza.rb +3 -3
  37. data/lib/brcobranca/remessa/base.rb +7 -10
  38. data/lib/brcobranca/remessa/cnab240/{cecred.rb → ailos.rb} +18 -15
  39. data/lib/brcobranca/remessa/cnab240/banco_brasil.rb +14 -11
  40. data/lib/brcobranca/remessa/cnab240/base.rb +56 -39
  41. data/lib/brcobranca/remessa/cnab240/base_correspondente.rb +25 -17
  42. data/lib/brcobranca/remessa/cnab240/caixa.rb +21 -13
  43. data/lib/brcobranca/remessa/cnab240/sicoob.rb +33 -30
  44. data/lib/brcobranca/remessa/cnab240/sicoob_banco_brasil.rb +14 -7
  45. data/lib/brcobranca/remessa/cnab240/sicredi.rb +28 -22
  46. data/lib/brcobranca/remessa/cnab240/unicred.rb +2 -1
  47. data/lib/brcobranca/remessa/cnab400/banco_brasil.rb +9 -9
  48. data/lib/brcobranca/remessa/cnab400/banco_brasilia.rb +29 -28
  49. data/lib/brcobranca/remessa/cnab400/banco_nordeste.rb +11 -10
  50. data/lib/brcobranca/remessa/cnab400/banrisul.rb +13 -10
  51. data/lib/brcobranca/remessa/cnab400/base.rb +22 -9
  52. data/lib/brcobranca/remessa/cnab400/bradesco.rb +30 -5
  53. data/lib/brcobranca/remessa/cnab400/citibank.rb +6 -5
  54. data/lib/brcobranca/remessa/cnab400/credisis.rb +7 -5
  55. data/lib/brcobranca/remessa/cnab400/itau.rb +9 -6
  56. data/lib/brcobranca/remessa/cnab400/santander.rb +17 -15
  57. data/lib/brcobranca/remessa/cnab400/sicoob.rb +8 -11
  58. data/lib/brcobranca/remessa/cnab400/unicred.rb +185 -69
  59. data/lib/brcobranca/remessa/pagamento.rb +43 -11
  60. data/lib/brcobranca/retorno/base.rb +5 -43
  61. data/lib/brcobranca/retorno/cnab240/{cecred.rb → ailos.rb} +12 -10
  62. data/lib/brcobranca/retorno/cnab240/base.rb +8 -9
  63. data/lib/brcobranca/retorno/cnab240/caixa.rb +4 -5
  64. data/lib/brcobranca/retorno/cnab240/santander.rb +12 -8
  65. data/lib/brcobranca/retorno/cnab240/sicoob.rb +11 -9
  66. data/lib/brcobranca/retorno/cnab240/sicredi.rb +12 -9
  67. data/lib/brcobranca/retorno/cnab400/banco_brasil.rb +3 -3
  68. data/lib/brcobranca/retorno/cnab400/banco_brasilia.rb +2 -1
  69. data/lib/brcobranca/retorno/cnab400/banco_nordeste.rb +2 -1
  70. data/lib/brcobranca/retorno/cnab400/banrisul.rb +1 -1
  71. data/lib/brcobranca/retorno/cnab400/base.rb +13 -12
  72. data/lib/brcobranca/retorno/cnab400/bradesco.rb +4 -4
  73. data/lib/brcobranca/retorno/cnab400/credisis.rb +2 -1
  74. data/lib/brcobranca/retorno/cnab400/itau.rb +6 -5
  75. data/lib/brcobranca/retorno/cnab400/santander.rb +8 -7
  76. data/lib/brcobranca/retorno/cnab400/unicred.rb +63 -58
  77. data/lib/brcobranca/retorno/retorno_cbr643.rb +1 -2
  78. data/lib/brcobranca/retorno/retorno_cnab240.rb +11 -9
  79. data/lib/brcobranca/retorno/retorno_cnab400.rb +6 -5
  80. data/lib/brcobranca/util/date.rb +2 -1
  81. data/lib/brcobranca/util/empresa.rb +2 -1
  82. data/lib/brcobranca/util/errors.rb +31 -31
  83. data/lib/brcobranca/validations.rb +127 -151
  84. data/lib/brcobranca/version.rb +2 -3
  85. data/lib/brcobranca.rb +5 -5
  86. data/spec/brcobranca/base_spec.rb +20 -11
  87. data/spec/brcobranca/boleto/{cecred_spec.rb → ailos_spec.rb} +13 -12
  88. data/spec/brcobranca/boleto/banco_brasil_spec.rb +14 -12
  89. data/spec/brcobranca/boleto/banco_brasilia_spec.rb +11 -10
  90. data/spec/brcobranca/boleto/banco_nordeste_spec.rb +2 -3
  91. data/spec/brcobranca/boleto/banestes_spec.rb +10 -11
  92. data/spec/brcobranca/boleto/banrisul_spec.rb +10 -12
  93. data/spec/brcobranca/boleto/bradesco_spec.rb +36 -33
  94. data/spec/brcobranca/boleto/caixa_spec.rb +11 -12
  95. data/spec/brcobranca/boleto/citibank_spec.rb +10 -11
  96. data/spec/brcobranca/boleto/credisis_spec.rb +18 -17
  97. data/spec/brcobranca/boleto/hsbc_spec.rb +9 -10
  98. data/spec/brcobranca/boleto/itau_spec.rb +11 -12
  99. data/spec/brcobranca/boleto/safra_spec.rb +10 -11
  100. data/spec/brcobranca/boleto/santander_spec.rb +9 -10
  101. data/spec/brcobranca/boleto/sicoob_spec.rb +10 -11
  102. data/spec/brcobranca/boleto/sicredi_spec.rb +14 -10
  103. data/spec/brcobranca/boleto/unicred_spec.rb +28 -38
  104. data/spec/brcobranca/boletos_em_lote_spec.rb +7 -7
  105. data/spec/brcobranca/calculo_data_spec.rb +2 -2
  106. data/spec/brcobranca/calculo_spec.rb +13 -11
  107. data/spec/brcobranca/currency_spec.rb +26 -26
  108. data/spec/brcobranca/formatacao_spec.rb +2 -2
  109. data/spec/brcobranca/formatacao_string_spec.rb +10 -4
  110. data/spec/brcobranca/limpeza_spec.rb +2 -2
  111. data/spec/brcobranca/remessa/base_spec.rb +1 -2
  112. data/spec/brcobranca/remessa/cnab240/{cecred_spec.rb → ailos_spec.rb} +48 -47
  113. data/spec/brcobranca/remessa/cnab240/banco_brasil_spec.rb +18 -13
  114. data/spec/brcobranca/remessa/cnab240/base_spec.rb +33 -10
  115. data/spec/brcobranca/remessa/cnab240/caixa_spec.rb +19 -17
  116. data/spec/brcobranca/remessa/cnab240/sicoob_banco_brasil_spec.rb +12 -8
  117. data/spec/brcobranca/remessa/cnab240/sicoob_spec.rb +28 -26
  118. data/spec/brcobranca/remessa/cnab240/sicredi_spec.rb +12 -10
  119. data/spec/brcobranca/remessa/cnab240/unicred_spec.rb +11 -9
  120. data/spec/brcobranca/remessa/cnab400/banco_brasil_spec.rb +6 -3
  121. data/spec/brcobranca/remessa/cnab400/banco_brasilia_spec.rb +24 -19
  122. data/spec/brcobranca/remessa/cnab400/banco_nordeste_spec.rb +19 -14
  123. data/spec/brcobranca/remessa/cnab400/banrisul_spec.rb +17 -15
  124. data/spec/brcobranca/remessa/cnab400/base_spec.rb +23 -8
  125. data/spec/brcobranca/remessa/cnab400/bradesco_spec.rb +19 -17
  126. data/spec/brcobranca/remessa/cnab400/citibank_spec.rb +14 -12
  127. data/spec/brcobranca/remessa/cnab400/credisis_spec.rb +21 -19
  128. data/spec/brcobranca/remessa/cnab400/itau_spec.rb +18 -16
  129. data/spec/brcobranca/remessa/cnab400/santander_spec.rb +24 -22
  130. data/spec/brcobranca/remessa/cnab400/sicoob_spec.rb +20 -20
  131. data/spec/brcobranca/remessa/cnab400/unicred_spec.rb +167 -166
  132. data/spec/brcobranca/remessa/pagamento_spec.rb +16 -15
  133. data/spec/brcobranca/retorno/cnab240/base_spec.rb +10 -9
  134. data/spec/brcobranca/retorno/cnab240/cecred_spec.rb +4 -2
  135. data/spec/brcobranca/retorno/cnab240/santander_spec.rb +2 -0
  136. data/spec/brcobranca/retorno/cnab240/sicoob_spec.rb +2 -0
  137. data/spec/brcobranca/retorno/cnab240/sicredi_spec.rb +2 -0
  138. data/spec/brcobranca/retorno/cnab400/banco_brasilia_spec.rb +2 -1
  139. data/spec/brcobranca/retorno/cnab400/banco_nordeste_spec.rb +2 -1
  140. data/spec/brcobranca/retorno/cnab400/banrisul_spec.rb +2 -1
  141. data/spec/brcobranca/retorno/cnab400/base_spec.rb +25 -25
  142. data/spec/brcobranca/retorno/cnab400/bradesco_spec.rb +2 -1
  143. data/spec/brcobranca/retorno/cnab400/credisis_spec.rb +5 -4
  144. data/spec/brcobranca/retorno/cnab400/itau_spec.rb +4 -2
  145. data/spec/brcobranca/retorno/cnab400/santander_spec.rb +2 -1
  146. data/spec/brcobranca/retorno/cnab400/unicred_spec.rb +28 -32
  147. data/spec/brcobranca/retorno/retorno_cbr643_spec.rb +2 -2
  148. data/spec/brcobranca/retorno/retorno_cnab400_spec.rb +2 -1
  149. data/spec/brcobranca/retorno/retorno_cnab_240_spec.rb +2 -1
  150. data/spec/brcobranca/rghost_spec.rb +4 -4
  151. data/spec/brcobranca/util/empresa_spec.rb +1 -2
  152. data/spec/brcobranca_spec.rb +1 -2
  153. metadata +85 -162
  154. data/spec/arquivos/CBR64310.RET +0 -28
  155. data/spec/arquivos/CNAB240.RET +0 -74
  156. data/spec/arquivos/CNAB240CECRED.RET +0 -10
  157. data/spec/arquivos/CNAB240SANTANDER.RET +0 -8
  158. data/spec/arquivos/CNAB240SICOOB.RET +0 -10
  159. data/spec/arquivos/CNAB240SICREDI.CRT +0 -8
  160. data/spec/arquivos/CNAB400.RET +0 -54
  161. data/spec/arquivos/CNAB400BANCOBRASILIA.RET +0 -3
  162. data/spec/arquivos/CNAB400BANCONORDESTE.RET +0 -3
  163. data/spec/arquivos/CNAB400BANRISUL.RET +0 -3
  164. data/spec/arquivos/CNAB400BRADESCO.RET +0 -8
  165. data/spec/arquivos/CNAB400CREDISIS.RET +0 -3
  166. data/spec/arquivos/CNAB400ITAU.RET +0 -54
  167. data/spec/arquivos/CNAB400SANTANDER.RET +0 -54
  168. data/spec/arquivos/CNAB400UNICRED.RET +0 -3
  169. data/spec/fixtures/remessa/remessa-banco-brasil-cnab400.rem +0 -3
  170. data/spec/fixtures/remessa/remessa-banco-brasilia-cnab400.rem +0 -3
  171. data/spec/fixtures/remessa/remessa-banco-nordeste-cnab400.rem +0 -3
  172. data/spec/fixtures/remessa/remessa-banco_brasil-cnab240.rem +0 -7
  173. data/spec/fixtures/remessa/remessa-bancoob-cnab240.rem +0 -7
  174. data/spec/fixtures/remessa/remessa-banrisul-cnab400.rem +0 -3
  175. data/spec/fixtures/remessa/remessa-bradesco-cnab400.rem +0 -3
  176. data/spec/fixtures/remessa/remessa-caixa-cnab240.rem +0 -7
  177. data/spec/fixtures/remessa/remessa-cecred-cnab240.rem +0 -7
  178. data/spec/fixtures/remessa/remessa-citibank-cnab400.rem +0 -3
  179. data/spec/fixtures/remessa/remessa-credisis-cnab400.rem +0 -3
  180. data/spec/fixtures/remessa/remessa-itau-cnab400.rem +0 -4
  181. data/spec/fixtures/remessa/remessa-santander-cnab400.rem +0 -3
  182. data/spec/fixtures/remessa/remessa-sicoob-cnab400.rem +0 -3
  183. data/spec/fixtures/remessa/remessa-sicoob-correspondente-bb-cnab240.rem +0 -4
  184. data/spec/fixtures/remessa/remessa-sicredi-cnab240.rem +0 -7
  185. data/spec/fixtures/remessa/remessa-unicred-cnab240.rem +0 -7
  186. data/spec/fixtures/remessa/remessa-unicred-cnab400.rem +0 -3
  187. data/spec/spec.opts +0 -8
  188. data/spec/spec_helper.rb +0 -38
  189. data/spec/support/remessa_helpers.rb +0 -13
  190. data/spec/support/shared_examples/busca_logotipo.rb +0 -15
  191. data/spec/support/shared_examples/cnab240.rb +0 -259
  192. data/spec/support/shared_examples/cnab400.rb +0 -180
  193. data/spec/support/shared_examples/formatos_validos.rb +0 -36
@@ -0,0 +1,412 @@
1
+ %!PS-Adobe-3.0 EPSF-3.0
2
+ %%Creator: cairo 1.16.0 (https://cairographics.org)
3
+ %%CreationDate: Sun Dec 5 00:42:37 2021
4
+ %%Pages: 1
5
+ %%DocumentData: Clean7Bit
6
+ %%LanguageLevel: 3
7
+ %%BoundingBox: 26 0 101 23
8
+ %%EndComments
9
+ %%BeginProlog
10
+ 50 dict begin
11
+ /q { gsave } bind def
12
+ /Q { grestore } bind def
13
+ /cm { 6 array astore concat } bind def
14
+ /w { setlinewidth } bind def
15
+ /J { setlinecap } bind def
16
+ /j { setlinejoin } bind def
17
+ /M { setmiterlimit } bind def
18
+ /d { setdash } bind def
19
+ /m { moveto } bind def
20
+ /l { lineto } bind def
21
+ /c { curveto } bind def
22
+ /h { closepath } bind def
23
+ /re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
24
+ 0 exch rlineto 0 rlineto closepath } bind def
25
+ /S { stroke } bind def
26
+ /f { fill } bind def
27
+ /f* { eofill } bind def
28
+ /n { newpath } bind def
29
+ /W { clip } bind def
30
+ /W* { eoclip } bind def
31
+ /BT { } bind def
32
+ /ET { } bind def
33
+ /BDC { mark 3 1 roll /BDC pdfmark } bind def
34
+ /EMC { mark /EMC pdfmark } bind def
35
+ /cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
36
+ /Tj { show currentpoint cairo_store_point } bind def
37
+ /TJ {
38
+ {
39
+ dup
40
+ type /stringtype eq
41
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
42
+ } forall
43
+ currentpoint cairo_store_point
44
+ } bind def
45
+ /cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
46
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
47
+ /Tf { pop /cairo_font exch def /cairo_font_matrix where
48
+ { pop cairo_selectfont } if } bind def
49
+ /Td { matrix translate cairo_font_matrix matrix concatmatrix dup
50
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
51
+ /cairo_font where { pop cairo_selectfont } if } bind def
52
+ /Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
53
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
54
+ /g { setgray } bind def
55
+ /rg { setrgbcolor } bind def
56
+ /d1 { setcachedevice } bind def
57
+ /cairo_data_source {
58
+ CairoDataIndex CairoData length lt
59
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
60
+ { () } ifelse
61
+ } def
62
+ /cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
63
+ /cairo_image { image cairo_flush_ascii85_file } def
64
+ /cairo_imagemask { imagemask cairo_flush_ascii85_file } def
65
+ %%EndProlog
66
+ %%BeginSetup
67
+ %%EndSetup
68
+ %%Page: 1 1
69
+ %%BeginPageSetup
70
+ %%PageBoundingBox: 26 0 101 23
71
+ %%EndPageSetup
72
+ q 26 0 75 23 rectclip
73
+ 1 0 0 -1 0 23 cm q
74
+ Q q
75
+ q
76
+ 0 0 128 23 re W n
77
+ [ 1 0 0 1 0 0 ] concat
78
+ q
79
+ Q q
80
+ 26.844 0 73.559 23 re W n
81
+ q
82
+ 26 0 75 23 re W n
83
+ [ 73.55944 0 0 -36.272412 26.844094 31.347163 ] concat
84
+ /cairo_ascii85_file currentfile /ASCII85Decode filter def
85
+ /DeviceRGB setcolorspace
86
+ <<
87
+ /ImageType 1
88
+ /Width 290
89
+ /Height 143
90
+ /Interpolate true
91
+ /BitsPerComponent 8
92
+ /Decode [ 0 1 0 1 0 1 ]
93
+ /DataSource cairo_ascii85_file /FlateDecode filter
94
+ /ImageMatrix [ 290 0 0 -143 0 143 ]
95
+ >>
96
+ cairo_image
97
+ Gb"/LH#shRQ0532]B>eHIEqIEFuD"LqokI"@O-W5Gtg>f5;L\Dds\kT#cYF3#I#pX!7/SAk
98
+ gKT(![JqG>p(;IIF6>X5XGjJ%2+Rb_JBj.==&+n870o:Hf&-OP/%2>4+?o<7B+")?bP@/qg
99
+ F]4Z=M(?,tjOT=gDS[OsNbe/6T8hac[rCQ7Q1EABBu\99q,3Z=M(?,tjOT=gDS[OsNbe/6T
100
+ 8hac[rC&"\0W;!RR&htQfPpker!O7CIN`I<7i43QYGq6i8K>uP(QfX,2RCI<o60VpqB@]8f
101
+ j&9s!C'2TZ7lmMm1l@mn%Le9l_^uTR(8RVC'IY<bD]>&m*Z=N2m6ioY\&2.A.IZ?1<(BGi,
102
+ ]EB]IE?[`.auoaQYhItRMCi!-b9mcHL'7kp#(j&\RSWTCWPR)C57P?h)]8..V$UZ=./LD[_
103
+ 31Y0E7/Eo;S<^e87Oq.$kRIFU49VkDp@hHNq;tXlgO[%h=q*PrB]<.iH0"4f0#)%QhtE1I4
104
+ 9kJhrF'ah'm0qecO+Ef81%O6>7&or36*QZ*MQn_ah#L>CT)B?+PiJAML8lJ"Zr`\6eCI&m,
105
+ fN6>3VkM[<\f\+G<8oOOf.&A+6-dQD=EYk5=I@GB-?o+g#SLSiLBIg]pV9HgKn[o`]KTgkQ
106
+ e&:k%$%j4mScm*W5Cd\<T]HVN"_eZW]/BmYM>D-/U)A3kCH5P5EEIIKsh=2G@/-`@*7/UbL
107
+ $\)@$0P)ea0etUgq]uYd74t_Z34-JpbDCG=+F$gXQG0B[8I8,hc!=;=7;6r\=2^KsU^S#hY
108
+ O+]i`PAgi=;]$.%fGQE&aTpOemaB571sS_+tf$D"1]"@#5FA)!obeVL_^W,JC++J2>Zk@TG
109
+ pYq;rqr(AEh94gmcOC<D:.?(3lGjeZjVupqcpG:qn[:0BEI+pioFKZ5CaJP)#hcVStuW*oC
110
+ ;FjMS]/"qV0[]"e?>q1XLa]<q2LoM>-Z$)iY6C!<qpl)R*5130.Z#@g<&Q0QoJQH8f*Cnb\
111
+ ep6R`E.*8p1,uK8b8M5b4$AgJe/3o!U(_q#U*G&Q>K54k*YfoIXk3(bo(tRHuO?RI+Y`2bj
112
+ oVEoQ*(;;8*D252mc;M,Xo>-\c+QdMc]39]`GfJ+Rq2H#aI)/4QtOOnB?AoSOi7:bLApVmB
113
+ b.+8NG=nT:r?H<g6mRI>U227'%c;o%8Db8G'5r#.s1R?T+;Kk!drtH>i9:Kc>gNtO4#QG*;
114
+ [Bf0kT[N6Cr4HWBW[I4*^Gbn,k2^g=Mn+:Q`1BA9p)#(/5EkKZG)']JK6b#.3RLZ-SN:LcB
115
+ V&F)2BA5Q1o*1B+.b%RLTKN!rb(h?_1P2@L_ATaWN4BE01WBZSA%3[`(B6[E>hS+A]PGVnc
116
+ f-b!XNb>0lYMMmBa-e:;I7ZrI$3CPZu@%`u294n3cb`$P^!MFm27_dl?I[5qA`YnX^gAk>=
117
+ l\l"'r=%(4qK[o`G/,2p8#610eH.++Cg?1Y(HMHYAID<Z6_M[KS<nN:,4gX%&=`:<XVp3>9
118
+ \2@2oO-FtP,6Ji1>(i-pQao+.O:94OJU?8;%+n1-H._-r+M68mECT169fJ0]Vod;(b`eoYq
119
+ Mj8a;86!A,3QDG%65*q<LV5>Us?b=ij#p#?O,&A"eh(Ho-J#o3H:+K*IFJN]5PnT\Z'u!78
120
+ <S'7-VP6+<C29:pdpO03HF?QcBRPN@GPAV6M,Z(rY2'Le5&BJO3C8U6''rJ\N.k?JE`0$&g
121
+ CTAcLh?_T=USJ7'EgK=)dlUlnLJ>FZ&I0hMFMTDmH`=%0HYZfhc`/)'bpk93eIP?,_d`Y2U
122
+ CfoI31WZtlmc?RZh,<m<>L&BXK9R**(irf/nRJld?_!C6af9#uj^<;c5dGbkj(3k1`&Ph4q
123
+ C1T"#d2Q.83f=riZ`,J5BD^FhQANdp$%T(0U-KZ;)n*8G'iE;Bko'O(l]+M`@TrIL`k%[\E
124
+ K^m5nOmnBM:'h66f$[^rl^hrbSKZVK6gUH[Rrc!mBr/nG.M'4qZMF,tec#KY(BVk$hL%8QE
125
+ -%)GSAK8SJT9)+.FmP@ZK:,(S<2O;Q*H+#=4bJW"5QS>.5DS,2TA+26XcF]IUCMVrl%$aiq
126
+ 5l:E,h>rOE]X]&s,_mC8u5L:lXj<?Z9E"QYp`b.O=EA9ZjAR.)3i+88GaMh;BGO'j*+&D!P
127
+ RZYUU/:CCVo;kTI>1.]^\m%CV<"=#m#.kV&SQ.D?$r@`,XG?nA0jYVgAdo@gHX-T0]_sX`B
128
+ Dq2EjVb+[29SC%R4`>s&q_lmTCrDUMtD1l*4/X%re=P9CW4L,>nk8jdbJ2a$h?'+(o$BJ/C
129
+ HD>!6ThY?-"2PEld@-:Wo8Dp6q;.=aFJo16F`dLF=J",`mm#VfE=KNKcppjY:;r+C(4&]8N
130
+ 9s''$KoTO`jJO(Y"J]R]oqefUoQmcTp8&t7%dPbIn&l-_M*$i&GlD3>Sdn_(S(2733aaNb-
131
+ Kcb.^*Hl%F:k!l$jJ$&l%$dTt9AR&]WSEl]k+_S+&oqkDt,[[T/!DA`mBOZC9l_TZa\t>2O
132
+ BX_F^WIQj^Mhj"kQ5)."dXbr^?tXI9RIV#ugIj,WN;N:t?0g-34C:[5832r;_8m/B:`L7ec
133
+ 3+A/K.#?4n=`N468Ij37XZss#)nL6N#ZCfAg&h>"qkDUl't5gAs&)k;;T9UAoWJ#h0,)8h3
134
+ iKn,![\om4UaAF/kgT.\C`2Sd(4095,paNM)Ui++um`&1`tuZm`XRB)eR"lT1:3<tV"Va=[
135
+ kW0nOU<fI2.=,RgC=;6XSQjTM]5P^B6TN\tFjO$MCK>_01:e(da*anb%NWF9nRAEf""kk"I
136
+ K4soTF8ZH8#@\aq32%Z+s_$jlt0h)8f:bQ&L[%$n#J;Y:+If@O5)(PXA(M,Zr;%CRVI%g(e
137
+ 5H07%k6HkX"S8VcQAGuL6_s7]gl`cAQGtpQU!/`<cV5YIZCTHIjO:)GpW4=s8'At)4W$6;I
138
+ ?i:jFfJnBFf\dRN%>l,)QAO8b!@\="dC/`>7p0RM^EM;7U%'kF$)\[K8g9?4TX6^[$L"b*h
139
+ (+QAP"3aRMBj2*d$%j;W]>2nH`>@:%8t:QsRe7+.SYuatDh>NbNuk2B,Z&p.TLEg!aPfW?k
140
+ 30)tai1#b,AF8?t9'W\P@#=B0HB`K/C6;%\_FX:1@L;Do(_7TMphBhTNdrN!$Ue\U6(qA'*
141
+ B.0l@o"%(7>NB\lTEE[JVKS:[j,#>c^#k^D7^t>Z7iKa+L@OU8rRI7JN-o#&R,M`-8-JS?<
142
+ ZI:_b^%'4qHUF2Lm%Y#fZ6`3M"JbJR'i'?5a?FK,"6us:+fhIoJ(8i(G8IF(T#"*nT_CS*(
143
+ ]i^WnUu:a"dQl2W!iM,?;J=rCeWg@0l*57@sS3iJni&]\rXLeVse-HB[XBPgF?(dcY82!8I
144
+ 0)-&M]:,WPaF#D7!L^lW4%AXF?&mAW2tp3#.&LcrS(-ek0Dnkb#FrScaeJqB!*`m)48HdZu
145
+ 7f7hr68dn$tdGq,E0X.ef_#U'e`V`:>#I/lN"7[>,bB9ViOW*?UMc'b@Xcaf55&F_H^IS=f
146
+ K@VhN+g*W#iQ+mfXT$Q2>dR:&r2LidGm:U0;Nn5@6Z+'\5Hl#X.d_FW+dgLHtIpP2_cmu&D
147
+ ?e'!;4%W44QY2-I4S9TiHgFp!\%RRpaI(E]>7H@JD/!kEg2`pZD:H#$f<u_^hK_[5**+[b4
148
+ Pj#52<?3O:#S\9q*o!.6`sP$)Ud3a;0VffVF/D4*bql?GT7L/A)4sZ=F8&u1b`m:E;r$m%4
149
+ YV0gcO80n[MMW>RVdaAg$;K9O\u0?t#pnW:GKf/s\[q<lU<HT9-OSbM;c>@!GKa<+qGu,<g
150
+ \9X[]t-+nbY_H's*#o5tpM9$IC]$\6Ooq!G:5L\Hb*(bP+Hb]1KUac.1`[9;R*Y&c&4mEBa
151
+ )Q^uED:M'[NglKoUq!s8gZS<p6*UKNWq!pIY=9_>fFlG_u.'/WRfPK1h)MiSNaaF!!\2Xnc
152
+ W;5N-a"n'pS@J'FN8c568fl/()N[u&)["M)N``m/kW*7Edp^GN5Fu32la";(<5@;M"h;rmC
153
+ B[ROQIkZugH2QKDqG@l(c=F8`$aS#1l9/Ii-OU31,MDYPM#kkDW8mlk,t][YVl1q&iGESbR
154
+ ]Z8P(e2@Nsf%$$6#C?bqCB"Ze8V^g$Q$*h4a3'CiOGd`F$Yr4dfU^m?Y;&B5Qsk938aC>T=
155
+ A>l>rnmX*_)Giag(XGBG`F1RM-3UZnNlh.4UYWa_6EOW!b?i3"'\]^s@BbGU$$+=,Z2%B@,
156
+ qEQ!h[\l\H'&pA_,=OG3o(.4MYF!n@6aVb2Ul<C4-%h)AXh=0=8\L`b\()fGU:<2"JbILA<
157
+ c9l5ton+6V9TH!4.j&<Z6O14t3pD3nm(@cLH9Qq=FX6sCSHRN[i[6p^Zcj8D]fR,kc!d[Hc
158
+ uIW:6F]8s9&Q6fjM[lWQ;JKD-6Z#io0/;A=S8qTV=r85EK[Mpn6SYB@347[EZFRA&s?Ak:*
159
+ i93"^LTM8Z^[E@'^8M5X:u.Z\3:-`8p[8[s$W<-#,(:7T/br_hMKj`o.T%(LG3:a/^A.-fT
160
+ ZrRU+p22&G[PAY4K)6cCch-Tf+OSc7g2erf!aODj#>\VB&nQE5@hX<-S+_fcHf*[GT]$t\P
161
+ *k`7?SFUDVMp+V[\;(=FP;aF@,V-ZFsSA'NC&:T_ip%7H<&rfMK%&qBt/(Q.69@08%l&A@8
162
+ '&q/V]4XT=S*?Z80b:B.kGFC5=ThRp8S6K".HK]'[r)+g_tVN^ITT1VPRBU<^,gb/kY([S;
163
+ oH.W>mpKMm!O)-Kl:#7lappONcJrs]%/dj6UHf@$IF8LP.2&gpkar`^6E[?m)c.-15Z5o\S
164
+ VB+/YYc.)?t0DAmfK4H/n%F\a]##U>k82%S^BE,FPkQ_9q72is6EQ&6%pBPmgHhgtcF)aUi
165
+ uF4a3mmq/eq$?>%n)52b?f"H*]1HV(;Y/.W1Y`MXR5?6Vl])\#,Bfnk]oeb>8<.047fF18;
166
+ 4RpRA?A),UeU/q;]lXC?ultJ<7<sk0PjY9VD$u">?DEDtdn7`"2oIqin8rk[^qm:`p$OAu#
167
+ c*+d)mA>sjc*?)g%El=ca44BI(T[WA!J8"&F+0Y;I1i>JUmGr[S_?bM]A9f!d*&T:6s^'G4
168
+ .el$ZB1E\:F.A87ib5I+/c`XX7P1P:qeVs@JIqWi:A6``ML/'E?le9\IgP/g2c8A_9dQ*];
169
+ uu[i?&=`]J!tJ-m![BrqXLn"]Q7In[UATMH(e-on,$B:Jl/Q]uc3smHhFPNh6bo'!E;$7:k
170
+ ?1-,'NS6G3=KN[#.0q-?;H?3McRo5d^E5Y.(0)Y`fDTrAV`6RFL,'Q;6X,pcR*i8$\X$jhI
171
+ E0q>l7isj(3+Pt*/AQ7XO7pb!@j^cUYZ?d)QZIPn9Ok#)8SUn_XoJ3f7Qa-%@Pqg&1>oY]Q
172
+ :da:O#X#,\:39_Q%3Cl,"t12Fk:dhfH]5"Yq3>CXB7jWKN0jb2nj2$/7O8dn`B=;GpUnMT0
173
+ _8ikB"hM[&nC)]A7oP\rp#]HUhpH!T'is\,+&#(&p&7kC0h<_nTtn%-$.k%S&!$;-K)kdTl
174
+ ioSA*Jo]7I(GMQS6F85u?Y$3Xi%KAOg<Pl-P:E93WfN>4Hp2gYdA^9EO`AWRh<nK]'<Gh\4
175
+ $!N[0i"pi;+LGOX;6(kU\^;Re=`*/':[8RtAdP9>4dKE1R,cM[nTEG+7=4mGJ#<2>c\T/O*
176
+ J'?:LAV?TjJQ;l*cR8PAC!7'LhGjBTjMT=1=jL`K^Ge[[!-@e(Fs-YUIBE/i":/riTA20lp
177
+ &3A)r0<:$Xjj=qBZ1afhP`u5!L2UnD@gAoRH$*GIChFU;P5mR?fFt1(ZZ/dqq9)+9Auu)i;
178
+ t*ZeNZmoshF1i>`eEg^Jm"T\@HA]UR.]K=(-.e>HJ+F>W5E?1m)HO&\bZ"V+7&9(?S.NRP(
179
+ qE0YRiaEIGYaaf8b&[KZEE+@n#i&<l-6hiNsY+SIkI_\.h,]_p0XY(<NF0?'G'[+ADL*Q[r
180
+ s\gr32Ao4OoijgC8$,tWJ-`1j'MUG8#f6/X@jLkpZIYQLUFe%n=XfTbD:S\>l/A\iQ##@nu
181
+ Vq,1Z(]-(U#Ca@C[B%TBD:;&#=q7Z>;EFlmll/L#6Y"?A%a]]5i!DTdFHsmRrpd.I4#TG"H
182
+ !%Em2%8L[SrF"N\Z@X'MhSieTeJXYW/0:2U\;FI)W`N0&fp,p5^KO05,GsJ?l]Wu.^TJ(2s
183
+ 0dl4E+mslb9]VCfp*Ot+WD8$eELZq0t&h&7r&>)Uh$^>[1H%"Nn=&P=NK:-h>!YB@Mft<5p
184
+ ueS>U\S]8Q+.9%o?7)/A2rJ7^L.Tli-^)H;S$^Te2uLM,?q(T8!'-VFJ#Sk:\VW;82(PA7]
185
+ 'i_Oq^.3iS8fPF-V@,cm$rneA&pna0E@<De2]UGaurA:UfR_ZE3Y:he4/!KBZC0#&39Y6'-
186
+ oMQsIbiaB];(g"Pu^YthbG$dh$IcSE@0R!pC=UZ36qEu2>(m0qPI,2V\_!;:On*pEW]\,UE
187
+ -=`o]it"r7ed[6:_/eL((O8.Q#Gk7G62_l(;6i.I'Zi?6*T1=#*S?bX?b3+uCH7bh#("tUC
188
+ #i5?3B>VQRGf@4-B\6?$'eli/t6$ZK&TRh3#>\U10_#GQ?+d`$a<B^?Q=D/]TIEIpC[&5;5
189
+ R:m<Iu6H_0M<^7hU2;m=]BTCB!MbofM+-CC[c&+)8"3dlOXJX#hXu#h"[,\\dd$.a<JlrZ/
190
+ [k8_dCC8r;a09n%f/3#;t!I@b3iE;Jd4Y:nX,d+AJFK_rX7H2U3L$i93t.GaUCHW;rlXf?j
191
+ pUY&;2#uAX3_IT534m7nj3lY+#rXfKpeS+euX((op)>_OrT@i@+c(scP$f7kQd95*cUSkqO
192
+ p4cjH&"QPDYb+"r\0XPV@+P/p!(1G8q$kSf1)VhBU#.3-A$RP%G-=,d;,cKFl)s\>lc'MP@
193
+ >4]dZWRbDN?BsIaDaBt4$4tWhur%`SJR(=V%pf7Oa$;`gAaRN[44?c`cbr$i;PLO_O-])QR
194
+ MK[peZ;BcQp3YYPGt2`YCH*`I2i4giS9^\==dWSHsubp9LA.o9L9NB4$Xjr-B*)>0-1AU?n
195
+ !.>@SVlESGj2a<g-]og-V"3MBSR'G"nn4?'jkj#A%KjSG`o/$a1<;ob[jjkZ[Hk`5%#l+<R
196
+ h-`[IrT[jMqCSL^fAH9L^_HI\c;bn"JUf[QS@GWNk.BeMnlKGfFL/#V4OZ88[*i>JMLlBTr
197
+ j%#p:nT3?gomEtFJ\_VklK>lr>b^'+02I)`)g`rq9=ZH*@^L*Ob@<bs!A@(n#:;I_g:$\J-
198
+ ?h]Us),`@DdXb#2b,R4LmbOj:LAd@l6.TS>a-#4\.fcjr4BJQU'H]68nA^):]S+Y=YL^HU^
199
+ S&;KL:%O`LN3XRT4=+FI;W;NINmrSKfB-R/8F'b)3/HiEua7P-N\P6S#QrgJtc;,ogkkPIZ
200
+ l0C].!XN2<*U$^%],^1jPS`lt(b>k#)8r'^:;q";]5mm^:f@_=6-_$**i#A*f(V!oKoTC22
201
+ Jpc:(hXGgVS1"?0TnLkVVE0k/'_)?EV/g42AG_ij)3u'XNi:`0]]FUbH`(9gmkJ]Dbj:r3V
202
+ k.`W\j>Yg?],fRl?Zmn,@m<^^+\1#'iAC,Q7+0Vo.Hohk:YsD<7$%BLq+(,UGfJ-u4B(!\%
203
+ "gg4hVlI%$:!5U#0(ZYrARj^4`HYU0nGb(7$i<RIl61#qk:<rMfC)c*AR*D[2[U8MV75`J-
204
+ hEGHoeF37ejO(?M7T8LJM<LlhD03*)k9CA"YcR-'^56J-er-Wa?$Mg.*D?<DP4eMpfRTG2n
205
+ BD[JN\dqL:aP1a$SY+Lc[$gUHhXf(GRUX!]iNHLJckk]fTFBC7G8Y*+AS!9Y!gab92fj]>#
206
+ cmdX)pNCY/oSERV]MLd9Vq8I.*0]q0,hPu>^>ds+TSG2/)QbNFMVm8;)a<sp-$/fC=P(..S
207
+ e?ororS(-:n+'00%/2TN4<nZXChRr[N'T4tS8c8:o1GjIPahD7dPd9<gihh\V3abd6.f\i\
208
+ 2u`M]F.Z+V+hIPjMR:t:IXWHVk!'FmoCb[)#Z(/U"Dqk->@C=g]S4V&YE%TYa69G0Dqk6F<
209
+ (5_S;/RK2'E.]$%9pO1/e/FaMC1!?!=E+G]&8#lA4cP!G2e-NaTNZRNG%"%HOAs(*qZ?0<>
210
+ (4Pt`NOL&D7QYQl5XF9@`$P:Q>HPi=D-3_uW<T_3Y&$8ZR@,HB@=mOFPj?Cb;<)YqbmM%W-
211
+ g>XdK)aDsn]TdVa(SGD<VB"[qY?-#/jbrM&Kq.7@qJ<t\SNkF^ngK(GCR=PTkhgg3q2jUR%
212
+ ]W9-U8+F^)bcMZ7LU*Lk428/)JVJXJ>4r%gR?4kQH3LK)+>u&J3Qd'?Db/%-p@F_c)4jRB_
213
+ 89*oki!Q@L"rNANY.W!>W+$_6Ocb9A*G>H_;Seo)o`+'!RS8B-Fe&gPU25,;*u8O_fo5Q"o
214
+ 4k>W+^3a/4%V[de=@^e3EbNqO)1OP3Qan^us#,^+K/mhU/@%C:u^aJOU*<N4j"#();t.iZo
215
+ AB>\;]<\$Aa<,;7BHie(6J9=l$Ij9`UE&:e9]<%%/'^,g$6Qce+8J=Xq)odC*'B="-%.1U/
216
+ 6b93o#h1HAo`$d:nEu/>T0PHZte"t/:A=*F]$6&YZl%O[@ad)RI)4V6^@rq);@m4jrZ%IDQ
217
+ +'Vs0Yo'KOhUV/H&sB'$08\#BTZ/L2MJlaUW_po/4.)6mV/nZr4oTUY#`C>a[Hsda1YVGc^
218
+ frllKPADZi)b6Z?'P>hV]Jnl>$jF[oYT&U5Pi(B%pKihA49Ms#Vi`UEAV9G'^I6-(?VkD6]
219
+ RIiTg$hZS9cAWUA43K)k-Rf2\k^E3p)O=+@$,qe$(ZX,)Ff`H@i"55DT(^B>HHE0uafgb4`
220
+ 32j[:;o7V9TNK&_ma1Otfd+8)`Ns47E\L(RHb1bZJl[Y:10])!h'&4c0&[aTm5"1p\J"*)9
221
+ 'AOB?VYM\EMIN`pG,OK*kb+6[LrHk2=p^5IJIGtKl1<l*:Be,Y`Ra2*)JmNJ0P^"aSjA+=S
222
+ $q7gtp*gA"$Id1]SC';IF0/";K<RTu@82n>?-.?cpsd@4(9!NUDdtuA!VV=IBqHaRlee%\Y
223
+ X6VMbH-UV;:U<G6X;9eZC$$X)PF2(gcfIp`P@c6aIp]686qEJ+J<$(;HK3']J]"S@/pd.g/
224
+ 7Ah!(PTuFo;PMM^`IU&lP@q(\A^5\B$h&5L3UYS+?9n:fpZ9);Jo[=2T^27ppaQP1,FGq$u
225
+ V"+&=-e-]tRloi.5Rd'XP`WGTV=G7\JYho]WG\.mUr69I)b)q,-4p+q3^"E(!#Z,G9N?XNB
226
+ <q#\8bBLgkF97Sehe\d4Y>PZI"5`YUbmOX!7s3B\W4'7IND2@bF.UFkuq-J#CcMHWO@;/C)
227
+ a9^/Q;AlQ(">Z<k(gfpa2J33bOsoI(`4JXE8u4ZGq/EHBhjKXEDn0+RPYiM4@r6`IfDlp$A
228
+ ]:Z_N3b!pm@hPlRXW2?<4oogEi%WLc:`Nbs382Kc#G`@fNH;.=PnHV]`@c9A$WAOrb`A7F!
229
+ <g*jI"9TQ?%0s1Q:,^>Pd<=:Kmg.1Ich7qP`j6J"(u,LmIrIoL]3=]A1,SHJLnKA^ke!W);
230
+ bpjR"M_K,21#+q=3cPj&4G`ZhL/Y6_+`#fPPd*8,GVkhUT]dt:/Y86?Xl=B[BN,GfN011$:
231
+ ;?<M]kN>?eD`h!V;:0n]d"rrW!0E_ei0BOj-fT"OA#T;0LT-3nXZ\O'/>e0$RMDaK0QF[pb
232
+ ]^F5&HbUtDqaeZTl=dJH&DHa-n7^btL-&d[Ym@ULSm40ME\#O&&]14QFH,cGB(nP,&kMR*=
233
+ a9LBmj1fKR$6XFneuBQ*a`5D'l4%aL#5_Z'8D7uWS"6=*T90iroqPS;47`KCuiJi7m<(plJ
234
+ [fQh%LZ^Z6PR'O!_C-9k=6Z)?BXYTC+dd(?(H"Jj#oM_'0Vj2jP+c0a9$S1>PYs=h)k,ns#
235
+ Qtf@M#b36FoN'[Z<7DUra"bc:#TqR90:c)eubD\N4/f\Y)+:A$%7%#'ZGd$P></^0/F8oBm
236
+ \O-0Uf4KkYIQa\emj/s&dSLXMhohZCjs$]M<cj+`S&f-PnVaZ9hC>h6aadY#j]$;Fr@?_Cu
237
+ bapAC@!GS&juY$8M&8Dk&MuCAA-Nps&!<jNe)n(pBHnFYLcq'3ea\ZXb06d=;G*\'p`)7eG
238
+ qC6DIC1^0HIU+YohAt0J@/78XrBl+@N=DqLXSdeVISoR^+SHp?Z-PPK5=BGZ/oG2&*:tbM8
239
+ =iK]'+qm,FNQLlUs-,4"\58QWIWQRaW30WJ%ke,s,&QAP"F']`6i(`,`(Hc%(1Q;;lk(<-&
240
+ S2K(+I3cmN=EN78U15"cV7CKq3[+&$HCiVm^9eHUG6pl[Ka3aFMH0+MQ2j'0r1p*8^\*\;E
241
+ ?e]bgbZ6Ij"!MDF^,L$m?ZZI<Op/HV\obQ'GkL%]2nY,<\6?;d&goSgqqFpC796hhuP%s:o
242
+ V1uC>GQ)e9)d$K_nq-]brMsjOA4AQq_gSgOG=^RphjX5h2h@OEId94n?H-G=4t.?`.0=Qse
243
+ k\g.0^-[lWYWog9&`,B#TS*rrZIk/EqP![_^+gf"/3ksa\lumLPfEu1VX>He*Z2kO&'(q7e
244
+ t14q,A^b"U("fYACe!0^T_\Dk5LJ*"X.NP;fnXagTS4N7sRnA.+&Y_oBmlQFIVDlc%,ZY"8
245
+ !@2%!5&b:%q]%)1%(6"Kl]RIqe*i+pSF%Q]P_XC@kG>U`%)NJ`r4<P.RZJW#Q(J9o<33S8l
246
+ "dlXbj&20m)5&;ei*:8j9OT_s9bGXs]Qt%!5d55k5g.dmKQic/+XOu*@/S<Wf6pt'EmVC;/
247
+ q?G*%UV6cqCjRqWj9%($X;f3j/A"B4Y@"3RZ*(CsOA$YChipA*hY+;(DSoZ\20TfX_W-59!
248
+ '*)Z=jT.4EbZABmHr@eE0Q'qB,/#%pX0H2>6pp"Qm7>2Nj!-_k;lL"%l:aj%&Dsmj:jd;_b
249
+ PGr=o?3s,k:"Ulk0#EF1LK_5UZJp;K@j"@+'ACnb@?T8_a'd0:%s<ac\Rf$gS$f),nZtBk'
250
+ O5@hnPi?/ia\oeJZK;n:H.I[[auX7IeL[a=Dgnp!rgA,o!E'Z2`*f#YciRL.,g.PK&Ij=qA
251
+ scZSkh#P8+fb#VG%rAEMBdmnh%esh^%f%.P#*6E.0B9;F2<MELuJ#;.#cmrNaH9;`:jl3"r
252
+ H(8;WXF5?dA)/7P(2jm*)&iE?d[l0qn$$Bh-+JoM,Y/FcAS-#YGi_AWEQEAk9G5Ar^K\81N
253
+ ]]Wt?RQ/g@#0@jB-f:$"1ZL3a,tWX&X!"d!7I,DP.@qC*eCCJ2rtUkXumsI#61Qak<E`$g`
254
+ uVs:5?C%)#n&b_G2tt/u%S4PVR>P"5EllotQhULmgImk[c6*KqT$m`CDq=>;5Qn3)L/^o,@
255
+ AH[S<n!n;u)b6uVh--^!k.]agP+ojo)A2JI>-fhgKtpKk4sjM!N^,W_f8iqaV5A,aBdl/]o
256
+ 2'#&Xrn)fb()SAJ!)I_!aS00nJlk6N3ar2#`BHkE2DEBG?[TlW3D*hnOah[%<+C0X3Y3>20
257
+ Z:"#R=J?nbkpUUNT7.toTolRI.Ti'/,SraRgjuV+EnGOBRS\`7JL`,dL'Dtgr?[NkHAA8S)
258
+ =Rmj!a&[E.XnHgX>rsf"R.Y@IMarD$9g=lPSn3"duLTs/?`J+3g]C4c.N;4SSnBuSi_D(O?
259
+ MT$?H?=rIUucF^V$`'-ODg]8mK,(2r@&R4+;%a4UjX"rSnEd,K)Q'qc;RCheYl.:6kgi^Lf
260
+ >l8"$Gb\`]XbC+;'&H&G_jBi1N513tF_mA`Zr=#FTd,r_GYA(KtUh0SS+;>-Y.7UD]T[\Fo
261
+ EJknB,iE`%u?-[1BUo9APOZ+9s;Z05V(CeI0:nr)/SM?#Xod.!F3<WF__;PH5YnseRWacn_
262
+ '@f<lKGCtFOL;jaI3pMP*Z_s-,VON)G4muW(Y%p*p'7;DlQW5(>R[*Y=-cr.B0^'p19'FA%
263
+ 26#mLmP[26_;<*TY;lG0YKAbA:+_V)%6Ih'Gb<2J)l5]Eb0_t^G[fD]i,6Zn,P*X<3+qZTo
264
+ R7/EVXpIS?45BLP0uW'NB,q"KTPXIFG/@!CL!Z/7(iCq5Do@Sd192fn@"0^,YH!Q<*gO8sh
265
+ ?UU?^n3..eD$8PGY4E+AYUos3RD&bleP1P`8hIGU@o)TmIST8l.H>%G7H_2o19bi`S-Y*W-
266
+ ONH/N/1oVIn)i?!phq"k(!?rD)`8o4HlR%[V<C0Z4"o^5ckm$!Yhl3P_$I6S6/*hSA\u1FB
267
+ W3n:*,J(4ljZd`C'k,;"AuVN_Nr#F*jj$ZL=b\I9/bu'.!S00*r($e,`I;DPj7cGVLAqM$(
268
+ JulC9ArL21M#;4\`IQO1aD*1)jaYfO#C/4W!OV_NQIAo;=B7a0*B?<LaBgMj_3R4!u_;BV,
269
+ iQtH]F`5S@NVU8Y!m:@27N4'!3aUS'hoN@fIOI8Zc6(r4\BXf3LCk'.9nj'2NRC)&bc7<HT
270
+ =[H6<S4*pf-3DS:F^"q%p5-u_bkWLJ)<(dj$0>H<88_M1j=I0o]g)4lR;1S^YA;)1$KLU&X
271
+ :M,YGTV9UUa0-N<t>!6SHg.q6?p7sk/:iJhgI<ouO.V10P$=lS1O*Z&kMRW%&+nu*k67XVC
272
+ F,388$YuG=FjQ8,6f4O&2QC9!9Gc/M7"U8^M9RDDM>6Ss]''5dfn8if\"C9'WUYfJb4Jm+`
273
+ d;aXZS2t5n%8_>Fk#Upjf&rtcNCTh6m3[H%;lcD9O4CerXshlMMil/ZD%K#OUZD71qpjZq-
274
+ k9j0,rNW:76ESoJM:O_/3^9Mcc##[dt;X/rqn_k]%#S<Aq7*B-L,nIBS$6'XJ<XC8["&Q"L
275
+ tH7[=[CagThuj&Hh0=f]=7p&T-qg0)5.35e'2"6jgVW:,o/o)>+X=EIO=/S3Un.\/%q<qYO
276
+ J?p^U?@-'sc)*!;>CT)@=LiQ:sj:4i\Ja:*%E:75=TRYlJHXIFdlj,hsY,LV\Wh(4)qZK_H
277
+ 6393ZDN7i1?Eu8!fH6jIi_W_t=5FM$r-]sZ@q<V.?:c!!YB=Zu10,h61HGPb<J/u3AHPNS;
278
+ pPAIbpLYb7.kpkIU"7L!Z0p^DF.?d\0&4<7TH]H`I)DAbP/quQ:%APqc'[I8X/%=Ed6#rks
279
+ a#S&lBa64V><fL3^N9Lb[Egj/d:XHK5n2]L%p%N>PbBaHr`_pb<SgFZ[JgEEfA"@EE!7K\-
280
+ 'VQQG=7<W7^Pas1)$\g"0[6=_N3LQt5`kY$dS4N\*/U8*FU?6j5`;c0Ot2$t/pJ`9bf]9Tc
281
+ Z"Y#^>pr2VsCJ.3EBjS?_KU0dK0>Y&O*aQbX11'ST7Dq&Gf8L#qX<&V3-!_B]2Z/alA2\>V
282
+ 2D&X[6o,s\(ctr8[U:b#ZUc/$$[hZ,.rSs1mA0FcN;d[35L2D%1lF=jF)]Sr0?f:@BM=rT.
283
+ 1[m;J5Sa;QB+!!SaXlEq+X].B"[g(]JmS7I*J'5QRq!6LIn=jm14p<K#T,TgV\+%';aWO+r
284
+ -:UQ[>Z.B+1JMR34%m*)h0Qr@+dQ+Y*5l6l=UE!W!G%m(m5H"D_ggc6^Lo5,a4\rTZqUS$3
285
+ >WI#:H,N=W!a^p3T$7PVK*Hp@+2pQ_D@*UNV9d:F/)AQWG\=e(EL8*d!%3gu0L1$%oE?_1W
286
+ EKa2;\G:OTOQe/rM;$4H;J2=pP!BM\pDHoU^m!LO+"]J<^aI&LLnuGlA3d0#>$7at8<j30S
287
+ :sc]grWLIap&Ou"=0'5!5$3s"2jS?W]TGq.`69df6JhN0$]E#SP_\AH*;RZSmj+":ARoM74
288
+ L)*@OXgW*GZpm%U?qKA)(FqE\P/7Lj&4qZOgW"Y3+D,UER3A\k:TUI."$n=77lAb4(`lY^;
289
+ (aT>jK5R'kbRC:DWU^HI(S-dO0&!d6jc,4H)$SmZdNk]k)1]dorfE=R@nT..\!'n5aAcL"t
290
+ eVZH14n'!h#.nMXXJ$t[+u;Z:JF,*l/oTY\%5n%'U!rmr7#2[c0KN$1>reen=/r;:,M(ou^
291
+ [,Y8]<P^+A?kCAKpr9^=]OsEZ$ZeS"cTSS;8fP$QZXhhis!ZcD*j%\TjindUZ/Jm:u&BUks
292
+ @J+IcS!:tRKNVT4.<#/J8R(OnX<^GRmpbJn%_g6S2r46s0&EX.(K!SegDcEXEn^YYa^5KSh
293
+ ,6(fRYX8jEK&$2`Jc^ISX5a<>W0HL[).8g`p;CK(Z[cGIKDI9*D/.AFepA=CIJ;>.-.BG%5
294
+ <.W4@jsn]8Qt4p0NkH9nFqFVA'Dr%')1/Ub"Y</3o\\@??fZOJV.h+s'+QXLdaVT*$`FYtX
295
+ V7\k\Km@KqoX;-*UUA6OP#.tN(VBk4AZrf"lN>^1OCKfa[fdS9K>-.'n%LZ7c3(1(U?)DC_
296
+ ]l+q"\D^(Mb#G`)kfY9Ds6u[N?U,sP.f\_Cc>J6lA"ifbOJ,K;)Ol)c'k+dG^i+OA^PtWWN
297
+ 1.n)`23cPg)clVJ0a!$OJi@GNVii3[DP&I28MKJ(1/)-_pC&eZ3/Wr`YJl4h\"2pZH1$ERn
298
+ aK0d!XJ&[VAJlY10,c0k61<UlE;()k.ZcY-_mSR<o.&'*<?D57hg4tp8P:-Ng/PaeH49DUq
299
+ #S,B58dfe-h*0`cO8C0tR0=Y@@cWLa21qno'Yj1r73fMBm4f9D$[EpImQHS@`niC@*[*M`n
300
+ HDl$aquIj@TaW_\!lXf73(WjXVZ7)!C%nQ:-uB.0PAcQr'7alCN&Rnk6_a$Uds[QkJo$m7P
301
+ tkBrfEeJ2f829&+re!/1lK0*,ZHLi(,Yj,Y)AD\L'De*n!$fYVVTWIRAXeU1M)g1t#i?^FH
302
+ <A%_!SqHtPJYI*<lNUm92UNbXnc^.2hcR=I#"N?%GJhV"JLJ_IHmo'fN\^5t.M%F\L\0%&5
303
+ #jVd33&\l71:rb<JnD;?#j!k'M!O%NGJ=c]_JTGJo7b+Ve6/g18[e()21-TT@M?.]G$1/U.
304
+ -(*rFFSTmS&D@=uW,+^S60QjD.-!%pKF/X;L9)m2KW;Id2ZnaKeF<'hh>1/[HmWgloPqgb"
305
+ ]-H3H2=fA2erRQlVUHG6aL%S`ZeLNtYg:]O+e91I@1Hkp^;:Tc2<?Ju+dl(bsMHH]0Ulme0
306
+ $%6u-UARnr'+3^\NV0s2`03u>L_RqFJDrtQh6`P_iI:%aMJ4tIFZLtMDIZgX:Xn&R@dWf^0
307
+ 1)3M,"%[f#@+(d`:c9GETeICP)+4A9JD'.2Y6Bp_5WJ,2l7",I^2J=i<:O;nJUh_rcBZOfQ
308
+ AT)u=S:/HNc/M^LhBU@Me?@$4`1elTm_%:qHZ--J4UG!BSS#WI(fe\?iG-9QcVi?=N>de03
309
+ I(Qhg/H$5a%X)P-]>'3R)32;&.s+:a6.F5aj')j#[_OU_N>'kO8:C`F`h.P"k)4i=_r"Sf,
310
+ Hkka9;UUno=7a^haA:FU'c0p2H2LNg!/r,:bX6?UM?>"UQNE"+4b>T0q_YC=2Lg4um')k'2
311
+ 3*?n1/@e-2ejQCPbhI^KijZ4lY]!h:!G#-.S'S[<.lT69#R41!*F@VQ5rZe,Y_!N24go&(]
312
+ fVATMd5opU]f1X)#02U]X1+fm9^/m8pJ<DidWYVqH*2TJcS+(^Nsn\E`ZOUnm^7YUP\oL+I
313
+ II+,/ndLbBPPA%`I"8Z2pV,)j;#/J#h`]MHf0an.H"Mpnm>/hGlLc".Dq&b5-Ul60s\N==a
314
+ ;R?#a%q1.:/u[/3"@/0i(h_P2W]?3r7-4M)$ub,aC;d8nG**Q9!W_4fOC,+bH(Y3q`%8&gN
315
+ Q3AMd=7r(pEaM\"4*6hN""nipd%!K?B-XAOI;-I6b=.q'Th!3n:,U[4iR"'UZJVhnMmACdd
316
+ pV.3%PZGQI!]RUjR.gb<t5<kWN,G`M/&*5^!e2NYhdA/k!/E6Zq0/UT?NA=g]%u(?$gW!7C
317
+ ]i/(SXhMJ$E2ftA8*-!>1Lf%sjs(bM;)":=TDQTtjY1)n*BX\UfQubFK)4UA9@o(%4CMe9o
318
+ D8,D)hkK7#sM53e4m%D'(^B3QG.#t>/@G>S"[<MX4WTCrWCM+lOP#:3IJ-@V&`n*eTk.s$=
319
+ :u"bJXT4J_`%UBZJEf8VW\oBo[J28On@U459\J7BTds.'"?OA</$.fru1!**/g>>b`Y`M]S
320
+ #QmB`I-Zn[06_E@DE6ARM13?s`u%6UQtMo+H6Ure!CGQ$H)>m@HSpmDhrIB$e>i;m,*Q1Lr
321
+ SahRk&1:<5)XsU^0+>,]R.Y*jG)5WTGce`C"_Wt_.)]tdfPaEi"VM'Z5;"^!"OF^u-G[JUs
322
+ -DL'/P)LHE-HEB:pL7VHD6=+++)@[Zp4G+a]W5^Yk/^3[lZdZ_5I*U+Sh(Q_2rJa@p,01>R
323
+ -$jDPGuF)RZK!N[*1Bi6q3_]dkNJkR?[h:$9AS3Em1kKq8dgNU-qlP+`8L_gfCp3H*IG"AN
324
+ A_7r6g,>Gt6inhT4<M"TD+[;o`pT#KuTdN3a.n5?J)-1AbEE@O+NJ:A2>\Rl@;VNK/r!V-8
325
+ )\Y([OnZM+Fj%r51MFp;i%LmQilS%3N#2s-=O\Kl/QCTc#;EgE^ld(XsVj#sd-eC/jEo"72
326
+ 9+1Tsf\,MCu(6BDLag?3#+Ng_*PVP22[,ZHkm112r\ln?CWii(K3d<7*`;-#k^6!4PX:Z/=
327
+ .f6+n0us0@W9KL%@^HFLfl(ZL0g1XqYHnB*6"EBPb-t7L&,aQ>/cIU=!)Jj.9$_B(c@Ubh$
328
+ )hRiK^]WfZNQ/$ZD=fu/Bg?^G3[H0i"2UA3Ro@r(<0&)p5TMAF$iD.nNFXS[Tm+YHuaKK'j
329
+ ;gibY#XG/!JX,4l8(kGCj;+02_4a-tW;sN(2hd,0c>,.T*uRjDS'$8,GKi=d;Ff$ic>7Aca
330
+ WD9$29+2Y8228K5Dq@3JSsOFH"FQB`T;g*C\+Ks$p3*"`n,-ZDS\s&p4N9#dp=7lJ-"U#U]
331
+ t7LGP51F9-ZL!k,8LX15:Ogk>IF!Rs;S\C]V_Ql3P]8C-!OA+_HUi<Xs:A.7GUDuLZ90q"\
332
+ Q(j#XpW@dGn"'eb2"E[oLXcT251u7c"po=)8p6,TMr3.+%!G3#Bf.!tqj?o^%iSeXc\fr6W
333
+ ?o-%j?pZkUk)(+9M"e@fj2/6aNTf>5EZ?bV+t\6@ho`6;/O_rDFCJA`hf%6'=t=(5%ZQ$mO
334
+ r?:a:m58Mg^Wnd<Q@'g[HaPq5H\r83006j?(K;oe3W$;WR<qAd.9XYllm`CdOUimPg!K):j
335
+ \ZGIlrEW?7"6Ma]FbWZPY0JgsVKNg)as-DW`Ffd)eN;R3/V*RK4=g)S=GG@mhDg-\B&b?YT
336
+ Ec=7_<,F33YhIHe3cA#m%50.F\3BWm1#fjj&T(Xst1E&k*s&6tjn=@h3$YGCrc?"iGOm/-K
337
+ hF98K%Bad'OIU'K[>%@,-W;Oi2snAT;FWCJnfj-3E4*e3=anCf1St6[Y'gP#hNqfd(abjkm
338
+ Mdn,]1C?/AXD9!%<s230PD>=jHglB0RJ.22][uWN9;PWC,<N8r-P1$9*:2'7]Okma?dfh7E
339
+ <&T=Tr"K`^u+9AY!)O,+Y`qCN,[Im_d6h6hpSTE]U5q:gmWceR4^;UK!5jI*sjjXl)6&kYV
340
+ YhCcZJpN6<*PfjeDi9NO\@_k*4XQ\k1Jn&%V>V<6Z*'%^*#/bsu-(QXc&s1f;m3'5#;7R".
341
+ VGq@&UM\9Oj1_^tZVf+fU+mfela(q@4%cF>Y7bMn#->u/t;`S=@jQN)2-s]LM;opnXA7-Y=
342
+ W?XLQJ,`lsPUU/:-?o/q11MPsYmu<Hj8^i;6aA1=>b#&"nF:3BY1@gopiPfugLUd.O5*R>>
343
+ a!miGp]oq\Wek1W:hWUBG)KJ#qFk68l.XIOm3Tp%^g<2M[YSQPN";ert?:KnM3:14dWWG:>
344
+ _//V^2u+l;WOtJ5ni8KV/6G=VFW=eL2@0/mc<lqQc+9[U>Vj.^UH]j"4b^j&IqD83`5d3lB
345
+ B\>E>2G=]F&#!quN,'^a+Zc$7\?@<+pn*8H9Va_*?T_pkp_q$h[sCUa9E@/_-D+[)D7bsB%
346
+ .*IF4$#S7q+.X7:KZe=)Ch7:9$7ckt/1,I!NOu@CEl#SWVNZlB/7S8<S2]RaUiI%Y;[FF:'
347
+ MKqYrp8HpgP6f\iSr7.":Oi5AoJ`>/CJ"L@K\4NAcA^"YqF3Df6e&L9^s8Io8sC06=5SjmM
348
+ 2OFTB">c>OXf]=beN2V:VafnFLUqd;q-Hj&a@`oRt_-0U^M^Zr+fVV::-#Lf,Zt'N<9A==c
349
+ iYnbZ!C8.A=FacTr!:*3)Fq+^(4jR%-]9YQG1pT!n5ceJ<U*_k?:o0IPLd4OhCGVQ)`rijI
350
+ J>C5B+:@TOX,JHoIO`m*p,,(3]bh8O.gjd.if=Ftsoq;b[[9QdB$GS$9F`(*-Fg2+F!La,N
351
+ R6N2e?YN/bo0mV0GW,t@op<<CC1i_Uu.J>1A4FWoHgXi.GLa>h%j,DDdd7e#.#.QZB)#uKP
352
+ KZ6KE4IP9SD7t&1."L?WP.A5r["M-gO&i$A=ErTs\p*p][q)i9.*gSB*aUX!5J4,i3[q3Zq
353
+ 6_JtP;?jX1V:Yp[4uF9#!a&o^<Xi'9<qV\fi?>Io)Db^&V$No^IC]foM9!36VdoPn_Ng@O/
354
+ J=l0>7/&ZkDRtO/FY2Bb<A-Ol"O@RoqRgJ1nYuY6'C9-RKR\eG!M-,1m*r"4j^G.QqN9Xo3
355
+ ,"+%n,=S&3(Yh&jfg)N\!QO-..Qjjs,#I?"0"iuO\Ep%sLrh#QWtqupT:`5p9WU>fbP^J>i
356
+ 2^).=[_4Em;J4V$j%JrT(Pk[p5n3@:cE/S3HQa8X;_U.)C;j<,nfA+sA@gn4`f"YG_I`7lo
357
+ hkLBZ7CVLffHR[pgX1.RCWiu,.iMa=?]A"<NQG(!:b?obE2hnm3"d.0FO)+U2(HKFW>?`Bp
358
+ D[dh5KKUS'8l`/*X=s2ei$"&Pf8gM__;?!NK)VI[Ep`XD>Nr^kGZh]V<LmU3Wom.4dmte_D
359
+ ;%dC'4oC=h?r*7UoU;D7dUV[L:]WP&7"fOj'rFAPS4@HRkNW5+/\4S\CENY'"d97nm2\16J
360
+ +J\_'>npZRg?Bul49n&`'.ZukZjNP`nnEaK:tSp=8ZNrsm3OBS9c<^?\MbVA*T\)3NMXa8&
361
+ OT"7\T_$pL,-gO$eD]f44:HEGPmg3<-F.tfF:Y-RM\Z,8ses6tR>#/sPBrc)2!rBE0O2X%A
362
+ ]"uUh]"H]YO]%6b=BaI*['o([/VfD;[[sF56%@SMQK*+C%eJ[?o$AFBE#"FfBCcHL^/A)0D
363
+ TmGSce)^OVHR:ian/MkAF7]G7=p)dN-WZ?A"9AKE3C-g/L?T+:N]#b!4:9(:)Z_<-_4'LEF
364
+ 7T6IV<kqB&&!;R>D7:87+5-BD;5hSRg,CG?u;X?Us8/OL^k&SB[^n!A>ZR2`nPhS@iuXr;]
365
+ <Q>tJ'T(fa&CrM%N"[MEkmRTE8aUjI-3BN<\>qN+jR8=^]9,rpiN_W7k@Tif3T98Otc\(`u
366
+ ]YO[jB4T])X$IMpp:$Q!^P7[_?R8;HG+J&=8!jN`ZMJ=gqgRH;rJMAD_l+Oc"+HTA>Bdu!L
367
+ \'jG3^@(Pr0=AA1?:&Y:,1\3("fs_b#*PM(S<pK,b=ToG_dd`<gY6qQGL-f_lPtSn:U8Ri6
368
+ aVkQUuiKCHr*P*,^0)pD`]DHGNUoJJd,jo".<@dk&(3+LA1h7jWQ]1$>!/f<.'#SDYp@Y9:
369
+ m/;';+X\*OdY`SaW<.#jcA-Zs+GC(;K>Mo!05oBds,-8Y(Tu=+IpDWD:j`O"XgL=7W.M,S6
370
+ taNaPg(3eHKaPtWGFMR1(%5*tum?bGN%m3Y72Ui77S%=$R=XgeAXjtLs:Es%i<Q:ucMQ*P+
371
+ >aL#]fC7?7fc21\MoYm!0`2T`m%R%CT<;jZ_)ba;P33-LZmKh`[$sAcSed-d9osLbEIJR_`
372
+ )`^SS5&ZA?e:F(XL>pG/#*[IqK3FAT;t+PbDM<SsFHVmT+:GX:;V6f2@_jrXTC]?l:s,<]2
373
+ (gG*)aRqTF4\2GJ@=M)<GJg7$Sb9bQ@*2)`M:`Q>Tt8e,K*X&\4_><9M@gSINfFGPI$trF3
374
+ q@V\7;UW>/B:^"/^+X*F$7ZL+UtG*B>DiqW;9a4lOAjmTZCFVoahP:@X@CU7J)N!j,k""$k
375
+ &5GOfM\A]W%[B\_O=NH#W"JW/rBFY0Wc>>RMmAEcCA[R1<bQWY0%ro+O<pb#](ONdMJ-[?X
376
+ $0>J8Q8X\eE7\HHhk4!LgiG1=*=ta/[?2?J:KN,nf^jVW]_,JRbjnasLpRWQZS&h=0ADp9]
377
+ ZBHip-;[aiLjBrEZNb&[!s3<LRdlg=@m+k;]_-0YerC]YR!pP0p*4NnajLts/=S`<f]DE*?
378
+ [1Q:V$F2r+Zh$5)1O?b+945`R4B.['ESib84;?eARi/+IsgJ^]4@Q?S$/Q^Qo.Q`V0g(8kj
379
+ &PWVk%r8aPm`Oin[H>59L>X!Q<cV%nY/lJ=*ZNLP'mjLl6E"qGHG$WC$d/lqM$QB'(c$5\@
380
+ *74F]e'TgddHbK)4t=:.]"Wii"kXiK-C_AS?>ZBjQ(+t;3n][+:AYb$Go/W!V!6CC[PM:j.
381
+ k-7N-kC@/IRk.R&IB?JMDQ(PYm(L#@/A_">l/'i>a*^B\krmPCNMd*cZ/GkM[g[-QKj"1#Q
382
+ =nD_t[,!=eknJX*/jtMXi^Ujfd<5a<#2?O\r`1D]T$6&C6K@DA(h#:Mr>SHY`JY%%HQ9nHO
383
+ W%iRdcWu$[\JSIBR'?\9'%j?XbTjqE`[ZW(,\-oW_(Jk18TLpaC4e(/7p'adc4<Cp!WHfWP
384
+ rC[.@L3"=h`Wr\W<iE"/;Hp@]okQbBK-bbmphAmib>naO1S!?Nc[k*+ca$!HGAT#Hiun]*l
385
+ 'B;MOP>_$+/2^P1`eEp(q5ZS2H69],&MqFJ>]iAIikU8>%-6(`#,G`u+p-``]l<Vsn\rQ_D
386
+ iZ>-#<nc1G?U0:e;e,bf(Q2C>C!)RKKDVtS2(P%DsbBB)GEWJW65XV6-98krO!>\_K'8=HC
387
+ D/MX&e'$)<_CbR#A2S.tqu2'/dC*TM.ns\5Cq+SX<$*Bdp-b/e+=gl1++TBQ3e4_E`K17Mb
388
+ 4[(+\ka^V\PW]n%=g*n(nLK1LpB$SAd!9H<do#e<k$Vp/H+[l:E(qA+B=4H`(T?DKMUhr"O
389
+ =#Z#8[)Uj^,e_mL.0p)VkS6P)i5g]EX-[=LiM<SCoc1bCP2.leN]db`\eU2gHm5\)llakP\
390
+ HB=iee[1"#Lk@]-RNUdrGP%bs""ET%CFac@nS?FIa;P]:$<ofk=Bnd!VePa8"GqFZr,N\Iu
391
+ 6n"sW")eWJ"/qS8d`C5Q?O_&n-T3etD/`)$i>>UC>*sK&#3\G):4o>V5/E(B.&u.=.=S`Ag
392
+ RK-ESfn'1_O.7M]/V#^ua?BZ3-B',B:G5*$#Ep!-W,NtBb:7\eG@$Pq-2El:nZ_X%6p+^\-
393
+ 0;O>]1KFQ6gI8,5"DP`#>"+9qoHrOnTM3G-^sQA2%9NK:K1:Lp3<!I7TNd$oTqhZC`O6u/;
394
+ aY53e,tf4bg7O.6!+=5J=/.d/eDk\=M+k3I`P1n#eH<eUq"d=o&LQ=UgaaT"jF=Sm]#*Ajd
395
+ ;FD7Hj3q4jE=b1u)QkZ1p8,[Ad-h?t`Q(NYE"G0hbQ'@WZVAH9WfNt5U^U8k5hDZOG6CIXm
396
+ R4)dLRd'^+4FNRn<aro9rE5Z2+#;.!*mde&%=d-1.&&qX%hnaQj*Zb@AQL"a1!ABA24dpKR
397
+ >j"g)(9/7"XD?&.f9!M&jolrtcof`qn`J1C(YnDuS^J9D7Tbf7bm\fTQ`\mL.#V9_N8RmN)
398
+ hT!Z*H8G-90@[;o;3!L%Vq79262=2ZLg"!?'L*DXeP?rEUnK9b*1j]>kmR";a3Ea)OBR[T7
399
+ :J1a_1AJkpQ?m/O+<!e[_`dpk,0_NI)2cr33J%JMl%`qRVe*0k$f,#,QmV2L_iq$=08rQd_
400
+ Y.:eqVJa#((f,O9n_ZLmf4@ifKt2J95@!WN`HH+ZE,9*HO4]2$96H&Vl2MTq<\Y8aIJBGO+
401
+ :lVm%^apecZ>W.j_A(]j",Ekshd1nf%,l=-:dupQB4;)[B:B3HgP+F/l.Bk#]/fNiO<#OEj
402
+ g[dRCC15])BZZD`99q,3Z=M(?,tjOT=gDS[OsNbe/6T8hac[rCQ7Q1EABBu\99q,3Z=M(?,
403
+ tjOT=gDS[OsNbe/6T8hac[rCQ7Q1EABBu\99q,3Z=M(?,tjOT=gDS[OsNbe/6T8hac[rCQ7
404
+ Q1EABBu\99q,3Z=N4c7fOQD0Dh:~>
405
+ Q
406
+ Q
407
+ Q
408
+ Q Q
409
+ showpage
410
+ %%Trailer
411
+ end
412
+ %%EOF
@@ -1,7 +1,9 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
+
2
3
  module Brcobranca
3
4
  module Boleto
4
- class Cecred < Base # Cecred
5
+ # Ailos
6
+ class Ailos < Base
5
7
  validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
6
8
  validates_length_of :conta_corrente, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
7
9
  validates_length_of :carteira, is: 2, message: 'deve ser menor ou igual a 2 dígitos.'
@@ -9,12 +11,12 @@ module Brcobranca
9
11
 
10
12
  validates_length_of :nosso_numero, maximum: 9, message: 'deve ser menor ou igual a 9 dígitos.'
11
13
 
12
- # Nova instancia do Cecred
14
+ # Nova instancia do Ailos
13
15
  # @param (see Brcobranca::Boleto::Base#initialize)
14
16
  def initialize(campos = {})
15
17
  campos = {
16
18
  carteira: '1',
17
- local_pagamento: 'PAGÁVEL PREFERENCIALMENTE NAS COOPERATIVAS DO SISTEMA CECRED'
19
+ local_pagamento: 'Pagar preferencialmente nas cooperativas do Sistema AILOS.'
18
20
  }.merge!(campos)
19
21
  super(campos)
20
22
  end
@@ -29,7 +31,7 @@ module Brcobranca
29
31
  # Dígito verificador do banco
30
32
  # @return [Integer] 1 caracteres numéricos.
31
33
  def banco_dv
32
- "1"
34
+ '1'
33
35
  end
34
36
 
35
37
  # Dígito verificador da conta corrente
@@ -1,8 +1,9 @@
1
- # -*- encoding: utf-8 -*-
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  module Brcobranca
4
4
  module Boleto
5
- class BancoBrasil < Base # Banco do Brasil
5
+ # Banco do Brasil
6
+ class BancoBrasil < Base
6
7
  validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
7
8
  validates_length_of :conta_corrente, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
8
9
  validates_length_of :carteira, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.'
@@ -103,7 +104,7 @@ module Brcobranca
103
104
  codigo_servico ? 17 : 5
104
105
  else
105
106
  raise Brcobranca::NaoImplementado, 'Tipo de convênio não implementado.'
106
- end
107
+ end
107
108
  quantidade ? @nosso_numero.to_s.rjust(quantidade, '0') : @nosso_numero
108
109
  end
109
110
 
@@ -145,7 +146,10 @@ module Brcobranca
145
146
  "#{convenio}#{nosso_numero}#{agencia}#{conta_corrente}#{carteira}"
146
147
  else
147
148
  # Nosso Número de 17 dígitos com Convenio de 6 dígitos e sem nosso_numero, carteira 16 e 18
148
- raise "Só é permitido emitir boletos com nosso número de 17 dígitos com carteiras 16 ou 18. Sua carteira atual é #{carteira}" unless %w(16 18).include?(carteira)
149
+ raise "Só é permitido emitir boletos com nosso número de 17 dígitos com carteiras 16 ou 18. Sua carteira atual é #{carteira}" unless %w[
150
+ 16 18
151
+ ].include?(carteira)
152
+
149
153
  "#{convenio}#{nosso_numero}21"
150
154
  end
151
155
  when 4 # Nosso Número de 7 dígitos com Convenio de 4 dígitos e sem nosso_numero
@@ -1,9 +1,9 @@
1
- # -*- encoding: utf-8 -*-
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  module Brcobranca
4
4
  module Boleto
5
- class BancoBrasilia < Base # Banco Brasilia
6
-
5
+ # Banco Brasilia
6
+ class BancoBrasilia < Base
7
7
  # <b>OPCIONAL</b>: Incremento do Campo Livre do Nosso Número
8
8
  attr_accessor :nosso_numero_incremento
9
9
 
@@ -61,7 +61,7 @@ module Brcobranca
61
61
  # Nosso número boleto
62
62
  # @return [String]
63
63
  def nosso_numero_boleto
64
- "#{carteira}#{nosso_numero}070#{codigo_barras_segunda_parte[-2..-1]}"
64
+ "#{carteira}#{nosso_numero}070#{codigo_barras_segunda_parte[-2..]}"
65
65
  end
66
66
 
67
67
  # Número da agência/código cedente do cliente para exibir no boleto.
@@ -1,8 +1,9 @@
1
- # -*- encoding: utf-8 -*-
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  module Brcobranca
4
4
  module Boleto
5
- class BancoNordeste < Base # Banco do Nordeste
5
+ # Banco do Nordeste
6
+ class BancoNordeste < Base
6
7
  # <b>REQUERIDO</b>: digito verificador da conta corrente
7
8
  attr_accessor :digito_conta_corrente
8
9
 
@@ -1,8 +1,9 @@
1
- # -*- encoding: utf-8 -*-
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  module Brcobranca
4
4
  module Boleto
5
- class Banestes < Base # Banestes
5
+ # Banestes
6
+ class Banestes < Base
6
7
  # <b>REQUERIDO</b>: digito verificador da conta corrente
7
8
  attr_accessor :digito_conta_corrente
8
9
 
@@ -1,8 +1,9 @@
1
- # -*- encoding: utf-8 -*-
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  module Brcobranca
4
4
  module Boleto
5
- class Banrisul < Base # Banrisul
5
+ # Banrisul
6
+ class Banrisul < Base
6
7
  # <b>REQUERIDO</b>: digito verificador do convenio
7
8
  attr_accessor :digito_convenio
8
9
 
@@ -1,4 +1,5 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
+
2
3
  #
3
4
  # @author Kivanio Barbosa
4
5
  module Brcobranca
@@ -90,8 +91,10 @@ module Brcobranca
90
91
  attr_accessor :cedente_endereco
91
92
 
92
93
  # Validações
93
- validates_presence_of :agencia, :conta_corrente, :moeda, :especie_documento, :especie, :aceite, :nosso_numero, :sacado, :sacado_documento, message: 'não pode estar em branco.'
94
- validates_numericality_of :convenio, :agencia, :conta_corrente, :nosso_numero, message: 'não é um número.', allow_nil: true
94
+ validates_presence_of :agencia, :conta_corrente, :moeda, :especie_documento, :especie, :aceite, :nosso_numero,
95
+ :sacado, :sacado_documento, message: 'não pode estar em branco.'
96
+ validates_numericality_of :convenio, :agencia, :conta_corrente, :nosso_numero, message: 'não é um número.',
97
+ allow_nil: true
95
98
 
96
99
  # Nova instancia da classe Base
97
100
  # @param [Hash] campos
@@ -199,8 +202,9 @@ module Brcobranca
199
202
  # @return [String] código de barras formado por 44 caracteres numéricos.
200
203
  def codigo_barras
201
204
  raise Brcobranca::BoletoInvalido, self unless valid?
205
+
202
206
  codigo = codigo_barras_primeira_parte # 18 digitos
203
- codigo << codigo_barras_segunda_parte # 25 digitos
207
+ codigo += codigo_barras_segunda_parte # 25 digitos
204
208
  if codigo =~ /^(\d{4})(\d{39})$/
205
209
 
206
210
  codigo_dv = codigo.modulo11(
@@ -208,10 +212,11 @@ module Brcobranca
208
212
  mapeamento: { 0 => 1, 10 => 1, 11 => 1 }
209
213
  ) { |t| 11 - (t % 11) }
210
214
 
211
- codigo = "#{Regexp.last_match[1]}#{codigo_dv}#{Regexp.last_match[2]}"
212
- codigo
215
+ "#{Regexp.last_match[1]}#{codigo_dv}#{Regexp.last_match[2]}"
216
+
213
217
  else
214
- self.errors.add(:base, :too_long, message: "tamanho(#{codigo.size}) prévio do código de barras(#{codigo}) inválido, deveria ser 43 dígitos")
218
+ errors.add(:base, :too_long,
219
+ message: "tamanho(#{codigo.size}) prévio do código de barras(#{codigo}) inválido, deveria ser 43 dígitos")
215
220
  raise Brcobranca::BoletoInvalido, self
216
221
  end
217
222
  end
@@ -1,8 +1,9 @@
1
- # -*- encoding: utf-8 -*-
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  module Brcobranca
4
4
  module Boleto
5
- class Bradesco < Base # Banco BRADESCO
5
+ # Banco BRADESCO
6
+ class Bradesco < Base
6
7
  validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
7
8
  validates_length_of :nosso_numero, maximum: 11, message: 'deve ser menor ou igual a 11 dígitos.'
8
9
  validates_length_of :conta_corrente, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'