From c32a8b9af7613e01b6b2d4ff4551a6e10de40833 Mon Sep 17 00:00:00 2001 From: roberto Date: Tue, 19 Jun 2007 17:12:00 +0000 Subject: [PATCH] =?UTF-8?q?Remesas=20de=20proveedor,=20y=20adaptaci=C3=B3n?= =?UTF-8?q?=20de=20recibos=20de=20cliente=20para=20poder=20hacer=20remesas?= =?UTF-8?q?=20de=20proveedor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES/trunk@52 c93665c3-c93d-084d-9b98-7d5f4a9c3376 --- Build/BuildRoberto.fbl5 | Bin 2818048 -> 2818048 bytes Build/BuildRoberto.fbp5 | 1356 ++++++++++++- Database/VISTAS.SQL | 13 +- .../Servidor/Informes/InfRemesaProveedor.fr3 | 67 + Source/Cliente/uPantallaPrincipal.pas | 4 +- .../Articulos/Views/uEditorArticulos.dfm | 2 - .../Views/uEditorElegirArticulos.dfm | 1 - .../Views/uRecibosClienteViewRegister.pas | 2 +- .../RecibosProveedor_controller.dpk | 3 +- .../View/uIEditorElegirRecibosProveedor.pas | 10 +- .../uRecibosProveedorController.pas | 96 +- .../Data/RecibosProveedor_data.drc | 4 + .../Data/uDataModuleRecibosProveedor.dfm | 23 + .../Model/schRecibosProveedorClient_Intf.pas | 168 +- .../Model/schRecibosProveedorServer_Intf.pas | 100 +- .../Model/uBizRecibosProveedor.pas | 10 + .../Servidor/srvRecibosProveedor_Impl.dfm | 112 +- .../Views/RecibosProveedor_view.dpk | 8 +- .../Views/uEditorElegirRecibosProveedor.dfm | 408 ++++ .../Views/uEditorElegirRecibosProveedor.pas | 211 ++ .../Views/uRecibosProveedorViewRegister.pas | 4 +- .../Controller/uRemesasClienteController.pas | 3 +- .../Views/uEditorRemesaCliente.dfm | 5 +- .../Views/uEditorRemesaCliente.pas | 4 +- .../RemesasProveedor_controller.bdsproj | 492 +++++ .../RemesasProveedor_controller.dpk | 62 + .../Controller/RemesasProveedor_controller.rc | 0 .../RemesasProveedor_controller.res | Bin 0 -> 32 bytes .../View/uIEditorRemesaProveedor.pas | 22 + .../View/uIEditorRemesasProveedor.pas | 23 + .../View/uIEditorRemesasProveedorPreview.pas | 16 + .../uRemesasProveedorController.pas | 475 +++++ .../uRemesasProveedorReportController.pas | 103 + .../Data/RemesasProveedor_data.bdsproj | 492 +++++ .../Data/RemesasProveedor_data.dpk | 41 + .../Data/RemesasProveedor_data.rc | 0 .../Data/RemesasProveedor_data.res | Bin 0 -> 32 bytes .../Data/uDataModuleRemesasProveedor.dfm | 399 ++++ .../Data/uDataModuleRemesasProveedor.pas | 131 ++ .../Data/uIDataModuleRemesasProveedor.pas | 19 + .../uIDataModuleRemesasProveedorReport.pas | 16 + .../Model/RemesasProveedor_model.bdsproj | 492 +++++ .../Model/RemesasProveedor_model.dpk | 46 + .../Model/RemesasProveedor_model.rc | 0 .../Model/RemesasProveedor_model.res | Bin 0 -> 32 bytes .../Model/schRemesasProveedorClient_Intf.pas | 778 ++++++++ .../Model/schRemesasProveedorServer_Intf.pas | 899 +++++++++ .../Model/uBizRemesasProveedor.pas | 99 + .../Model/uBizRemesasProveedorServer.pas | 79 + .../Plugin/RemesasProveedor_plugin.bdsproj | 492 +++++ .../Plugin/RemesasProveedor_plugin.dpk | 42 + .../Plugin/RemesasProveedor_plugin.rc | 0 .../Plugin/RemesasProveedor_plugin.res | Bin 0 -> 32 bytes .../Plugin/uPluginRemesasProveedor.dfm | 135 ++ .../Plugin/uPluginRemesasProveedor.pas | 74 + .../Reports/uRptRemesasProveedor_Server.dfm | 1006 ++++++++++ .../Reports/uRptRemesasProveedor_Server.pas | 93 + .../Servidor/srvRemesasProveedor_Impl.dfm | 1010 ++++++++++ .../Servidor/srvRemesasProveedor_Impl.pas | 101 + .../Views/RemesasProveedor_view.bdsproj | 492 +++++ .../Views/RemesasProveedor_view.dpk | 97 + .../Views/RemesasProveedor_view.rc | 0 .../Views/RemesasProveedor_view.res | Bin 0 -> 32 bytes .../Views/uEditorRemesaProveedor.dfm | 1776 +++++++++++++++++ .../Views/uEditorRemesaProveedor.pas | 342 ++++ .../Views/uEditorRemesaProveedorReport.dfm} | 4 +- .../Views/uEditorRemesaProveedorReport.pas} | 11 +- .../Views/uEditorRemesasProveedor.dfm | 1520 ++++++++++++++ .../Views/uEditorRemesasProveedor.pas | 196 ++ .../Views/uRemesasProveedorViewRegister.pas | 27 + .../Views/uViewRecibosRemesaProveedor.dfm | 164 ++ .../Views/uViewRecibosRemesaProveedor.pas | 130 ++ .../Views/uViewRemesaProveedor.dfm | 194 ++ .../Views/uViewRemesaProveedor.pas | 106 + .../Views/uViewRemesasProveedor.dfm | 190 ++ .../Views/uViewRemesasProveedor.pas | 92 + Source/Servicios/FactuGES.RODL | 24 + Source/Servicios/FactuGES_Intf.pas | 86 + Source/Servicios/FactuGES_Invk.pas | 56 + Source/Servicios/RODLFILE.res | Bin 22351 -> 23155 bytes Source/Servidor/FactuGES_Server.bdsproj | 10 +- Source/Servidor/FactuGES_Server.dpr | 11 +- Source/Servidor/FactuGES_Server.rc | 2 +- Source/Servidor/FactuGES_Server.res | Bin 23200 -> 23200 bytes Source/Servidor/uDataModuleServer.dfm | 2 +- 85 files changed, 15648 insertions(+), 135 deletions(-) create mode 100644 Output/Debug/Servidor/Informes/InfRemesaProveedor.fr3 create mode 100644 Source/Modulos/Recibos de proveedor/Views/uEditorElegirRecibosProveedor.dfm create mode 100644 Source/Modulos/Recibos de proveedor/Views/uEditorElegirRecibosProveedor.pas create mode 100644 Source/Modulos/Remesas de proveedor/Controller/RemesasProveedor_controller.bdsproj create mode 100644 Source/Modulos/Remesas de proveedor/Controller/RemesasProveedor_controller.dpk create mode 100644 Source/Modulos/Remesas de proveedor/Controller/RemesasProveedor_controller.rc create mode 100644 Source/Modulos/Remesas de proveedor/Controller/RemesasProveedor_controller.res create mode 100644 Source/Modulos/Remesas de proveedor/Controller/View/uIEditorRemesaProveedor.pas create mode 100644 Source/Modulos/Remesas de proveedor/Controller/View/uIEditorRemesasProveedor.pas create mode 100644 Source/Modulos/Remesas de proveedor/Controller/View/uIEditorRemesasProveedorPreview.pas create mode 100644 Source/Modulos/Remesas de proveedor/Controller/uRemesasProveedorController.pas create mode 100644 Source/Modulos/Remesas de proveedor/Controller/uRemesasProveedorReportController.pas create mode 100644 Source/Modulos/Remesas de proveedor/Data/RemesasProveedor_data.bdsproj create mode 100644 Source/Modulos/Remesas de proveedor/Data/RemesasProveedor_data.dpk create mode 100644 Source/Modulos/Remesas de proveedor/Data/RemesasProveedor_data.rc create mode 100644 Source/Modulos/Remesas de proveedor/Data/RemesasProveedor_data.res create mode 100644 Source/Modulos/Remesas de proveedor/Data/uDataModuleRemesasProveedor.dfm create mode 100644 Source/Modulos/Remesas de proveedor/Data/uDataModuleRemesasProveedor.pas create mode 100644 Source/Modulos/Remesas de proveedor/Model/Data/uIDataModuleRemesasProveedor.pas create mode 100644 Source/Modulos/Remesas de proveedor/Model/Data/uIDataModuleRemesasProveedorReport.pas create mode 100644 Source/Modulos/Remesas de proveedor/Model/RemesasProveedor_model.bdsproj create mode 100644 Source/Modulos/Remesas de proveedor/Model/RemesasProveedor_model.dpk create mode 100644 Source/Modulos/Remesas de proveedor/Model/RemesasProveedor_model.rc create mode 100644 Source/Modulos/Remesas de proveedor/Model/RemesasProveedor_model.res create mode 100644 Source/Modulos/Remesas de proveedor/Model/schRemesasProveedorClient_Intf.pas create mode 100644 Source/Modulos/Remesas de proveedor/Model/schRemesasProveedorServer_Intf.pas create mode 100644 Source/Modulos/Remesas de proveedor/Model/uBizRemesasProveedor.pas create mode 100644 Source/Modulos/Remesas de proveedor/Model/uBizRemesasProveedorServer.pas create mode 100644 Source/Modulos/Remesas de proveedor/Plugin/RemesasProveedor_plugin.bdsproj create mode 100644 Source/Modulos/Remesas de proveedor/Plugin/RemesasProveedor_plugin.dpk create mode 100644 Source/Modulos/Remesas de proveedor/Plugin/RemesasProveedor_plugin.rc create mode 100644 Source/Modulos/Remesas de proveedor/Plugin/RemesasProveedor_plugin.res create mode 100644 Source/Modulos/Remesas de proveedor/Plugin/uPluginRemesasProveedor.dfm create mode 100644 Source/Modulos/Remesas de proveedor/Plugin/uPluginRemesasProveedor.pas create mode 100644 Source/Modulos/Remesas de proveedor/Reports/uRptRemesasProveedor_Server.dfm create mode 100644 Source/Modulos/Remesas de proveedor/Reports/uRptRemesasProveedor_Server.pas create mode 100644 Source/Modulos/Remesas de proveedor/Servidor/srvRemesasProveedor_Impl.dfm create mode 100644 Source/Modulos/Remesas de proveedor/Servidor/srvRemesasProveedor_Impl.pas create mode 100644 Source/Modulos/Remesas de proveedor/Views/RemesasProveedor_view.bdsproj create mode 100644 Source/Modulos/Remesas de proveedor/Views/RemesasProveedor_view.dpk create mode 100644 Source/Modulos/Remesas de proveedor/Views/RemesasProveedor_view.rc create mode 100644 Source/Modulos/Remesas de proveedor/Views/RemesasProveedor_view.res create mode 100644 Source/Modulos/Remesas de proveedor/Views/uEditorRemesaProveedor.dfm create mode 100644 Source/Modulos/Remesas de proveedor/Views/uEditorRemesaProveedor.pas rename Source/Modulos/{Remesas de cliente/Views/uEditorFacturasClienteReport.dfm => Remesas de proveedor/Views/uEditorRemesaProveedorReport.dfm} (56%) rename Source/Modulos/{Remesas de cliente/Views/uEditorFacturasClienteReport.pas => Remesas de proveedor/Views/uEditorRemesaProveedorReport.pas} (70%) create mode 100644 Source/Modulos/Remesas de proveedor/Views/uEditorRemesasProveedor.dfm create mode 100644 Source/Modulos/Remesas de proveedor/Views/uEditorRemesasProveedor.pas create mode 100644 Source/Modulos/Remesas de proveedor/Views/uRemesasProveedorViewRegister.pas create mode 100644 Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.dfm create mode 100644 Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.pas create mode 100644 Source/Modulos/Remesas de proveedor/Views/uViewRemesaProveedor.dfm create mode 100644 Source/Modulos/Remesas de proveedor/Views/uViewRemesaProveedor.pas create mode 100644 Source/Modulos/Remesas de proveedor/Views/uViewRemesasProveedor.dfm create mode 100644 Source/Modulos/Remesas de proveedor/Views/uViewRemesasProveedor.pas diff --git a/Build/BuildRoberto.fbl5 b/Build/BuildRoberto.fbl5 index 2d1ac10009f6fbd0de92a9f13fca1491675d662a..cb01c6a5951fb44486f49ff0313fec6d674159e6 100644 GIT binary patch literal 2818048 zcmeFa4S-Zt9rr&h^S(2)3jzWH4k)j}vb(U$i-PVeEH4Y}0wS*9?Cb!8yEE&|ECQva zB_%1PsU@kUr6rZ6i6y0_sf8t_iKVH9rKN?XrsXUDbLZvWdv@-8cjoT;{GUg^TO<3M z&)(np-OoMe+;i{D&NizKVI6pY3?{&>t$)02ocMS{OS=4gs^goB~@?~b`!d)gO=0v(}P{K@zK zPt?aYXn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i= zXn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2 zfCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ z255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i= zXn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2 zfCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ z255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i= zXn+Q2fCgxQ255i=Xn+R#Yhb2GFjzbmiib@+8pOjc9v_9T!9`*(4~V@TDgG@MkICXO z&6@gtiuitzc&J~^>slAYM6TPdOp=gAPY?XnRk*zP4y^^Sbesc8jC5H4zI1 zy6QvmU@Y97h{jy@<5x$v*9PLD-lS;oAWMvgqcfdb`E$j%-iV^dzE9kzkR#$l^?H=@DCsPFQ4hI)z`S zVFu^QKr9qVB$K#Ak~75-m{qCe@FsIuVGc)aPq?!qnZhAbEb0k&h*r}@_>u{nMWv{S znqVRvjU+SpM26Na(O5$C;c#Sg(Tq%@l4PQhMP(>aQzV`UM1tbT+B17oQLRWw87WQX zXe=rMIUK_2>K)xm3T1DaB8jI~Dr*SkyI$)CHl1Wy!bpinHMEIGYlouI7NcH_AX- z9_or}S%xRGtcQiTQ->Jl8IjD>o==|i0aEN{*K>R_&sLbnE)G(nC!RjYwL20a?I4d# zZXe57DT)^*oQ@$)k&bXso-9X-F}pkvj%1js z7$(Z7i*|L(b&OjV3vKeJN4TgYHBdz@sezU*XH<4M=^-~--)_<1s z*{c&onj&#bEH0%?kwH8$5)`MdFEwCIn_I0F@~WQ!+C zDhB1+sgw$T|H~^*o*kraGv1)MRR5TeUva74cT)e0^JPvvQhg^I)R&SsF~9m!tBgtg zuWyVp6r%BPBIHkL3`9EonVQqResa!gr%2TnGDOK#VwOr4QMx+N-fIc1Oy|9yO>Q$dxy|5YkR#N43t(?8*NfScO^IK{{m@m>8p6c_juS7kb(mCW* zg920MxYP10Fg5oq$Wfrlxo1mORi@{j3MG};x{$d?+%QnK0dtR|v9_k8D;!B4%7x00 z56r|CA?SYS{8^Wk{NRrb!IZnMX)H(>S!X+nJP-zJ#9&--gR83q#3*m--sR3+LOG? zv#AFsJ1d!NH%{hjJuj^EAz0S>WTrhhlSk(~$L^h-%ySja<7?U+iN^YS7z$|Q!q!FIhMa>S2c^2Y71P;E>3Ubs_TiRUc4xZs4tJHFR1Yw8lV9h zpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}7 z0UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI z8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9h zpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}7 z0UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI z8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9hpaB}70UDqI8lV9h zpaB}70UDqI8lV9hpaB}70UDqI8u*A9u!;R_Ue~m^Nc_8RT56|1caHJSJ1sSqAr_nX zpG*9YUmrCCBgGEqdVJJeaDQpwqh`P(cGxQ(KJh3Kk5cg%A|6A<;~2kafCfI)1_p_7 zp6ekHzi5C4Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ z255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i= zXn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2 zfCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ z255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i= zXn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2 zfCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ z255i=K4b=*Vt<;~jjtRm{@pk2L$-5y?#?^MthJrd_WvHUw}gVxSjS(EIcj8SEYcJn9W^V}vqp^;^9m`^Tf(B@S z255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i= zXn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2 zfCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ z255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i= zXn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2 zfCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ z255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i= zXn+Q2fCgxQ20nxa28n%grXR<?5dyyG#Q#Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D z12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMb zG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1 zKm#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D z12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMb zG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1 zKm#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D z12jMbG(ZD1Km#;D12jMbG(ZD1Km#;D12jMbG(ZD1@ZmM!5W6--Jcg$q=MPGKKTO%> z2JvWK*R)vqp-ZPJ&sZ!iseiKmJH#?1>p4F0(J`QOBIUs^8lZuXo`Df!myZ{ZWBj54 z8u-W=5bH*Z^57Q@&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk4 z01eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp z4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$ z&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk4 z01eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp z4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$ z&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk401eOp4bT7$&;Sk4 z01eOp4bT7$(7;E-z&T z#{o7Bu;GA>0PJ|cMglepu+e~>0N5D7#sW4DuoD6E12!J834omh*vWuR1Z)yulL4Co z*i^u#0d@*t(*c_SSQ%h50V@Zr0~z4+0IUYETEOZ6s|TzButvZZ0k#;hCcu^ewiK{sfGr2C8L$`cJc0d^K(>j66(ur|PyHFd794Y`1Lej{M#0u}(Q9k3u^9e{-Z+XUEVz_tJu z25c)}=KlF)5ORxExARLW<;|M-HWEn-s~x1#&1w z+oebjcF3U=?UW)p_?R3@(Z{7o4la~KDY{6CC`F%?B00EN4yEW4DUyRv$)OZ| zT8iZ0QaO~OT~Z_mpOHf;`m7Ym!DVtNMZ2X)4n8M`Qgpc#$-xzJC`EguNDe+Phf?$f zDUyRLUzbBE`i2zA!7XwqMYl?k9DGv_rRZBy zBnP+2p%m?tB02cB97@r5q(~0FD~D2ayA;X6_vBEDzAr^`aEBa9(VbEx2S1QQDY{FF z`U&)~q{aT9T z;88i0qC-+72fvX+Df+Dx$-!fCC`FG;ksSO^4yEV`DUyT3awtVlN|7A=UJj+`4^kut zPsyPaJuO9Y@JBh6qGzN?4xW`mDSA$dNoWB02b%97@r@rAQ85 zl|w0dO^W2;bvcxx|45M>ydj5D^rjTa!GGmYivA}>a`2WMO3~X=BnR)vp%lF8S06Ph=lL4Cu*d)Lv z12zS)senxb>=eMJ12zM&GQeg6Rt{JNV3mN)0&F&5Re)6kHV3e|fXxGJK47N;b{b#{ z09y#y>42R9SPfvcfYkw34_E_WjesozY%yR>fGq)RDPYS0TMk$=U@HJy3D_#YS^#SW zY&BqO09y;#nSiYW>@2|619moGZGfEv*apBh0(LH70l?Y;3j)>wSO~C9fNchB3t(Zu zwgPq@V4Z+<0Tux)3RpK_=K~f4EDl%#upYp+0d@gk+X34F*iOJc2H3{|yAZI80Q&@B zp9Jh;z%BvoQ-FOMuuB2k1=wc*`z&CW0k#{k&jEHhU{?UP2e8ir_65MM1nernz6jXW zfL#OFwSavIurC949bkI_`wC#!19k&oHv;xmz`h39O@Q4D*w+F324J@Ub}L}t1ngUY z-3Hh`z`hOGcL4h?V7CMIJ;1&X*d2h~3D^$+y9==WfZYw)4*~lTVD|ua0I(ke_7lMF z1?)b+ehS#n0J|Ts2LSsyU=ITJ5MU1j_6xv%3D`lv9s%rEfc+YZiV7~|K4}d)d*wcXh5wK?fdlswbQ<^!w* zuu{N=05%k`;{Y25*l@r`0CqfJBLN!)*l55`0Bj6kV*win*olDo0UHn41i(%L>}0?u z0yYV-$$(7(Y${;W06PV+>441utPHT3fRzJQ0aztqvjCe7SQTK^fXxAHE@1Njn-AEj zfSm@|0>Bmmb~<2Z09FH7Enszk)dSW5SR-JI09y=L6JSdKTMF1Rz?K8n4A=_5RsyyP zuol2t0b32&8o<^9b|zr!06Pn?^?;oXSQ}vH0JZ_JjewmCSOBngz=D8v02Tsl6JVPG z+X7e^u&scd2UsUyU4TUZivrdS*!h6P0E+{b0IUbFZGc?>*ml5n0Jambj{){^z%B&r zBEUWY*e3zI7_dtK`xIcG2JBM6b^-Poz&;DuWq|Dl>~nx!4%iid?E&obfPDe5D*?L- zurC63HDK2Ob}e9E0_@9xT?g1+z`g?5^?=;~*o}aF6|k=Xb`xMX1NL>mz5&=RfZYn% zHv#(=V7CFb53p|o_8q{!3)t;|eGjnj19k^scLMeU!0rNUKVWwQ_Cvsa1lT=*9RTdd zfc*rpdjY!-u%80;b@j4%mZ$Jp|apfc*lnUjlXzutxy<6=1&x>`}lD0rnff zehb)RfISY_?*MxOu)}~o3E1xe`vYK40roUte+29qz@7!{Il%q|*q;GA0@(9_{RObU z0`>x6F9P;A!2S-{OMtx$*gpXKCtybbdj+t60rqdeUIpwmz+MOJKY+af*qea;7qI^U z_7-4o1NIJJ?*jH7VDAHV3^4Rzor4C;uLtU*BESX%W(CX!m>n<&U{1hXfVlxH2FwGP z7cd`SC4iLzHUzMtfE@?eFu;ZbHUhBY0UHU}D8NPob^>5y02>R~IKWN>%n#Ujz$O58 z5@06-HW9E%fK3K$3Sd(Kn+Dh^fK3N%24H1?%>=9*unNE`0hVR z2iSbTP6g~Vz!m_u5U|q$I|Hy9z-j@j1FRmf2EZBtTLjo*z?uMC0@zZ(mI1aLux7wk z0JajaRe-es)(Y5az}5h^7O*n`TL;)#fUO7YY{1$8I|r~0fNccqT)+Z=wF4FetOKwR zV4DEj4A>UH!hmfB>^#6a0qX)R0$3EVZotk5ECyH{umoT|fNcZp0>HKdwga%8fPD5=Q3BW!H*u{Wd0@$Yj`!rye0=5gV&j9vWz%B!9H(;Lw>~g@a0BjFnp9ky< zfL#gLRe*gFu&V*P2C!=Z`x0PZ2JAY(_5$`5z^(`E2Ec9v?5lu%4X~R4yBV;r1NIHT zZUO98z`hCCw*b2huzi4i8?f&H_Fcek2kd)*eIKwp0J{^g9{_e2VEX~P8?YY&_9MXV z0qg)^KL+e4fZYq&eSrNGu%7{TKVT04_H)1<1neQe9tP|efc+A%gMd8(*slQlHDHed zb_lTF0QOtJ9s}%gz`B0W57-|7dkV0p0sA9h&j9u;V9x>eC&2y;*b%^< z2kb9^{S~km0DBRzzXA4lz+M9EWx)Oc*gpX~3fL=v{R^;v1NJIluL1TtVE+N^4Zz+6 z?7x8h53siYdmFHK0DBj(_W*kzuw#H(tom2=Cz)k>c3}9mc8wc2lfcXI% z57-32P6F&?z$OAV39!k4O#y5wVAB9Q1+eLW%>b+nu$h3B16Bc8C1A4vn+;eMVAX)l z0c2G|0?76NuUU}peU16VC!b%50a)&N)|V2c1-3|JFjO8{F6*fPMD z1J(@K3cywZwhFKoz*+%Y4cHpM)&h1WVCw)o3$XQooefwUVCMj~0kDmLoeNk1uy(+L zfOP;C0&Ejtn*rMbSQxOafSm_eCtzKGMF5Ke)(zPCfW-id1C{`+2e55`T>#j2z;*z( z6R?i~_Hn>21neTfJ^|P#0lOHmO91;6V4nu;Qowcr_8GuF3)p3V?FQ^~fL#vQ6@cvl z?DK$q0kA6py9%%`0(LcE*8p}cU|$04%Ya=6*j~WC0@(F{-2m8)fPEFPuK{)wU^fHy zb-=y>*e!tF3fMOR`xaog0k#jYZv*xnz`hIE?SOp`uf0Q(hS zzXt44zzzZS8^C@G*kgb_4%qJidjhb-fISJ=?*aP*U{3+|G+=)O>>0qG1?)M%{sh>c z0XqWN^ML&Yu)hNK0$?u!_BX)(4%kb8y$skt0Q)CkM*({UuzvyeZ@^v!>@~n%2kbw9 zy#d&pfc+P+{{i+EU~dEV4q)#B_8wsG19l8Bi%ovbPah2etO&5dfLQ^v0cHox0hkjo z7hrC{iUIQg<^{|LSP5XIfDHj`C}76{HVm-gfQHw<;tO2k_z!m|v7_cV5mH@UC zuw{TP2do*e6@aY-Y!zTFfVBd)8n88htp)5%z}5kF7GUcEI~%Yzz|H||17I5gI~TA3 zVC{ef0qX!P1lT6PHUqW=urOd-0Xq+{PQbbVivSh{tQ)ZN0gC|^2P^?t4`AB>y8y85 zfb9TmCtx1~?Bjr42-rn{eFCsg0(LQAmjL!Dz&;JwrGV`M>@$FU7O=|z+YQ*~0J|Kp zD*)RA*yjQJ0$^7Hb`@Y>1ng?St^w>?z`g|7mjSyDu)TnN1+eP@y8*Bp0sAUoUjytW zz-|WY>wtX&uv-AT6|ipt_AS6}18g5)-v;bEfPELR+X4F?VBZJq4#4gN><56|1=xPT z?gs3Kfc*%tdjLBC*pC7G31IgEb{}9r1?*>l-4ECUfc+e>2LXEsu!jNr1z^7f>>yx| z0QM`ueht{8fE@ztH-P;Xu*U#<9I)R3_5@&u0ecd#-vjmsz@7r^X~6yn*fW4V3)pjj z{Ryx?19k+k=K=c*V1EVd1;Abe>~Dbm9k7=Gdl|5Q0QOJ7jso@yVE+Q_-+;Xe*lU2j z4%mMHdjqgH0sAjt{{!qTz}^Pz9l+iN>^;EV2kaPN7Q6lxKl%GXfE58Y7%(efHo)wF zIRJA4<^s$OSTSH8z`TI@04o8k6tE$H4F&8tz=i=f9Iz399S_(@z(xT!8n6=p8w1!_ zz{UY~B4B>N#sfA1u#*5g8L)|fO#*B(U{e5_3fMHjP62E>U^4(K18gQ><$zTHRteZF zz-9wh1z0s;a{!wQ*gU}I19mE4rvbJAu!Vq~4%iuh)c{rtSRG*XfHeTt2-qUP76aA< z*b=~&0=5jW<$yHj7*V zU>5+k9k3mM?F8&&fPEaW3jw=M8}1=yznyA-fpfPDtA&jNNCV7meP z9AK9Nb_HO20Q)>(UjXb%z^(%9i-27X*foG%3)q(c`!ZnH0k#*guK;#EU^f7EBVb}!DC1lY}heI2lG0Co#tw*vM}z`h08ZGi0q?Aw5S2e9t~b~|9-1MK^N-2vF0fc*fl zy8zn{*xi8r5U?Ksb`M|&0Q)guKLPAs!0rR=r-1zou=@df0I;6}_8?#n0roIpzX0r) zfE@(v5x{;0*slS56tF{p{RXh#0`?eSj|28Qz@7l?Fknvt_Itqo0N7K2Jq_3&0ec3p zX90T-us;FzXTXjC_B>#J0qn1Uy#UyYfc*`yzXSFXU@rsq55WEj*ipb<0qkFZ{Tr}X z0ecOw*8%$vU~d5SCSd;s?0W!Yz1H|0b2!F3t+8)tp;ojU~2(86R>rFodwu>z|ID&4X|?n z+W^=`z|I9M09ZRjm0Q)##7Xo$>V4nc&lYm_e*d>5{3b0QDb}3-H0Q(GJp9SnP zz;*-nIlwLl>!b*w+BN39y?1`#NCX0PGgPZUyX{fPD+F+W^}K*tY@u4q)E}>~_Gu2iW%ky92O0 z0s8@9cLBB^u)6{KAz(iO>>j`l0QO_RegfFNfZYe!PXYTGVD|&|0AN1{>_NaD0_4F_xlV8;VC60lK# zjRx!lz{UVJ7O-)Eod}p8uOFrUEt%uu}k=4%iI9$^e@Q zSUF%7fK>uE3$WRMRRLBF*c`y-0yYn@`GB1Y*lB<*0Bj*(rvr8dU^Rf%0#*lDJzx!h zH3GH>u*HBi0k#CNrGPC1Y&l@ffUN**C19%nYXPhku+@OA0cgA22-vxR1psRYEC^T!U?IRZ0k#>iEr5jq+X~oufOP`a1y}^IC}7=yoex+H zusC1|z_WgU0_+ojeG;&X0lNgSPXYF6z%B)B7hs6{i*cSl160oZP`yyah19lBy*8=t>z`hLFb%5;!>??p> z57-TW-3ZuM0s9(YHvx7tU|$F98-U#c*sXwl6R>Xqb{k;(0Q)vz-vR8qfZYz*_W=7o zV0Qp^CtyDS>@L9e19mrHKLqSYfZYSw0l{-B`1ME+L{TZ+$fISb`UjX|nU@rjnB4B?5?C*fR1lY@f{R6On0(KOz zR{;ALVE+c}Rlr^Y>~+BY1K1mYy$RTV0s9|dZvpl;VDA9-E@1Bg_C8?80JFH{*ZlO+ zAi#WuO zBw+f!+WY%j@kH~w#r4YO`=+JnT=CCPi?y~V+}Y6*Z4bo~(XvhL-Bn)8;N^jEB=tiU zt7WmpS{Lo=4tIw9%cC7VozZw(OQ1?>=J}1? z$>+;Dy3ey%#%j6hL!I4Q!u~VEky({~@zYyF!GvXm#kx8L(oM!{f{Ac6l24tDT5edU zfT7OpGP{(gl`75FSf6M6^?^hnyZH|BZ2ugs%(MNvXe1Gfc6Nqh*;NEp*1uXB@~mZT zICO#9owP2qO+1|}!0fU3f2GgsG(KNGci3c=)5G(SIUVh7VZki{2_4)>q!LK zJ45ll>N!roT|5-q78Ykvu_q^p{b*eo2%hIprVYj8{)X+Dtb$LrSU*-XXKvN3^4jtl za~mqFX3VasYn)MAS6@D3c13x^thrUQ=gg`pzfkTP(SrSJn)TwPKUZ7V%VL zVqa^cu~;DH-xLmR3B{sueePsjKukTd24cYlv$qm&-ORWZ>x)Tgf~b1 zQ3-P}iVG0x^v6P*!*OvUSG=@@0v-OA)Dt^W z!jisLD?mJ-RG4W<9H&;T$2t4-Fi|^~XSP!Z&qn2$P^@2LNYqmsh$jcKI4agY>nYRf zQI=9Q?ZQGJnAlifQQp@331tysb`6mp+se9Esjp4>Pk-{w)ap*=)6NwJq0*4BVYc@1 zz1mu|rYYG-`rl-Bv$@6bTK;#wMFO376qoN1*b)K1@U89^M z-HTICt`tf8-;d|^*=Djg>zeF;e>S*2?zNw~Uaf0+p!)T^KKD7*`*cnByZ;%C;a>Zk z?uEKW2cjP;>)&v^ft5WqlMYWTTPy9CVlfweR5+^y6a}P z-C3yJR43D#RC}3urv`I|nm=+Y@a!!rqgLX%xrB2 z>q51yQlE*cP=&7dYAe74CXI2e`@|xL$!yQb#E|# zsmb*nOnvf$o4?d1(j82VwH{{PsloiE=FfC8^$A@sGwW69W3j~1pz;cu**+Fagp=E6 z`dB9Zp!!%Qf4Yxl!Vjd6Ws*yMEc4_C*vB$WWcpYp{-F9;CcoOpGEWRZ9~0-uwc@UL z@(gLQ*!x_E9k1Lw42IiNR|@Hy#7gJP#b(TlEHf3pzY+D zw^!4d)t&iyV_9DNt*m_1S6P#WGdn*}=i{2Z>PVfLdr9c``PtxF-oStQN~2ff1982P z?6>NB5C)*%_RgjD+a$;wx_;k3H0-xoZKwOK)bt0`Z?oE#`mI#KK=s?@+5NUQ5D5mv ziyGoBAhBp991Q5s0ZG`Pv0kSF)Az^?=CABJQo|>!gv^>l^P$QvAZ(VAztuI-ks|A*v-zB9=mDqL5^L6wv%JGSJNNJ*fnTdH+Fkf zFi>N6lyaTa9*6~$>m+e+QGfLMx@IzX4~bE(%+fZ~%zzy~gMM$=e)0&aB-4EVkDw03TS1R;}vClQ5fk%T}>BE>InH^BipytV)cHVBzK6hoB(6_A{h#8!zKt6(I>kzLqiF?Z7xOi)1>V`!g>vetKx#^nO2la~5e7`VQTj|=<9TM%?-b)G7=TvdsC9-yl;Uo@3 z9)G}PUmRI{!pYyrFd0BTYr{+n|5NTx4q0AmngY$`D z`^gTK)x6fB%(icEUN&rB*P*hi=-r{r)?zTW4Qt6<86I~%bTB0}?Hbu56cfG{BRFoO?!M@*fVQ?X2rTRzl{8 zn(b39*~c@}h}^#JaAtl$t3p1SW@{1W(3VhVAeg*9OujcC|9-@|*|lriXD%X?y~x}t znBg~C^NZ)ib?!#-kFrA>W1Jp!}-!mvi;Vnmght||B3OmTu56=}A{VE#2~Jy2g^`q?&7 zpK^2s>V1$Eg{B?0!}`RL>wP=B*HO-tm%9)8&oS%H#Q4Y*tiNB7E=~NCbzseV+YG%8 zVBhPD7Pm4RXV$x0iE_L76HwLdS>2@U38&g-2 zX&}an^80k!yB^H;M}zBmgSOLGki8loi0em#YiOyX$$PJ&0o#9rwUF9~bUsS`zP!pZ z1q_4(gL`yFvt_CSWJsm}^)7<>ao@*UEOQ9bouGFCngO$Y(BM7S+LdnljXv5F{qOSz z@442}XWruDpaZ!p_gH{4ug3w`~3{*60+XVpew*^ z`vzl9d!;2k=CmiY4rsPLgE6P2&x|?knE@Gd>~G@NVbh<^&Q$sJqv`(*% zJo9s)!M&tRJ8})_exHF_5n9JL+Yb%i&!paeQ;N{vD@>_SvHtd)YQt37-P<#5OQR)eiPrJQq`rKvkyE3}= zl6Q2q<}x>i`f;8*J^MVRYfpDWNNZKT5!8>i4PJ-WwVmpbTC-|5H0^c{+}Cu^(;C!w zH`8qt+YH-J_u#Ao^c~r34a)mS__;P8j?cA8 zelkq*^JCij{EWT-SLd&x2A?0u{qFmC8{8i;oNJbUK%Z6E-{bcGcl|tXYS&>rZ$=|L zZ~njed2o>%#f1&OXn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2 zfCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ z255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i= zXn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2 zfCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCgxQ255i=Xn+Q2fCfw$xO(lxa&P(3nYYZm zVrJLOQ8Ne4JW_UD*~MjnvQcHOvbSa&nQ?H&Z8O%)STJMkjDyqfn11E-rs);ahfF_s z$~~vtcFGl}TzE>?Dd(KhaLU9}j!Zi^?Y3#>PdjVcylI1`y*l;C)JLc8pL)&IhN&~A zdZ!+oa>tY_r!-BOH)ZM+@02$tAD(>if<>bpwKL6xZC%aC5^`ys6y5gjslh&Lx963Fl8( zHDS<%m&P9)f9d$H@yo}%#=qr%$^WQ-zyBKla(|V7xc{*e?>X_h6Pr$~IC02{kB-|v z?wWC{#?_3g7&m;JZQL7UUl{x7*zb<*8GFvy1!HYvkB)hC%oSsL#;h4LevE6(ODEiM z!c8Y!dBVjfgimNXVaN$@jectMO`|Ux9UeV(^pMf7j=Fc$Eu$_SwS3fqQ8Px39c3H! z!pQHAyk=z2$eNK;N4iEHJpPX3uRQ*o;~S2jc>Jp)j*NJ0#Qh^~8*$l)RU_t&7&YR^ z@Por|8y+6MYIw!)_lCVN?4e;-47+ex*RXSjH4K|L?4{!#JMNC-b{rQtuI9M+hQ2WL zp`lj{?HRge=-8p&q3;bjI^^(>{X=?&oHJy>kU>LUDm_?wacQ`;snlEgM#q;&w z*-;WISza=uk8KnSA}c5Yl!Pr=Tpx6owqr!b6)B^-x+YOa!z#GoUb|_a@^v$!f~Oa%dy6> zz%kbGp8cr(S^J~*{q}3@P4)`=5c@&f9kwfN3v3f@Hru_{TdbE_7g%RlM_C71j|{$M z@TG&#AAHu}d4rD@9WL5m)K#>msH*75po4>M8x$DSG-&FeBbLW3_gZeTTxywTnQ9qs zDYDd-E-am2T3uRMT2?x(bW-Vr(s8AuOGlIrE%lYUOYNmarSF%#UGiqhYbCFgyj=2P z$@3-8l{{VYWXao*CCw#EN*YUQOBR;QFR3o6EGa9QRx+t% zLdm$2(Iq2FhL-qB+$HvsqLTN0Z~NZ#z28q4`nLIEzKCzDZ-zy|;V!d2jXJ?7h*u*L$t^D(@ce zZtpJdCEkm?JH6YyF>l1X)w{{t?%m*B?_KL{@iu#xcpJU7-i6-z-fC~9x6C`uJIOo2 zJI*`WJHk8E>+`z3c5jjQeb3vTH$AU;Uh%x_dC~K{=Q+>Qo+mwzdk%RX@jUE#z;mDH zfah+{ou1o0`#iULZuZ>h+3UI1bCqY0XSZjU=Mv9Fo}Hd;o|q@%+3MNkY4>dKtoN+- zw0N35OFWI9TF*kyd{4Ef(o^P{=9%P~;2Gx`?HS=2>hXEp9=oT=^M3K$#cvkBR{Tow z%f&AiKVSS@@zcdm7C&BmsQ8iMhl?L5zOVQ|@!iFD7T;dHulUyDn~QHO-dlWa@m0lp zigy?9D!!!nqT-#!+lphwk>ahzn~K|uHx#cgUR&H!++4h*xUsmlcwzDU;_Bkc;odz(Avj<~nFH@Vy0 z8{F&NYuzpGX7>_zqr29<&^_N>?XGl}xu>}&xhJ^CxktN4xQDuZZnxX+E^@!`dfWA; z>owOau9saex}JAE=X%=pr0a3lA=e|Whg}c2?sFY*-R-*5b-Qby>sHszt{Yu@UDvv< za_w>LcI|Rq;=0JS)3wbNb46TRU7K9(t_`mBuC=ZfSF>x0tI<{KTIibZs&-Yn%3RZ2 zlUx&A<6NU%BV0pWK9}2NcNMwbcfRd>)A^e773a&&7oE>LpL0I#eA4;2^N{lq=flni zocB2oIPZ4e>Ac;!&v~o!X6KF0z0PZ$S2_1McRP1EFL7Sv-09rrj5#CDtpXhyyz z1jjhXXvYZ0P>0XqcGw+7j`!_v+uyXmW`D*0vi(K-^Y-WLPurigKW;x{f5iT<{Q>)Z z_5=32?RVO5x9_vxYQNcjqkXUaTKiS@J@(!9UG_`t7uk2(x7lO%h<&SllfB)(!M@(U z*4|=owlA?a+H36#?ep!`_DXx1eVToeeS&?QeYAaqeW=}MciZjuBK!Ncw{36QUbDSo zd)fA)?RndCwx?}R+8(zZvOQvZ*!F)X~ht*=>MvA%45(fYjgIqTEbC#{cL4_P0vK5Tu!dY|=x z^=|8(*4wT7thZWkw%%ynYrWQbm35DGw{@5G66;0Qoz`vEm^EVEYTaaQw{Ebmx30Ce zSeva&tc})M>q6^%Yqhn~T4tSQon)P09cLYF9bx_C+U~XIuARMh*jmflC)V7x=K3|4 zule|zjy22HOkd+!^X}?@u6}0qgR8%>dfn#tkxYPq^) zS<7iHo|gZtdScb(t3JMJ*{a#AhOPSb%Ac(K&dRG-etPBVm8Y#7v+{`*53aat#q}#L zU(vRrX~n!1Q&+s#{A}~V<{O$XYz{TAX>Mqq(LB8Qjpc`zKeT-R@>`Z)vAk>f_~owU zFD<)i*=5VZ%Z4v|Z|Sp3uUUHG(sPy$Uus+W#*$~3JhbGNCE+EjmQ*ZxtLaG7{Y@7( zg_;_gyiIQ`KD_vb#aAr8aBkil6TYE$8s@i$AqiP?k zxu@p3nsaIzY9`hkJ>&2h`_Je)W6c>=XB<8K@ag+c51+p3^orA8TKL$)I~Il)u3A{J z@aTeP7d*P)o&`58xOl;+1%nnGIj!fkb52`u+Eb_Af9g%AE;x1KskT#Zn1AW~(EPXN z9hrCkyfyO{%o{uJp1C*8y?E}}x!$?&%{e;f@SOc~0&|+?Or3M2`e5~K)#p?%uU=3+ zzS>p&Qq`4JJF3pA@>abu`|#|`X789Cp4~LNV)l^P`)A!S>%v(xW(}Y9M&&J)*Hm6w z8LnJaSy6ek;&8?OiVG`36%7^MiucNomOoW~u>79#+sdyjKfnA(E3AVqux%16<@$!2 zdbjv@-!yI6yv|~6=nQv-BY{Xq)E|fiw}iJv{S%f)J9;{!@wS#wS12Bc`#VDZ?pSnN zDAW;+wFwyNZ0o5F?@Z&B8PpnzZ41T9I)XhD$}E;q7TYe-(nRsNe~`r@{%=v5A6X>+ z^V}e-UwqX?yOf6Kd)-PT(hfw^sbpq%tEoPa2qgDE)O+_*JC;gsvhu#Ne_*w@gu0`# z#0R?vx;74{j&H#SVP$8}=5Qp_@6?X9u{-&Ef6C7zvq|~s%sr`p2eQ-Tk=bO;sY4ZS z>uKpu^sacLei+NW-BMbV9JhUs)O;H-S-(I0{i(UHwEe2Kr=cU9h{jT))tXb~S}YHmo6A!bgVY~D$+{V;ES0{{c^p-( z%RX?m$9wr6u(Eq4wpgAqIcKMp^d5%F(=DOR;dmmmBI3KaCf>3)~ zT{M!2MLRn~v9{E+XNKB02Gu9?oS+L#Xtu(h74cwAM@K9akJm<{=V`U4C+6?;IWHR* ziu3lT+Pa>2BH9&-#e3J9N($!U+?D3a*`GR>2O>S20>MO2Y+!3ec`cS7^gaLP*03Vh z5sHZkpra?47)ZS+Z+{dg^A32Sy%YAQ!u({4YuR@V=GEK>Do0w=m8Mz}^VC3%say%o zR=6e+?hJ`5jT$kY0-fQVfmlr}5e_Q%7Zeol*QA`NRNH%f1M9#+;MZ9Pq?izThQs{^WE zJw31FX2na%KY)7Wlm%6(+>X;N#yUi3FlWWan zJvmbqR8{JZY$~Dd4r4!x%PXUa8sot&YE`M(ZevpUyU$QJpGpW0!Il-e@GGvPxHZx?Y#6$|#Lxcgj7wXPcEsc@;pu3^7|$ zj!Y&TWoJr>AGpeN`OMd+Ubq<5^%FdorH*2HN99EQFG#m{1x;v%Md^~6uS~jbGSZbw zjr)AsR(7s|sY|z`;eJ;kU!-&e*H3xbx%yd`iPgW<%~F?<$-S~%Xny`m zrqS6p-|u^8>ZhO9L?F>KAd+;M%-58;cs1%qmRky#v!q1*u4h1wT)HG(E|YbsCs!j& zshoY!RC1F3R-)UfGE0}axk;@^m#m<=(ywN!c?x?`H?>)E<%|-UsVM!*ty);&$4!2r zR!(I3bV2iyVmI^3rkZGD0WWFlMD>xYAXmyIVqAA2wk`h`EOiy-%wnRJ^h<|%UT7une(gm( zFP_VK>BX`)kGZR`oaU?SSshN5Y2wbSagDh$ny*ng#Of_6rCwn*?+$2OWX_a(@|oxI z%&8pxfv!`{S)k7Jjic1D-q?}j22?6(uM@j&Z*ycZQ;T%dC{>n`tKS*UcfCu>m8`(R zQmb-{>&sX^DNR+GyknHAE9)LqDj~eXqcfN)5#;M{eW|sU?hcf=&$+d*IWVin z-Z@Rxn3?+uybqP-&LEGedX%f@OfI9rkV=|+c&036W%*QrbDFv|O?9tAm$*7TAX9;Y zdM{2>rJ0cgG8I^pyfRJ8%C*Q9ect%mQl|?iEU>!Nf-BRVHf}3qsjI6gR~l2*sLMao z=kQcH26_5hk9uM)v#cs?Zptc2O=Yg8%pp_q7QC{}I&$iAEGu2^>XQ917#8oHZ&cnu zvZ$d|H+iQvGdQ`Rtt``X&q0RUZ9A`zv5mIMXV1iYZpD&!Q+RVvEFg9@lF!wt)@JUl z^K5%rRJ=tzXPXvFH03Kf*GtXz+OUu2ly?_PyV=$w!q9fH!?pGK816fP`3hFF*7dW5 zOa@amY+4kGgkpj8>rY~SUY~Q^Cy#)!3Mq@ZI@CUB-iFqXlQ{~nqcIlf3Q0Z1WHC7s zjp}3kD{{rVYeKPLpgxpu)A9y+?6mGWK{=#-zNc3`?#3JD(_*Tf<$-XdF&gVK+A~XA z@3EegVX$Ey?PcEBQri;`N5q>dmAJ24@9JLW-nf94mCL90Ks;osODPEJ8rOb9&PumiHkSeidSa?n~modi_37VXKj|d zt!3f%wpuZ~#7xpXA@@ss(vRV6V%AT;Up&ve1{>fOlu=#NE;_VWO>V5OC{NXH8Ip5c zD%BfqgxguPrYX-|(EnuaoZ@;q`5UB4IW?W_fmlF{>h${?<=eXGP!y8I(vo{@!8{$Q zJ9?(;P`5W}qbvPR9@7PA2~1Ydo%!v`tP(EOjX5Y$m%?Nb+frBAStX>>Nq24xJC(Y9 zf$fXeeN(^K+|O>AGmq(d)Q(kVY0f#`4UdXei<-l968 zGYgz6G@)uYGhK$7A#WLC-rOi|Cn*2KLY;wxSQhkg4(oM5awW*S0%iY|5|aO-8pO5W zhTL;T?lk#U(iI4bOV7C3v6^G^LR(iyRlc1d)2_NW2BXSR0500}Y*_ptvZAgoA;sUS(OF z*VyeVkI8Cu2J;h7Y8w~auCA-}YB-e&HLKgU;C9sxQgEy4mie|B zNr;Q`X!cq}tbtC-Yn&^00}N9XT0y}bE7PvJVWBN*JtJSwnI^R@g{Rs1j^WJKx~@@Z z!@5li-CMP56xyb`VSX((bajhg=MQ9esnq6TWF|i@%VJrY@|HD-awRCRd9_>Qx4&wu z>UIUTr}c>f8`L%|uti;G5WlWrsmyD7~SfGD*-1v~SF0xX}%F{XPP(4{a}gW8vRRglV-HK+7$ zU){X0*0ozGLG`YA0e3MnRpd-#wi>NJig} zi_oR8)E72CXnUe|Ftb&t3Gy}3748(Te44vHXbc!{U0~a459+nk7R#cX^Fq2|b<+Zy z)Ot*>HdA>FCW3T>+J*(TsOugDHmTdPz&6#+pq%HYBKZeq;6eSR)< z+pFCxKLbWv7Tl)Rje0ej^Ip5IS#9Hj+tu}%UJa*GWlaydW_8;Z+^*U~3T{>1GQT#( zCr>FaZHhOTWWP3=xku8+xCbc;szKyYR*?1n(C5P_Z_MbGr@--+Yim;;w4sw#KEj>w?pOZ%P|l;NP&p=K~yf!3P}Iv833S^|?5 z=z5dM5_B2Vbyc48fwmuNw=!9Tx_#anl(vIp&2d6YSU;%x_N6wpV*le*0~(VWB&$b(un&)V3_NOECn8Ist3@s@uHKmeqdItKC!{(5AX!zAdId^aIauIh!@!y1=%z&NL>kah&;hiOh#U zbx$a;L9IvRt2e!$+J*(TsOt&^HmTdvViA9wTKNl&eO>FTg4EtnV591G`R!)<*Mybd z($4qy#-vS@RvNa3f<3|T>k;LzTy_Th;$@0Zz(1ir)EP>ICiul)uTuUzW=BBmiN$h* z#hUu)gY*WS%HPG@A>QyU{%B@hXDASBRQ}jSSy#NhC*0W~Z|!yKHjRtl;)!ok-uxL0 zE2$N`<^Gxu@r(6|AG2Yc3^^0Ezjl_dJv6#3;m|1D!n~|9pSl{I;6ZAN9=q5zo!y(+UD@4dPGRoEH!uh~ckl z6MNddC0tQ{>d8}T>szO`b%xtB--=J<5q~u@o(YxPyG@af9rI2N&Ts38279{1?dG^& zyeH8g4)^J z+LKTCTkDrjZL1IVw25DKH6X3go>(xH6Npdj=m-hTxqqN#Mg6+mv|ju!Xlo?Uo%<)& z3kkWY$lg#VaDzCG7eu2SQ`>68kyCRW1^sSEHzh6*J+EzLARY{K`dfpsaCbr#VLpQ@ zOxZPm=2wY@;<`0y#l1j!gNFISr8xW%z`-xLY9DIG#N zPQ8A(F%TDjRZ{6X{#nY;82rfAV5id2+B&kg-nuO}TN&A`Ru#|H{L197vx<(C>j%WI zFax@}z4E+VTh`UB3F%5;pz9+bawiaKOXmsA*X!mN{6`U7$IuQ z)RJzi!@pu_*%+S(<=4h7G)jXu?hZ}t1On8num1To1!uQnc>K+O0^2Vm=lva zD(0369hSL8Sw7~@nlAcjmFm1TJuB+Hc-@6ehWaVCeyLxnDpg>*PqrmzZ1Hz+S1b<1 zx0H1U;!~<-S5EaW7K3!Ye{tpP*|WsK=~PT@>WKuEU%mBDu8G9Mig__#uMTZbO!jXP ze6(2;CP(JZzvX}#cogx$}dlLSLI0eQ0LTHD@ zQfIM>jpxm)6w<`615X!2tg=!pLd4ZXhlplZ&zn7~qT1iSL!7%r2kZz<_g9uz%&W>g zm0bCYKKNlA=K<5>Tv-WZRtU<6jTn58NcVZk0dHo!m;YZe-aqIOF`$!^C{|1xO_5My zaU#)OwJQhDC&bjrW zgg7%bhC`hl;w0LYTtzA8(Jg^(q11^tEY7oH$s69Obnr|=E5+IGf@rKmiBl)R+2wLG z6_sLn5mA=93FX|aT-+#U`EB8-IL(REN4!TYVk4VHBhemlcJaEasw?yzvRdnqbLW)L z$(&+RXPr4}oa~Gr#=h9zzrHBk>pnwE_h$f7pGTGIq-M@He=yremCyN1m!xz$@#mo9 z$y$<~w7f#@JyItXOG|OnXk|1WRzAiqk6vofRQ>7|$r-**mVh7v3BZ%QmrEoSeFc6j~h>CMW9_abEY_@_E|4 zUNJ`-MiteS)w88(T^>ar&UM@B{*9yb=d!h_pU;+_-c4PbJ!5+8r2hJ;I$kPf^}6Dy zDEBWPXZTcQ^%k9H{CVvFe5aWUn_l)n+2>EWWQwkusWv7=j@09L2|&Rz1tK=jGA z;*P)~F&@;G=2gi9Q`gXTd5gfvQa~oRie}DFQR5u`CCHbkA;hK zM)J0+s9U>MT)inKmAWjdtiUo;L%VWy*b&+!E@H$vEB)ErD`O$$en)Z^m@BSD^=;|) zN-?1*%x{l2X$NMq#o`=fO&ZLa-)7Gd>&nculVe1ucS+h-OgWipudZhK$`$fRH*Tw< zuWP{-kybIG1{2D{ce8Mo<8sjJo;7#gY;7u;t2-lC&z(0(T)@(E*Z zCj9VT0|W=|7%QuB?GPuGb!1K-rp_Nxv&XnXyQNcJHcNM{H)pQ6m8iec>vfg);an34 zk0$TgW{qQQxu_lKpt{f%w{lZ=cFf(&z0dr5A^njjT6xLy-W=WPw?Zribr*ulPX@%@ z==41e!#jk^J=MvpGn1Asca5?#4aA!2l~cO`SJwCybNgP^8s$#EIxY&+ZdK-Pr81v0 ztwDw91%8^yZB(m{lb%bM?bVo*+Mr*QIMsj~!)A*_L^ufci~lh?uz+ zHGR&jnx$LVRL#;K(RsbDkt)<1-XGp`UWe&pnl&FPtMa%u6((2Q>Lh697(Z?HoR?nq zr$=<^;=k9eumM^2d)?Ku=VZluBK9U z+WL&Zu+vf%?_@eAaE~#6+E4@Mx}0gIjTK(_-VQ`=51A41hxKG11382HT+E3MoYTGo zMcP)@meE$$Fk;}EY(3)7pJl!8ye{kd%&4iT|EF^!x3Sz^UdL`KYtLy+hJHcq`jB~D z)@{>-otjF#-@KY5&AENh_B3seC}x87@4a=(zgEvx9P}U(P=OlO?2$KoGj*GB6`TL( z5BtsQ`o$J!TXD$2lBtm}CpPCCj~g~D0d+~6cB5#eq|<^IBVm5D1z~H=rJse1wP7QO zMc7o>|67~TK=W0Wx98ibtCWk|O-;o4*(Mw?*X3Q`>OjR!XV-kFCIRC;ZilzZFk1eS=Oc>q%~$ecYbQYYL8TwLYxiQrnwUSCylZ zQMMbgx-z9nYjwRE&yP09-t)E&v$dHP#sAdSG@EVBCV!M+*p0xRUyiLg_dbexp{BNn zSelK3{{L!cy1zs_bMEaA>VNBJgou&ZxNaATF=y+x7&qrEj@PrXe9-8+9ly!(Xxa$+ z%6J})MsUXbY=g{w%uSl-iXp|E^BOvcjuulfmGtGSq)>`W{r*y#j9`tEcdDTO>g zj?q}hol8GKTN%^4!3Q9^cyLom_iKEZE;r9n{EarJdu{5mzV%Ai_IPz8)3Q5ZWHy9r z`eU&&)34f@nUZX2NYfwGLonRVuyMN6=D(#J82zh#ksrH$b{P^5W3NCa8e`+ZLlGD) zwC!0<#E|~G;Kx=s5IO5#%kA?}cShh=)GFgz)7H}#GQ8%9Ij<>vzzocG4qd}(w-`7- zw%EZP1AqZ`z5YFK#y}dFHB3dX#;FqN%w2mD~(yPPP;50wl zA9L@YZj`Z@zv*>*>vzujtGO7Tn&VxX)||YcU0ZH%X3m#wdG5?$;n1h1zUvHa^Ux_@0aMesxagk3$=e(%#tgJK>*K{c(F6vw1}z z6ETNAqOAw9+;-E|`F~H;-22BH>KCK0aXr`m@y+IV?!x}@#*?tax_uU?w!9=1w3|Dz zMo0g+@G;weB8|sVOL)yufC%(!)LpY2w2R_KuE(r9cfRZ!=iZ;&s3oaCxA8%Hi+0^P z$ay;FV_@^#w7HiG{C3lp!k+!vT(+=Y>-kN>!3PcKSAQq=Y!Sw{|u4loSAX}=;uUE1s)vn}x^_h8x8?D^4` zHxF$0wD?ooJ-wc5+ufSW*p_UiqSTnp>)3Of9i!QHCs%dK#-_WCjGt*xST+?=-*D)m z|2_*5Cje~RbL+nQ9gGA-JTOas!N!-gs6hjM%BRYZUgkN=eM#<%rumf5XbS`Wvgk-NqE(Dek}93-^ZvZ^Lo@syCScvu(1UD-;EtHGyB1s z)@+c`>=)?IKjJ^p&f9F}o!XUrzqSC5xhwzk7M#QQu%VPRsYM9B)7rGF;9Ne+oZOjQ z(OVDQr~g3*P;Bnca3MOr&C+TWJ<{Uu)e$5=$7Yt>#Q^_&q|CqJ-R6Kj4p6&whGxsV zts>M7HQQ~nW?RYJ@(wZ=&C?wEtc+V`SeGu<2A-C+@=aZBA(mdai zsJLuRYCp@Kvo<*w^X#VBxaM*_Veue7yl3D z*@lmzY>d9}rnEJ7&uSMDSqK<8jHl$Z~kAKOXk|vujeyZt$rNR-~;v_(64Xv`g8qD>`U$kJD9#xEkn!;a*GJxa!V860; zRBt_I(DHzie%t)}$AW;FTheLLmANyU$4;Nfw7&^w43ZtEaEpT z0LO9LSpe;(9P?#t^4zcIb{sF+-Pd9GKe%~=<(@CjKBQhizmOh>Wj&rkNRByeAZ{vKO6a3@6Sq~P5yM$r%QeM@h8uI zGWwIgp9G&w`}ow4SNeGNN3%XU=c9oi#UDNS;RPRd{ZRk#{SU@{F!Y1XKUn|0#os&i z-9hj6dAG~EZ@+WbJ0srt{Ow+Etn$V=vxd#;J8Pv`AHP2B^`3je2e1Yu#R( z{pypi?)>UnuTGkI>dav?jhPG2ocYRtSDaU-zkJopr@q|d+;x?M@K)}?a_rF{rHi~9vSvX zuSW(wy#B+}r(ZSw)agB@uQL7XhekfM`9p6%IPJlS5B7gBc(BWZ7d$ZFfgh&LoHlLR zh-tm1tu^iDsUxQ@H}&iLXWl>d{sH%g_s_WRocoOXy4*K=%A_fyrtCar;d`IFXXks? zzo*+hGw+^s_wjcxclWHjhTYZYuJEqech0!;vOA4Cf4F1p9YgQf`Hto8c>ne(x8FQ@ zT{EE)8{vSJZbWzcv81XOHG<~ z{W;eUy8egjreD|hy70QSuA6o3&DV~;cDZY3O&mJ0_r&!letpgKYsOtux@Pv($6r0* z>Rwkbe)Y@=H%|yBEHz==RU@w&a8=id+ZSJO@t})) zT>R`s<1R8T>T=QS3nyJT>cX8b9C^X!7d(0Xr1Q@?zt{QQ&i~=O~3SXK#LXx3edmHR7x;XMKL=i)WsCX8$wSKeO-H(%5Nd zTz1CjGvYH=I^*-xN1Wc{^v_Rw^0djP4LU78ZI#n@K4q;_ZXPps%!o10n8nA;I(gv9 z!O2gKo;3QL(Y;1@8~wvc$Dh>uq>oRWapKJ<4m>eDaitTNI-zvj>|@6rJM!28$96sT z>tkjd^ZC(t9o^^X;OMSLzj)NdqedOI`H?FfIb-C+kz+@0KC#s9{DgG$Wai6s(TRWTYmnW~=f1SJj z;{18~TA#1kxBIj|>T3+^y7+2+SDm%;z~4_?sq2cDEkEnGYc1QSOP}A2Tk7*A^(DG4 z)@PA;p@9pG)&^Wa}X z{eSUd`0S7PU?JQ^*EUL;zSEY*Cv@}Gnm_!R_j};G-{Uo+$98A*IP>W0Y3oe=qVmSk zS9Bj9SZ1~6hhZr&?YLw+c3284_|NrX-!ZFJ9EIM9#+?^T#@4p`%_EOSNzbk8sQ(q; zEsodU1lJQ>SkqqDw3`>vwCnIn?nrhW6&oAhF!Yciv!9!=VfW#_VFiB03QM)9W|eHC zW|#cfFiN&%ho%`DLQ1 z$k&6Bd*zIqwd2kBevr(td`7j74n*PxfE67a>?-Rnp3NqwiPybHEqG_nB&2x_%d zUgBNiIp!7AsgV-zp9TLS$h-&ON?pFD8MvsnQ7Nv~Y9%|YIHjl@#Zb0yRDG{vdqKIG z_vI_Odxcr00_bseaQn%R3dk7b$ryI8iGo$r8M*=r_vfwEP%CJE395sLPHM*iF32 z3MU6tue7Hb_4`G>se;o4nfC^8w&<@M&o*o2u;kZJw05~%F8PjSmcr1lMULlJ!dgbp zs~o`n)n0?@sJ|~f9|(S!;WZ%dRnS1kej~POZY@NY;W!?(qp(s6Bd1&neYa8zt7W5N z22Jv6*B{08>W)!$)Q3ww>W8~i|FMT4%Uf>AYgExQgy^8W&~Zz4)u@)Dpj<6gjL>%~ zm5Ob}MiXzc!x42pZNrhwJ4|?Y6~5gvyjMZbSK^fnTw?Vf51Q2T;?1smbiqG-x>@(( zk!Lw^*>_4-4QzJVcTt~%sN@8m9YwM0M%89{lY`5wXF>fr(d+YqFJ$z5D&&n9)HE+z zb+fPkdEaIeChL9ISoe_YyAOBl*f(pYS+e2)_1SjOKO+LVIs^M5~%gwf<_#a%a z1oa)HJa-fvn(41-ETW(G<34}d`TzCCc=R!kNBS)MG3mME4~@TXL+cwW%eP{pi8_Xd zqOCw)zfvw?3#V7IXz&f?@bswHr&tkte?AY~jSCV%F!3_mj-ZgO5 zg4d0rDo$xDMW|RMm^^q_4XhGgm9iTJp=~tx8!2Ck`bNSN3Pys=I~rH3;-!$cT8m*| zIAm{x=$~yG_kFT+Y}@o>(=*)Wek0{emfDx?_KNUS1!FZ*K<{w3sni7hjTs&3>o^;e0Ef131L`bWa^vEU~e-raDu8eSdc4P6hNW8{{?vIjdS zgfSaNcme}`v+bA_-z#U@ugIyLJdow>fxA-qZYsE$Aj^9L>ht@``fS$F9r{%l;{v)2 z+eLjw-{F^H(+Z7>Rkf;_eo{N|6RywaepW~AKHQbY-RGnpKQ9OczpiOJL{;e zMs5YWg;1b0E?AZY`^vRT)mjx}aU50xr`dki4jf#UQ(Jim%i9xoC3&|L>?O$Z9)zpa z@ao80_A6BfV**5VP@k(%aS)XQ%oh-(Vi{JYW;ffhDW7)B!OXjr@N6x(jUe+kqh>?xjt*-KVtogzV&BCulI_+rwB6dEqIEl%JOwh zvw{&IE?Hp&q5TTlZ(z8kpceWS?D6-5TC<*$&#q?PKVMr%okmwG-*Li!i6HYHfp5Cw z)ltvL6M+%HgVh{G0rZUj0+_HECTdY^gdz3`XZlIeZ$r;J;;vM_I|))vqHE?o7w^cw z(2>`0-N322QOU1jmTzNvQVMWlZK-0}hT)V^o9(cv{ib}$t%q>=?jk(93hpMzyxZeS z&1=~eJ21VdRF109vln1~gsjLgKWcv9`jKyk&AcgJ^4_7$+gEsY7wnheos8ymD_-sG z4cL=tKAus5cFB6R-D*$@QI|`ORizoQqpX=2PQjgA)`gOh_>v=ys zjatv}@%v@R!BpQVqkoPuI0PZ)-8BPaZ;ZJMW{XYboBS}mu3xSH2-fpHBImw>#MCA) z9zuIoDQ{p`;Y`3lUvVNdVsw=7Bl#E{f}k40&l6Ss=Kfg|IknHHvAh?Fe7B0+w`JPV zdf-*Jqnz{5^IYvf0KEIU!Ng7lZF3wL6+Bn^yCTX*l&0S2Eh=cpH-&*xn^TNXqj=zwap4d z#bbHRenPGLNUm2KAIbGTgL*$ND&>cX1y+z5Uoqh7vnVj&f(g|W(rYq8(lejhxV>$9Mq%0~>uf3zU;eu<|D z)OyZo$EJD~)ajXs?{GmH`P%x83vp%R)v;cgm2zk}R;5(&Bbs-c7!j*c1h+#CBZlX} z_-JlN+M363z1s3vu2;ti&+&pM2(r9ng{XN^n66PntF=6IT9^~UvtyeUP5;eGh*pFr zY0|SMeA=MnnD<2CIZ2Q#^)`8FuAt^MyvVE~e^e>P55@(@As14m6qNm{8CP6Cjxu(R z@FkOuXWo;AXN=$}8Q!aLrJnES^>3v8b2=W~DE-C-(qG&p*R1Eu!K<#%Zd~?!6ZT|a zkzd91Yo#d0AWU97H>_2nTCI7$puKSdm#?6HhR8Qo@JvDG?Tf3I@I)Qwp_YN|4HfW4 z6`Jo`s8aC!!j7#4@Lg4_LA90{2S0h1`^i2pa{oM4kIoZ3Uyykp#?_-rd0{aJ zFjal{2`lKO%5hW*Jr{Oe70!){=R00zzL2gfByZos@=g$WPZc>&%gDP4cw5M8I2Esk z`dqHL@Qa2X=0_G5a{??o)bLH!^D=(mgU7JE>z~H*UM%vB6TC!_*vWupRgg{8!C>h6e9f%&%W1JQD<|r)cZ1R)n5g^cxs(+|aF+ zT-T%dF9!e6gF71bI;Mp+BeG+qU6=M77m8kQ7Jc6$$nu_wr`QOuj`EtZ?N)533NO2j z@~u(%`tU?Mt`pS^%nB>j=60m5a%Nr6N$<0`UR@{hT`xFEka_pV)kb)A>wss(S1S!WF{B%I5Qelo;T3aoW_W}$aje1VN@7|p!Gm+W#r^WH5y z_XyrA$h_y^O3j;hJw^Dmw=ZDcDZ+D~;Qbli)m!qSUoayFelyEO<-+_I_69a1qX&WZ zO%J29+gz_wKJE02n0Ko1OcQ({!`l^C>iI90xx=c31wkwiq8&Mo1%HkSzjstNLIVbn z?`HIT{T}|O!4Y7>i?sy!kxY0TjG$VI zt*TKoYED?r_%~8MZO|pG=NZEDnBe1r%v-^gnimblbOMWpUJUs*7J%X3fZM@#Yi?{n z%@rflPYPc$X*}~jAv{kCK9%8J5~VN;n(t^|l|wtKz-d?V;t=CPg!Mrzqab)Bw0tb4 zICzL=|5bAOYh1oEAJrd`@}<@ECBS)0rhLiTQ_E}kUWEFKfzPYac!b600MP^`D8V-2 z?6EArxqsF+xvVZ{^2aM!-k)C|B=4n~*Q*)ux5LBA zafDCPuVUU8MXxUjzAVV)8{?`QUW$5E!2nyvf&xM}$ml@5@;$Pz4AVDbuUx5_ner9B z2Jb7vGgI(YLFU~HS0r;sUK}$DcU3hiVPPBd6q=l2MW$2g+nf~e#?jJSr7wVIQ=N#cbH`9*( z241zEy%>77(N%?!T_=Z~gWP?kY6KTJ!Wm#-HrK19HnFZ>ZHMbv&mW3jKN3vWb68%o zHr2eo;W}`3qaqnK*s5&mAXDV zl{lz}6gV-e6g)YwW8r&-aaXpi3cL(PHa3##zxlhEWHA8%Q{m|0h9h{7qE9)g45@ki)J zfSFPy^00u1{tA<)CVM0K%Zz%tCgBrYzL!gR-XrCFZ>HbaxTU<9b;F}xA9~48h~OBk zjAD@x5m2!gSXgHFn(LKz-()V|t?p!bQ-35ym)7TjDc08|X$(}CuUCt!P;<59APS4- zp|su&CkH}C9Ixuq3V)`57C!BoyP0w*W$4+>d^}O~BmUnHD z@6UpN$;f*Rc-7@=g;-IkI*2pJw20OvSyNoPLIsPaEA`kJveQ#sucipk6~cR^ zAh+KH8t8^sM?L3VKicuBx_&i5JrKSARgfauN#D#nrZsO)|8slZ^@L}A!3{FJxX=bG z<;@$1G}o&Qg=ZtdFvI(6aH{(a6OKZU;wQ1pj`7H^!G9HEk)e#SD6X23=LDH~ zne-Rh{SR~bULxgryOi@CnR>NiOL=qhYCWFi@^zkPd1H~UecULQFNUHPdd41@8VuJ8 z;(~n42aPh~t^;^>Ost=oWycE3e#V{@zT}G+m^Y0}?IHY|X7qeCc-8ee@3=2~4c^U! z=kJ1>XLv6FFO3Zy+fm;6g79ivy~OfvAv`?=x6JTv)RH%6zmf83r@hR)y@Y2g!L2jA zyR_uBD_H6E{c6d=3=QJ~hCqbVV=yekZHEZ^s_SOv`@)y>oXNb~2v2XpZ8N;ocGY^$ zyZ$SD$>7(Rmm;gFf7)KKPllJQu7}XlI*tp~D7I}6^H9u@Fb>viuY`pi#ML9#u#`btkZ>M^7C5=RYBMl1)UjYR5cB( zr8Vn0UH8?*kELHNJf{o)8G_t?$+}j@x95zLNsbxA`*8-GQb&C{BqBYx_q#LiuHfyx zh$^l=XaAhIH}L)=^CsT+v=a!3cW1#}1etebd_zC&_lfYQo&R4?#)|#?;_-uNzleSS z{+M_>{?Pt~Kj7oT@#@%bhC^+`wFtWXXEN$DDh<0g(sYF z*^1%yYxUUru+uY#t4@?IUVbx}PLkkW#zrJrV zIjD}hj;^2NT|jU_LFT<3->Bzhv4a^HR${T5fmLq1;vxPy#5Rf;6G8a+9k|^yg~JK7MuM=JFk<{c_L?e`(Ep8o;fZc2IcuKx;OgO?&S zsCwV2xzR+nQ%?oSd+ziXa(E)JkLVZbs6*2 z=6FKw8|F(!RKum*vwb*F!#m$7oqKbnRcpR$qMs97hyY@ z_M7r9@g>W9tneHsczlNUB5*|{bY7H5{FhFT~)7N!5ljK{LceKbyo*QaUV>0rZEqSrE*f(k+ z7OE;JTHB_$+z8vQ%O(sF1Cb+9)=wyW$?v{r-cy8!c19BKX&GK>yXx`{%Q3bpP@Eg~ zu%Um(kPuLJjd%lW#r31murhvc;nSA>iFr>Ko-+i;W_Z8Gm3n@ZcfKI=qSWuM-znue zUds7WLGC99w3HX&dswW&DtE=eS zJ6G_$jJ(yBya;u2V%ootz2#^<*foF<8SGTSIw_X^vC$fXVv~O|<wo(lxY zvq0s{^6u1<7aKs~YR39+7+^|f``8JLp&sj!h#IlVo&yWBx!*{}F<)}g;>>%I@LVi7 zF2lPGc-8$CtuMO>9l@@n5bM7PXh-}cHhBjocFC42@NQ(}P5DyPFA<*cf|q7^j|4A` zNgewuY_oE3{31HW0J}7>X%F!mFa=5;w!0Yy(j>&$bsUj1xqK;>_cGzRT=0qv@A)lx zbJ|xaU$Wpb%zLHqTqQUm!#lJkFS0O{0|ZkbE(nVZh#-ux-i`HrL<`k$Kqc)(YF^(@ z`I41aVBV{R=NiF@8Q$Gn@*>U|(-iPlV+3&^K9<&<1DoR8aUwLLM*YmXRmzu4UzvHY z6`tz^ug~zF){@u3;#iF6YV7U;CCZm(N|9Hp*hrLMRJy3{`t#9`>%ONVe=Xe=j;nR9|W8RyD=VrlMGQ20ZU-C*1 z=6zInW(Yo(;icUS>hd)`MCZVEE?L+c3O^E-ei6@rYUYspcb zOp)_Cxn}$7cP-^LXh$=aM3Ddr$!xH9194vnaVxpynuU#LWo#VD_zBP2wJxVNp+C#} zvdH&};LMD?J;1BBuMkFPnzjQrC>He!$%>*7)eK?4VVTbR!;Z72dX@5}sJ|*auL-`M z;XNC?w4;LmTZUIOh~Y`9W#V&0PHm;VSl(H}^M>G? z8QxP`@;cbF9-0X0!;}R5Gv%=fY!~UFFfXp)AWH{kNVB}cr}f>NdEXMAw*}wH@SfC? z*Ns9f@sr_dVapRXi$LRu;x8drkcX69*i{&1>~`VPPTGfg-xZ$s1mDl_(%xUSo)JV5 zmt(MbW{7%4%0>{9NkOvk4~Jfe-Kov;3ZHhxe$4xU@O&uvQHGbi@h$cb=FD@_e*fTM zkch^E;ezC`qHAtPJL26+cy+8-dGp9=2h`Z7E;xKR3wi!%MjMDVKj9q05Dru&T>`!${ro;!vAu1x>DE_kn3>N#iLEp3~@tmj3C zaJ`x>di|H+cNsk&3r=-jh`fG6*_V>$htTg4`JNWJpULR?3h=7yRo-=tGg!{Vmpp+# ziF}&y=^5SHx@q+|0(;Cgk2)T6_2cdFOJ1zFD@;gkMKdF#1bJS1d@;Go02 z3@ITn_r$st0xPjewPsd>jJ@&gBXv2Gy=Jhy6rn-#QLjWu7G#^ew7R3#a~1C2$bjn# zOJlI>X#KaIfeUf|4jjvASv9m4XyCGyeePIA5@$h>yT_M3PA!t4{7S5W^o2#D`Df=dfB?``--z0RI9j!~2K zb?t?lS>9cRXE(vV8Q$xmV|D(GDt2>)I4=nsU}>Lq6&_(YmJnADOWHz&J;H%A^T9N4 z?Xd$n-{zZ;h~#}s@NGfRzpiP&hMv{qLS8?Ej0efZ8}qo(-hQRJ-&UU|Lf&ie`moRV zulD(7wJlDn4!y_Q@w8RC56>%af1mRdtral7Dmvu`u;Oh>-9+!q_BcI59m_96d~_d_*5+~vOnb7PnV8^>G(Ta zq!ZS+nm<;c_;9U@9+%eB*-u#4HZpihyTgZAQJC@|zOK|T@y`pH67UMpSJ27g= z|LjKCItbT0MUcSlP%)9y2F`wDKFRnAFM5r6_kV+V*Aw~H7o-S=Ha%~NE4AM&r#+d@ z7gE#@gnVRI9V6rLv4UK$Ucfh7D)pRqzvO-sS>6S%V|llf`rAuzD?#R^-czmTyz8)H zziO9$!@RUZf%Mu_kTlz-XL_d|k8-X{YVLO|@5UO}XNp*$yKgVpN08;c0y?Ij_Ia53 z)6V~|H}Wut29HP2;E##7;}6BTeTt6hh*}-1RkaXX5>n;97z#?*q76 zLdlymFJkgd%zE}W=JKWa0rCDra73p4K8J61Q}WhA_+SGhFt=O;%OFeyac(Y>=u~SF z!Yg9zsictS8v10&^O>3gC^! zCT!no_D?1+Ex~#g)VC4&dJArwk(ZukJ*B*P_lGV&hIzL?mG!&=1S37KD7ca!%X_hU38L2%1iK@v!|^FNDFy3;FzJxz z6P5>39@1I{iS^O6x>UYdDjB3y5GpV{wwo9 zZN{eDZyYY=d4yn+Dc@&trLNC;;~1B_yDn$)r+Zo6K_cH^!66xW|J1Tx<;_!cBG;$n zmLbghs??*`1YZ|qJ%7_u&pFqBHL=&Vp4?CC$BJH$6FfenXUf)ama^Z-o6r2tW9sFq zbw8fV_a@=FS@4z&?;jwqx*g^91D`jV+mZO)^`oR64V3n?zaZ=RGRS%1eKn(I{;slUqzE-T3LQZ&a~czfRmw=QzTF?;nKH%;rZ z@u+Jz=svuRd`ymqrQZNyF^H>2ross65KG7sWds4jM%=bMpLG7wEr&Yw^I|3+$+&{l zUkKLz2X^du=$L-m>zP08{Qr6)`qggw9ox^3;*V)u==ekS^RFOpUuAvHxlbf{@j>o4 zWL(mJ1480mTCj^C>zSg!H&OED+|RDvG>&=yI-bkdm+}k*|0>A5A$Yqed25tHw2XWs zHRQ`dy+X1CoJE9q1{|ps2Z&WgiJO&uR8YZnI#jaYr)@+_&S^yQz^mWPvPff$Is;5O7_^4 z^}Na7Sj~&ml5dD^k zC!BCP^R6_Oc~=1e@vJKN2SMgt4Dzbi7jot)O2(eW{qwKSWjp5($Vc|;$}Svxf0B8- zf{XZ87hFS-%a@`m)=-vj&OE)^uzl-%+PC{L@8cpLW#uFOCo}RckKS5+-eS&ueA+cH z*7=g3USVF^DL{O-pd-lgK8-7NJ1WzDIwV9WVSWw!IYQ;~Ylz?s%2@dKkX9W*g-!N` z_Us^TM>78Frwh*+f@3qh6b-KKCv%?1r`1N*c~jJ{6rQUDCuDf1;YuB^k~7~|2ndR>r$3&r2lB1A88l#XWj?*;(B$j@X)zO#7E~&wej``uXO?{h3$%N%{-I^P=EO8Qv?vtB!-p8TXa0H)|7yvAiD$&xe8^Wq2o`&$tS&_Ujt? z*V*MvTIPD)()LoI!6ZA9k9uIld{#YN&``GFOKR+VRu&#l_hyomCjbn)%Z1lnj3~nW} zt|4((N$U6hz3{9oxJrii4P2@H-Z}FkCSPC1^M&;M-}7XCa3u6g^9DLyk&ychiW#{Y zua0pedCzxlA2%{n@f>*8Qyz562 z&zG(<=>HJCjum~MDagDP)GM`pmG@k{X%&`N)(Q0kq}|ZEH?>=emu+jmuj3Q-`cck& zjOn_Ow#dcYPp&I^EejfgEbj=&tF~ivp39TkujzPL&x=U%T`qE7k&$;D@T&beh#kbi zJUA-V3Mh{&rC>(>XPh63V-L#)4njbt(`Gy8%q>~Z_Esz}<*y-L%3nh`HpBZ3KG_8A zsAK#_4O``r4Ik%gAfGGc-NJrJItQ?RZY&ZLW4lhK-w?l*cK&6|`!~_+dV=d`^gJEB z>iJ;abK)e9Az6p>+2~sf&o+X+GrY74uby}3jGs(K995T7TWA!^yMXX4D7a9D_s`%} zx8J;e;N{t$l1O~6J`Cka{o-lTZcop&-|?tdYQGBRWe7(_ATEj-@q`#9C=V6(J0ovW zrG|v#$gS2~ueLutYsX#&&U$?oyh0FSzpiPY;Y!V$b3ab<{BY(Ke*F^R883LLAoKo+ zt3k^8oOAzv8mE%RkLbOGXDh+2Grapk&uV*v;ua!@P95~I*$bzo(K@?__$#;!4LTtf zi6NTwoLsVZy*?#h4B&b-UE1rzf{zHYye4?n@kn{&W7B#isGlPB=uq%c{W>*MuV`1l zdK}EV-Yszqn)oU8-$5{{SHBlrS&-#j1-y$Z%QxpaM2XB3lE-DfaKGr4b~h3Kw2YpA z175WsIPW>yXKljeEB;`8r0|fPL%d|?5VE}8@lM@ux$dvvB9 zeT^ql_mesIho(BQ>XW41+#q1Gd_x2e%E-Gqc)KX&&3P_uBJ%`I)`9giMLs%bit06; zGeyYqK81Jc_1{W>rDX>xKC32WHAC{g64Lb}=@-u9v8zt~aGqv6NA#PddhRDYdkFT= z@V*V+xA6!a;~DbCtNi6~j$=4EsiWRicvcr&Bg4Bf^h_&w9rx4a+&7WNd8eo!E$x@) z!PIU?WyXakTI$)zc`j`)sn3G?&LZC~g1ZWG`ThW2b-juxH*J8_8)p67QXIaB5H}Nt zr@;_0a7sW02QM|1uQs$Nw_ll$>Zb_Lse-3vcpd0j?f1@`S6t@#jrqO_!KnUPg0>*b zOW9@A{d3N9wbFP#P2!UDBc(iP-H6I}KSAc*0=#N_BgV`cAwfv^Y$Ayr_AF2yDrAOo za7w!4;HY|JC~VSmx_?g-yF))wcqx8@c!y?q1MsTt$-L*Mh#i@{&3?PO9ZP)Y2>-d6 z`n(KXDf_Dc3k*ozgH^!@$pVqv1sQyhYYTDLHOL)?foW#uN8&$f#EsDWgvyuZ!Gwni zvYw~l6ZJeLr@V>8PbA{E(^r#v)KzeGLFQcpdRE&TdGiF0|A5<(>`&EWNJMhh1UD9B z-eI^>`!{m#XHWMzr+yCoC($bn1jMfkGB3r}jmN8f+*kMEdHu0zeBCt?_eGH*#HaXy zJ^2VeR?ipUD6=A~f+=jjuT{g zDVkGVuX3LIkoqN4)VBoz>3KWB?FE^4CFoi0XRvVkdtiDv2QZ?zJ`Z_pB1F8GaAq5V z>yWwD&Yq_!`*0HRH|Vr)fOu)XPe}89LgqzNYSCZi&EqQj=rr%0dcUP_h&vO{MuMRr z^WKKCr9Gm_9m%evVq@bQh8{9x_Hz?9M86TxiRefLWq3HH%`RgLpO1YhB_vZdaoi#X z!ywas-{<|I+SFn7cv1a3;UUS0pDdd;d7s3UI$jj9dqIf977&+{MB*Eh z;awQK>bUxx=O83!-pTSxe7(NE)ZYUH4;19`rL2YO@hE3JVH)3-#zE^#3eT?um&)+2 z4PLb!i})PVj3|*fdArF6&L@f?D;2ir8ZjkrXf9ugi%sK_^z)_NTp)O1rX3v)UW#<+ zIA6#aSCGX2U_a8EBiLWJ6Yfgm!ND>f9FiFqD65{DH)ouiw&BP+pLYFG%zK#d(EOM9 zY5q&d1$N*nL~koT+wJDx{?e#5|-ipc$psCFb} z#BN{YVaA3+9D|4%8y3w1Y;tQZ-{W59^SmCOSx0>h@Dk5yV4!wH5h`u%w{J_{ocmL> zQ7Pd`@!r~E zJFvV*?8x;w7CCEz8w)b;$KbtCS)X(6U(l9$ljXhPZLZIM1`pNe^F>aI;BTwXwU*_Z z*B`t1ek`w`-e2U~Q?QmP-&?_}9v5=Xe>GWuP2-^Tg{A&3BDkm^>zS<0)0BG7d47tv z+~ch0tDj&!|3maj5d@@P8VTC;+yhr5mArZL<{f)moi8cf&b)MI;@MP?cHXw}mhjC@ zO5VKo#;b$t=e207AI9glJSjYTOZ^%k$a+2w-wsyt=Jn@1e;4anP~S>;w-%%fjBWB> zk1MqwDd%~MX+N2wzJb)E4Fxw6WO*s7Q(dp}<{L4e;_}_;87|)=MZTj1kIu+TwT?2c zbUddf=RQqskz4BL(`eCTKBuM|N{{r~U2si7mUk$4)%7ZGeukO9uGgpJx@EaurTMit zllt`cOuc#*yyQXbI3DGVlX+%W?yu~=+&^yv9+J1W;I@J+?=Il|4sScg$>jBKNWK6~ z&U^Z4OGrb!iXTi}mIiN&c?weI!1s-f)n)A7!+v&b0YYZ}5@Ld?)f!UP<5p<;~9^Izb3yWS(>3#s#Fe_=$b0U?t=wNE@2<%G#^#WhTbh z&hrRT|6n5fko5h)NxTCE_ZMW|p5Tp@^5#5OOFQ#JmRC@>L_UgWBYw)rK*+pZaHZbQ zo->bJx=$l{>qz!bUM=!nBRElzd6&ggO;F04Ge1(Y@}fKr?!F|~XPPHaeZEQLyg4K9 zo%p7Oe=^^BF=>2TiuyJpUvI%}1zBFovaaqo^2X&#f1#yz9n~Bv&n*Qh<78X;{uAG* z{i4-c;2;LpDItLX@_SbhU+0$tEK`~YQi?3sKrW%?aZvVWrt6dS^CgMrMCq4L5@dNl z#5d}=KKK$$)5nH=rxs!SMT#}7hvH;D93v9q^cV+zm&~~j5@(ji_vsG^&x3*wWq2Qh z^yBe~YFx+_PpFMNxIQiEWL|%c;K72-`yReg_mg?g<@xomcwIx* zH}u_bXX5QExVs?pu7)eMU&RUxr|MFDb}4@>P9LE2>1uQykcBpeLm=bk{5jh0{dwFM z)c-2wxvP}(-!kR@AIm}USv6z zi+x^neo9=$Q3Mq_%*3hTEToE6fz!RY{Yt!7GHF*{U${wlDGHYOX;qz&^*jyowy-zy zohPEL*N6M(!8>#ROdi*I`9jasj&>Jh-ZSy7dfd;MzdaoX)A3)oh37Kir%2p3c|XRJ zY=ZTa_T`IxUdVQp=N#TNjzaQM=ne!U9#_y4WO*OPQ>gomoN=2Czl!)*^kE|3VS>Xm z@_vFRQrpjY_btA$7x$BY9l-r0l_$x&5$Y3_Zz#y}QuccFygTPPHR*giIqNQ-cmGM| z*=q@|Ey%pLLi*3}Bpv7bdE*$L+KlJ>S8c((uZz611m6&3-c@n+gwoE5Oq`}^R1mch zV6&!;?RyCMijn@ys>V1k&ho5sCSJuluHJsMZy5FAxHIXO*1ZW|%areL@TpqfoO#rf z2Y0Q@nQXE<%lifHOy&Ef;8%hy??QMA^|+9?d?oKynpagH2~OfYQt&82=6xPlYX5WI z_1_P-<@y|L&-Hmjk#8fxFe5K{nbdY{UOnHq5ciW}&+0cyc~-$k5~2Kua~R#6yzn?P?q_)@ay8Wu{ zID+k18s&)hbHOhJnfF(aUVY9~&OGW`a%^3{DeAP&PWpXC^gS%2=hyM6x?bh9uzH9Bl_gLQ4Pk4#QXNbI}AnSPvT&eBY zobhI9`$@!})n^JX#mkVs$+BsamwFNPzKPh2;i~f7l7mB}kvtEFxA-Q4`%LV^HG&A~ z&$8#Vrt1r7-f4=PAfBxRx6bq%*WoGD{YKvNynYnB{o&)e{Zd>i$w@r~@gJVi^Q-to zZ9nHcXF1(>l!$*t-x+r%zFh=&73A`L8c(C{ukyyJp4yH3s~^{5dAAbz?h<+L7G&O? zaity?a_%EY$Ak2oEB#9;&#wf(&Xh0Bj$6z_^VzY)zLah&ua+&QIO^R z3cTw6DrY{%G@c+ueIL;?^$^6rZ>C-)_*7lKInUQf#D3KVY{upLpz!S=d^=`%SHhLL zzoJ9YO}7dw!$7Dg@~HcWH$yVlDvq|YafY@Zxy^B^+LrHfe-jlc zjZ*fLdGm{&e-HC6JEe~L_QKOgaEA=H*xDblN{hJe1#?kn(%C@g4|0tJfET zGBVYeKC)cnfMM{47S2BkYFJ*uL3}tj&8o#2URhU2&*jr^6`tD!Cuexc+ElN@!u4t4 zB)%9MG^&s{C?mCs;RN7yteWYed1v-7r1`~C)Snfe=LDb6@E#4`7JikSdGk&j!u_Pg z=jt@xl3r;&huSU0C$+U-8lBYZRyNWhBeK3)G6M_oDztAR@{q5u8hTb}m$AkZWb(<} zu?x=^1obUaUcoIh_4zySs{Oz@`$_HQJ+t${Z-r;J;J-4wpMh6B56w9*OT^!vqCQi2 zUKM;T!#e}K4=Km}oOvNqyGna^INLd7AyfHM{56#;#b39T?<9Ppu2)!=tavqKi!aw) z%u_-HogqUXHhEXdMh)LoaiV6^I$a`uI!)?V-L50v&80qVk*QZ7w3Ihzz98-KBkFQ$ z8y(5=k_AP)gGEjn|J&qU0N=LgH}c7=$@!gW9!mW#$Va?)3*IBhgjZ#u@ZB5~yNdB-Wj4uy}Bc3#O&6gCt{B&#q+FVbgem zr01}DJJt_`UWs>GDc9`;Szf9c>UNYfe{6EhCiV8)Xh$yz@5_R(2r}=dkhg_DHlJOW zjC_FY=QQqXFR5313l0!uUdjg2q8;TMkF;9{a{ny;Z=K?;NzXk*znfj>TJNV4@i*w?38eC+@sIS~OOSbA z#wY6d=e+yc{?(7i-!yI{kb1PU$Vux~^c>8)1fELmzw!+W@hKJ#4vT8ApA8HNevIQM zY>VuH*eF-B`Jlwlp4!p+?cgAuI|M1Rt&R7EmU_;6Ub)Qk)Ac%iC(-LeqVMT~EbkGx zYBB!ew1qInZqxuf1~LB)aAXTbo*}V0W)WpSgqhhi4r;rM;PFVtC7mMJNj~Z?seA_s zGVcobb_I+JiujFu@xaMRJMsELnjh&}lrQm8whO}R1(|nYJcZg%n74epkK+0)s8b0N zAMINtd1+;iu9^4u_*5MylXG0qBrZ1XxAZH8#}i&(ka;hMj_FLGj`<35#*3!s)Ff%X z0@_(j@=>N7!lwm6_PVB>f~Qi)s~GSyR6W>NIE4^-@^Ks;&QI|x$Y<_X&A0;JN|cGC zh&WCqjr-R7K|bP(q#aiTSzgkHy8Y%{KT7AlDeCu%d{YGP6J*}*R0_)aoHNcX-G7^+ zev#DQiv`CCGB0`4)ctebJPH3;m)ozbU+J_zgzE9VBpGmuAoDJUPt@g`H-GH8d-Aw1 zaY=e#Dc=pGTsIVC-evI=YI`GZd|kSaPwWnTFX7!-_%_M#{t5D`?a7?y5hUBO9hv&= zbm|vLzqD_H^iB3VU9-F|;hoywo;R0>yqN9 zYxwJW;Lao`MR*bKrgF`^6#Yg&?ekypr=9;_PtWs89+LCCmKXUt-h<*c*T%={`F`HK zJ+eNS2-epnNzT7YxsrWJ*DUWokXPM)^PZnFl-HXRiCfX9ihj2f{cfMp^PzYGwZATB zoO$w>o!P!h{TsBOjpU>KY=pF5rA^)~@lAWO!%d z6Ls9R=OgcP*+9Y^4@scy*hL6MfSpK{$b%yf2d27Va~=$B7N0Ab=7-StML`nZeu4u9 zxqN?YS-yGqm&y8EBK@>}kCgA$kdxZeHiFDcs~u{)F6TK@sXryP@APMcm;B$vOL6vu z%)4nzd2_CZru&^VnK$Tn2rv21h_7dc_h0x{Jul0v=Y5Xh`BCj8o*ykG^RQnF{w6ao zTLw>}uFrY%$fbTl*{`Y7e2D55t;Z5lITNy;DT+ls|IHisbrr`ECK8vVQ`{u!_gc|6 zt*p24+W1D@Z{$2jOp|;8Y5$?qx()Hr_&`YGLL2XJe4^fWocDa#J$S!yW532Ik?$D6 zV>9yp1YY&}pznCLSwolM*DCN6mf`pI9jp|>n5|)sMu3C&otH|%|B55D?AK^q37mFJ) zonnHs!|lk+tS_vz2iud|?N`Too&>5_wBv{5emujwI7)jPv@9=Lb+fPkdEaIeChL9I zSoe_YyARJ9->$7Roc&j4|AYNG>H64o(eJ| z33n#m-w9HLC|xt}ub~Zfea@MGQuA-D^J~xcY8>$_58FwxCUN=xRm$^kg6n0&7Wv%ZK{Jrv&34R+kAsh!{IN-o-I@2@e$0D}@Ej|6T!xpT z?Dtgi=FD%VEpaOI4m*u`e?C9q<}KyTd+yShJ(>5(y_q-73wVmid1^-9-=RLM<;|N% zZrwBLeA@S8nOB#3L@TaTzZMka^8FlFHKm^O#udCYhVJSVB+&YgG3xI~dA=+7o*?t~!j(F2 zZQgvj?fp5Fe}d#Ce>)-h+X(yiDa(!M3cP8Fn3;srsc^8HB^wWOd6Mx$I|Mle1p6myn@EQA)x`|#p-h=F` zGw>8@J2q$j=S1uqZOcno-am+Zs|j|^$h#`8TIAWT1wqw9RGmpn8i;SliBs4sQ>wXc zREf(77>zUMcpf*J*R7Tx!~0@>3x$%NmlIrGko9~Bc-7;tlaDuf_G&I)nK$UR$ma;U zg3S9Nu3C&o`OY0qWE@Iv>d$&U993YTty9}qdGnme{@Y|C$6@JTOMU*Q;5ULSFGbs{$Az5v36oupsOvY`lTmNA zPRG0xpz)*N8E@ZykzX`t9OKljxc!dVn*FgQk#8Nrbu;po!K3gH?Mt_aDSz((2M0=Q{?-T;941ZUus#tIrEFA<6w&Vnp>oqm$YH(K!IjJ!92 zSG}*z#u>bo80UJxF^6?$ADOQs3lW^Op5-9Xwq+QZc>ebD-<5G^s!yv3(n!$OUmb)i zb$!mc9;!V#jQeNtW9idGz6S&!%*eY6YMFXm$azj{I^Rwt@1|Z6`Dh0!$r)$lB`;!& zd3Vn9Q^bBv=ihp|Polkll-uub@g!L1ouyO65%Dc4_^S*rt@5btoVpba^n{gPtu=qpKo{5!$lXZq)Vwv;#TxgKeK7StET zok`D&2`(TX+ifxRCe!P-#DncC?Pjx2|A0 zBky96cLzL4$90XIapv0IM{_&6k9~;g7 zEAby`;$P8!6dqcUBYCxqo@q5p&71Q)0_}8ezo{QfryYXCH(QW2OV_OD74S~oUqxj% z_Dr0=fDm)+mkcW*mIlMPRE@FM%EnP9ZpL4i_ERa=^FR_0<-sDP{FiOK-5{?zUtiw% zb~%4n8?-N%@1qhYGeht(L6)~`%l4Z$A99+nAUJ^i&p(QMKM87?_B$E!wrEE=b2GfVx0E+;y;}7|*0ad1e=Gq_%@BlT!q!E&Zvy#`*jU57NAG1@TgcdjD-Il^XSd)63 z+B^Ce!t8rM zDrAJTd!>q9!A5svq{gP$rtwIVeHw|x2kA=)&ys?_%J41;>9^Rv$0ol5PFNfN;b+IC zG_9NV-ladu&+ogesNwO7pF#tL1_})n8YnbSXrRzQp@BjJg$4=@6dEWrP-vjgK%s#` z1BC_(4HOzEG*D=u&_JPqLIZ^c3Jnw*C^S%LpwK{}fkFd?1_})n8YnbSXrRzQp@BjJ zg$4=@6dEWrP-vjgK%s#`1BC_(4HOzEG*D=u&_JPqLIZ^c3Jnw*C^S%LpwK{}fkFd? z1_})n8YnbSXrRzQp@BjJg$4=@6dEWrP-vjgK%s#`1BC_(4HOzEG*D=u&_JPqLIZ^c z3Jnw*C^S%LpwK{}fkFd?1_})n8YnbSXrRzQp@BjJg$4=@6dEWrP-vjgK%s#`1BC_( z4HOzEG*D=u&_JPqLIZ^c3Jnw*C^Ybk(tr+Wm&B{ULJvhf(6j}lJrv08VP5ND5z+7e z7o6Af75Dqk)SE)Dg%Ru9XIp63@_S>$PtUFGuv zxjq$oDD*)6Yf%r1dN42R!B(hKYvT1wL5N!X6dEWrP-vjgK%s#`1BC_(4HOzEG*D=u z&_JPqLIZ^c3Jnw*C^S%LpwK{}fkFd?1_})n8YnbSXrRzQp@BjJg$4=@6dEWrP-vjg zK%s#`1BC_(4HOzEG*D=u&_JPqLIZ^c3Jnw*C^S%LpwK{}fkFd?1_})n8YnbSXrRzQ zp@BjJg$4=@6dEWrP-vjgK%s#`1BC_(4HOzEG*D=u&_JPqLIZ^c3Jnw*C^S%LpwK{} zfkFd?1_})n8YnbSXrRzQp@BjJg$4=@6dEWrP-vjgK%s#`1BC_(4HOzEH1I#vz~bQE zV*4JOECrmfHb2OYxag*>w(w8#v%0>bwgAqWEq)3O6dEWrP-vjgK%s#`1BC|uy#{{N zx^2Jy9yg8O^tM%=8vI@N?|c6HKk4ur%izbN#jR7=Yb3w^azjq-~^UrM#K{IJkhOVud9DD5Vh4gcHr_v${p?8g$!aVQ}ez_i}P~59iYAf{BDK#~IsnAzL z6`guh=&Ms|YWz~6uZAi*^`_8Qr_|K=r9xi~Rdni2p|4JOTH0A zB`5IgD2iP-ss`!3>NcJaEaA_JZMtSi#NOO(FOnT>1LhMcJ`MZOP{O#z2-n)lTv+kyjO00{igME z<<{4N4Sn5_>^dqoHojr#Awy*~S{eRa5(;|A5T;RGc=EaSO?0Cm-_RZ6xU`ljbs zZObq+&$UkLd%1quvLlG+RpJwEcz75Eh^EY+eK zp3A7&(3gST29_O~W^9xzv75Qq0zY%Fy!#cp{LH-^&o*o2u;kY&4$84yF8PjSmcr1l zMULlJ!kU$Nu3xpjS6GdLifLOV!^a(Lx9pc9*Yiq|S#|x`HvNj7trM5Et`m{z8lF)J zNwCquvSoQy)T&B^I^ny}eQbKDUrrp@rt8)GZ2fvCZQCFA8UNKj z->kO9N!6kEcsri93OMrqqEH|Rb*cYoio$$ts=dgawIGkUnAdX9Oy z`=ERFy?5pA!)vDHxOTN%vZE?&OxLtvGhqX2t!#&pU&C%zud(+Oqrav#?62Zpg}yYc zs1rpSD*B0{FD&}PqAx7$iGOD^eSg}@|Hs~$z(-l!|9``wf~Ja!ii%xmAz)41Gs)sn zb3)_@5KxpTZZ;3Fve^xLaHwcd@uu|v>rtx|sfs5QJbo<|{Nt}b53EpaMXU9ww%Fp0 zN5%O6&htDo`|Oilviod+A$*<}%afUTX6F06=lah1EbOan8MP*Q<6}K9eQkqnwA-DH4WXVuJ%M@x^#tk(t&hg)!>`d#LqAO) z8$$bt_7UwP+DEjHXdiQ(cSqZSwgYVk+77fGXgkn$bX=E)_7UwP+DEjHXdlr&qJ2dB zh;>$-ujPl%WKm~YxABz;w^iO=yL7}gRi^}|#c3U1ZB=EhgErLG`e=UQRAz0xyziXdpytOdruJ-c(IK&bRkcm456Mty^6L2bs_W#=uFTtp+`e6MBfVi zNA$Nbrl59_(MQHO6UNdo_K5LSj2B|e9rFs9hrwKvsu*JK1al{tJHgxu=1wqog1HmS zonY<+b0?TP!Q2VvPB3?Zxf9HtV2v);A%Bgv)>vz;RfW>eBkN+~1_B@e0w4eaAOHd& z00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY z0w4eaAOHd&00JNY0w4eaAOHd&un!OzKr)V-Qa9=cbYFR*Ch*ikn{9}#e*O3Q_1B)q z*n0HX2VMpuf&d7B00@8p2!H?xfB*=900@8p2!H?xfB*=900@8p2!H?xfB*=900@8p z2!H?xfB*=900@8p2!H?xfB*=900@8p2!H?xfB*=900@8p2!H?xfB*=900@8p2!H?x zfB*=900@8p2!H?xfB*=900@8p2!H?xfB*=900_uIpxriP%4yAOmY@0Lz%9{lhwiLr zhuj`aKR5shGQ)mQ43vLtSh;cgwsA{7JguQ&f%~lWyaF&g^eND52D8H;?r_oLx8Hg9 z@^|Wfc51IdJwA6`^BxZh4nTs;(2ioT-xPxnGF5$LnJUW-+@YuWPP^cHcL91h9k&@Yq2 z5t$s0%j7U5lS4@+hd*R;*qF)Tj7&&YWODd`JN)~c_W9aOsXRSYeD;$6XnE}P19mN2}0L1{s0IESg zO3}`nk6+kV*)nQP^v1_}Ui#Vwp?JXoNRS!YQ4CNFPz+EE&_F^pu%Q^B7@!!S7@)hf zKXnw>ZG2_IZI!pzE*)`A)hU5#@z?nj1RQ__nW0^(V(><$!U=~C2?ZoTB3dXKq$HvHFq2pQN!x}+EmBU|=UUHZ`T)Fg!G5ZtKmEae9Suj3E&Hi1$Iu^w!2mM! z;w~`Q+Q9$}s5~GafPq?DqCVJf%fhi#4+u44C>aLvhB8Zoi=Hp$e)fuC4aF|hm9=E( z!^MHY)(!?>K;=Q|eDF94D7qpr*xJDW3|OJvjrrgi3jay^sS040hL`C1joi;(F^s42 z4>7VZfeb(3;-nZRl8YFcuws}(0f+&JbI2gZDY~2CTza`9IK<3`sq~l_xPige4hCRA z#RmCcpJm{uDs3G7)D{p1Te}qoEd-FY8Y;xSV)&S1KZ-YCpO8UJ5A2(UPw5qo=I;Z8 ztsM-&fVH&92Vj7FptZDlmxb@BmHB{vYP+4Kp$|8Vl@0%G91c7 zOEDZzE}|+@)(rUo3|Kx`N)@D7Wo^Z=nb86urpT-;zP#-AM)k9tK-`W(MC8Dv@Dfu(g8$7*Msg z@8p9%2iR=oyp_q)(4YKl>)CUcJ5&^tmhIuLI%;6JW2+t7PY4BF*5vt8&;7)bV*l} zL1-wyCBt$2u{C56JN(y@ftFlqp*>CpF|z#x88&j4C&_RIf1jtwFoe7O4;e%o41=v5 z47wcy%Imm500ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`; zKmY_l00ck)1V8`;KmY_l00hhg29d?MDRraR$JbV#sJTw1Pv8x)B?`XRuiqbfjI9Tq z34jX(KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`; zKmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l z00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck) z1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00eR&@I8CDC;bkl-#%`H55PdJ)=?jzEbP1WK_Q7QG!z(YHZTAKR-BO!zySF`>$##V?5kzraAWhH zx8V?DXfW7pU;qZJkw88G1LOluSwLApSwLApS)e?ij*p@~Kz)Gv0A&I7L2{rSbt39S z)QPAQQ758Kq&y%dV9_pgLA!9Vk?5f?*ucOB22>7^55R!30rCMDs3UWz4^S3RA85T$ zlm(Oplm(Op$^&Q{!9a}2bnAAZtiUk#l(&H~6Wn0XU;qd*17_d4K z`JnqTNNEZ_Fg6l{^s&zN)}k_mN>0H{4GKJ`&vi02z96 zmj}tvhZ`Ou!+IXtBV^$1Y5SvO=)ql>fh%UJOFyH_aYh4gY1PO6V077NG_2qftfino z;D#s2FoZwG3}+Z!U;q$g3MwABKmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck) z1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00cl_-yrZ~5_8;?x>0N&%E}Wp znWxf6ABWg{Q@_`*Ckl_T^Jta*26j(xaS*vMS9VvQ zFk7@UTXwO#`otmnAN;c293{6uB^0c2~nVhW=oeU^;*d%(55#)G%NH9>@+T4X6xkJ5d*+ zE<|03x-iSS@K_?nstlph4kg17`VFF=8ioZ67x^urUoj6uR*UvEBq6(mYQ2^W%(4&t z)Ypdvcpy8VH09>)G zA*)6Ecs5i_ml$E4Ko-pM2V|)>Cmk#%k}I+cbZ_FHs0#NhA}vS5~nbA+$}4`c_F2DMT`Wq`^6l>sV)-B%ghPrApw^jpXEpf0dz zAHa6P&?RPxk0lFcc_>+`?_#!SKVJ7DhA9V<1+%=Lr#>ul0X37+K()lrC4{dUs<%Dr{4Y!8Q3KdzDpL&Qs|cNk%3uq>h1p^1H1Uk?R=jsnC1Iq zsmAgFGtiHnX4O>|?f<3#*|na2YM}oi3uY-0ZYKk?D$KA@i}>AhsZEQO}Df(*=3=u*ES z1GC(q18TpI4D1q$(fwq>ELU-a50HUbih1OfWMGzDVQqhq4D8}s&d!I(f>{bZ=wUK2 z%k}gWleGO2GO&y54m%$u3uZ~pl=d!!$9*r++~ z8H-ma+I7ZgVF4b7qK@oOk6_r71WzgEoW;@iVO2Ps>47DY) z1F{3M18+Q08c-Tg8c-TkRT7m!YGp8wRLT2|u*;&O_1hcQ}NEVh$i?-&Jx1$Y=* z4`c^q2V@7XOrSJ$-_lUn+h!{>wuG?QpLrZc*&*eK&<+-MdSZq#!|Y!c&(P~1VH}i& z1$Y=#1!MMrC~oR z4fj#g_>xf(c#tdx88wtg$b$Fxce1>3Fa7v{*-mCyK|ikL>|}=D&~Jkt#!eQ){q$SK zEtuf}`tg-rJDFi6{d)2zm<$imuMf9ihKK35UYB$y6Y5d=k&>d0*6d`4$LRM5qs1z+ zSi!?!PpqaN-%P7|`7K!-XY{g$EczKO){+J7{7uI41X*k}TKo@La9wIAd;D?weZZq- zk3UJjGmI8bk;M=m273Y);GyR+WQYB@G*F#@3j{y_1V8`;KmY_l00ck)1V8`;KmY_l z00ck)1VCVaCGZn^@o`f|RkK;SYfjWCoJ+UEY`rQI!BBIxe@?KuWO~y@Ui%p3^YHLS z)mHmI>Bc_j+H-O&;g1F*EQ|y9dH+SWUKN3OFcP*8Ziq)(?GqE>!S<>A&-3il{lSpZ zTvFJ#3s~h6*Wr4)OpG)s(Rf5n8FRWA-OTB-xBZXpCAd~aT3QLBy+Mgm9*aa9YyE+E zVq{IjG-jhjOPX7w#GF4?t%O=<2JL4D!)}*-d^B>Q5{Mhpff6Vj49~DvMxr5qxY<5Y ziA568fMO45(L_t=D(u_ASr0yHx1Xg%V=TeFB_2m%->OLK{Ah5-%(#76V7T4s^Epmp z|NHE9;nrv{rr4_@(bh=R&+Ki<*Me$+*pyFu(D@ktx6y`JxI?5!}iGyH4XMqFc$CPx1;x}3i)F(C8oYw zX<6xT``P{|%f=(@XFDAZm%U+rOH(9dFRBX%LWyQ&Qk1G4a<23TX2rB&>wvN{otEEIv`8JR7&W8^;8js-2F;>Ct(r2&w?iGLJ6_ z*X8t4F$>P|#}#`_7o&DOQ4PmyDfl8v-9U(pgfbDghZV{^b^_X5*tgan_lHK(xgZtCgn2jLaEZnWq%d*B`ZZ%2?;+S0A=| zGy8A#c3z+6=6|=6HtY?3oH<6WX6a02EyIw&Mu z!VVsI^UV~TH1%O_^-;(Abl>ui`V^{{(z#;UT~#k$IiNn3q(1%e?&|NloMmM$FLg`8 zO6(-+vzB@6F(nWQHdPnP}`uk zL2b)wWQSL@T~y8Ft+(yAdIlP|81NElZPd66`$&UJGw=GStVf6W#A@o?R5ZonQJPMi#wIz;7BsOq zEBlGX+-lguz7~_*EMx|$*+d>63DoO+p7pc|PNAe!Y4e`?l%u(;XK6ZtmgJ zTmC=y>`?Z`Mw%0$2%Br9sr)ESylPXxa}X=2u3TS@nC?Zi~i=R z5;#rM&ZZZyB7e$+gc6;f)9Y7P>XJA;rEWe<1ssS>~i0w4eaAOHd&00JNY z0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4ea zAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd& z00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY z0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4ea zAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd& z00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w5p-fx}L;o%r(b z^}}x*-Zp&v@H2)VHrzJ+*3_EO?ZP?32>x*tIYAYIFbVku(MYf`s zhpr!b}aZ-=td;F*1Zv_t(v=y`#oKbLOL9c>WY#VJ$Y**SQ*{W?v+Aip2vz=>e zA%f$kj2e3+-LE+@iL=0V1R1W}nzX@RAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd& z00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY z0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4ea zAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd& z00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY z0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4ea zAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd& z00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00P~aKnuOxxGB}6`qO>o zi5=f`xNVs2dvNCz_ z^0mFM-I;v7$cf3vLS^^-uFUeyS+L`ymV#;3zqw}dio(mbtV)%1Nuzmt3i>2e*Y-?_h` z7rSd}9JMvoj$&tx+gI%IlvWp4Iz3gzo?4&7MVoWd@Cx7m6f z^tJ7TzAu*^amj7_;so(m!1bTp_??C;|pC5X0nYYYU zR^#;+dp%{&Voy2!RbEzEUF>msDytneRW4_Ri~S^l%r15Caj>UX-Smo@oVZNPr17vonj@rD<-$5xNI z@{;w+FOHqMCG`p2bY!pDs(gR`v34i<29pz$Z;*c1pQQRZm-^*Ly6?>SudMQf(L26; zX7tLZ3j9AhdG2F89^<`j=}1+swyoDjIlm!#$UoNa{Q2DE8>;)xP<{{k+P2YYTX9G0 z5hH(j>ZuDyv>m#f$CGk@>Fp&dzaLiL%HsB07@!0UX zhBq8rJ1Sx1tL>^$zf{xr`j@pk1>q)pCZ9{c(@njGUhJxM*SgB9ON-q#RgPj$sjs}a zyvk8tT;p*t&5N*C4t{EeZrpPsdzHCr98#Xr*I3!I_eS^Zo_PcivQ^*i@u zO+KdWvR~@O>gQt*`tstlR{y(dSwr!+zkYlxQ%5>pubo>`!rI+WzBrlPnS4Haipf{5 z-?^vUwUvLR-dXyd zN={6^Q}ny`q>b8-$}+dN#!>DqcGo(n)peAYl78x|EcW`!Je8F-rKOeCqWp4S8R{3} zr#wA&%c>=BSFQfl)iqmp-ti3gVZ689ImD&P_hylLXY!p+4>0*o)9?KGp%<6Cyrs3Z z)vjW1X({Okr4`;{Uv*7YaYapKrKh~2)KTTgA^&ZD;^eRHShMiVg(rUf(tAxCS%cH@ z`u-wKF5dzn-x>52lkcbcoo?#Y)$&dMQ_a19y{Dr7>8NwfDc62$*P}_j1x|3Q{N5d= z-Wk72dVrQ%gqn@_#jY<-*e^6^@?uCXdH>Z@YZECf|!63;C*bxvKO# zf4-~v6>M2^;1v@JM*V8m`IoM1zjF~wi*+%8{bb!nxSw{P4R1;`S`bg}y7^5dhQE~uM6?&>K& z_PufXM=zKjQH^a^KCj8Q{YCZ8f*M6GEPY4nclAN~udDgZ7<<&pdp>bgUvb}-DdX<@ z<=Z?S2z@;&q669-&&)r|UO&)WKpT=WR5Hac8w zkI&QO`@hSDd}HV-Cf{iN&OHsixZ2~YtnhluNn!Dk{!(30P3c?VD6T5?Rk$mBWwox_ zDs%d>zIiV_h-5mm^i}?`Vdci{+r};V@U(`81@5zWJjQ$5UydnN`Tg`b_0IT>qX(FL zWA!_KzN`5?a`YkV7XEcvP1~}>v>TrfujTQi+)p{KjLBy^|3vl9%Ex$JF4o{MIr(Lc z9~%v0ztoHIdt`Qb^Edyw;LK%#b8lGi(4;d`pU_NgulFri<(q$_kKLJk6Um9mH9@~? zPg?!|H{_B1QZFXoMUUTp=iSTSsr%Wfy$1F8+;z?J15%%1rnct>oUY2Z=2-1cc9ZDG zc=Ubgk{oq@ziXSesKz;Rbz*Mpo4>65=_Bdn+dNB?Yx_m&oy}#OtIKtcey5vyS(7hw z`C$D+nXjM7EF8(kddMhe{Ey5Ro2QcbO1mIJB7xaFn#>oQKa=@l^L#R2Y<^GXi_JsIe6jgQ znXj}H`VtAu=0|0|*gUSx7n{G8`C{|TGG9|=7LH_Vlw7{^B$w}e$>p0SxqKH$E}vg= z`I;n`FCe*m&63NfNG{)W$>p0NxqN(AjjUp_oj)>P7s@Og$u>)J`9hM**CM%mVaer- zNG@NiVFD|)!3CZP~Be{HYC6{lWvKgflTr&Gnr*G{#rJHO!6!@ znPoHHE1N(jc~+RrvKfCPn?NRc?lYNXGu|(oKqh$}FqvgDu9Qt6lROWa%(59Dl1(6! zJP(`9vKb$dO(2szkDAP~86T5PAd@_+OlH}Pt7Q|&B+qY6X4#BuWE03F&svjNHsj;6 z31pJz36ohi4!oALi-6UZdb zb0)KF#^+@d$Ry7TCbMkD7iAO3B+n+3SvKQKvI%68=T9cHY{r*m6UZdbW|LVq;}+Qj zGRgC2lUX+7E3ye>lIK;ESvKQeWE03F&tFYu*^IBrCXh*GRd>uWR}hNk!%8) z!`_=Ri&ndI4FGRtQCQZ|81@_c17%Vzvq zHi1m?d}A`pX8f;g0-5Cb)?}8=xKlQPO!9nZGRtOcmrWp(Jl~tl(isb+lPE=?0?Fm; zA-Q}#C6}+4lp-a`}#sT)rbEm#@F%@*O3)d`C+z-!YQQH$Zavj+I=#<0O~wc**4(D7kzm zNG{(GC6~`GxqO2pmv6A-^8HA1`FZ$*6-h4NFv;Z`F1dUsN-p0|B$w|b z$>l4ST)q;?E0lpua`{e|T)v-5F5elF%U2<}e3g>RS0%Z8)so9sBe{IFlFK(za`{F{E?=GG z@|`KUe4{0oZ;a&fjg?%!agxhdFS&flpwa{11eT)t_N%Xfj~^7$o~uSs(G0+P$uEV+D&>-_?@Kca7xoT`ReK*GVql^^(hXgXHopmR!D{NiN^dC716;$>qCA za`|qST)tZ*mv4#W@-3BIzFQ@i?-!EGcbnw$-7dL&DTnn-Xs9EZ#!aakbrjtfou~;| zM7I*#sN=rZuRgtp*?MSB_#Xs700ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`; zKmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l z00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck) z1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00j0A0`0aT zQ%-AMv;52_2X2XeJ9KCL0DABK^lLAec*Bd^W2?tpdC7X^7spQBa;R|FvgW`mCKQbN z)vWU`UDtl+niIIgQGY&qdF=}gXZ-9Zwhyb~A$KqCaO^=}UVPT-e^)JQDE{`>k8eHd z818UF-q=_f2U2^Hy6_0=O(UKFr z?K|0L@6{Ld{~`49-|sk}>fwIR7k>4N|2}dccTk=lyJgjqx2snF>gt-UJMVbrSmE%G z4J$Wp-!^W^ho?0(EO4JSm^)1WQ_a19y{Dr7>8NwfDc62$Kb||x7<<&pdp>bgUvb}- zDdX<@<=b}dFlWJzk6H?*RsZIi#VZOg+p?}Fcev>B+wZ)4`8#z#JGIxK9-q6e8NwYF z)SbPg?$#@-Z!X#RS=GB&-gf|ZXlv;^xIMnA{+`i~zS#4JACDd?9Ddg}ZBdPL*z9mE}0EZ+9;dxg<)*Zp)bp&@^cM_0)wU+74abk2`FB;^eRHShMiVg(rUf(tAxChaSfrwoWY>*~|ac=#>jk zpHw({)|&&l!{6Te`KG$kMfE>_W9aOsXRSZ}XzuXubC!Q`;aB!?H&iE{E}MGuz#{Ij z^XB6h_EolwS`)qTv7VQ{w&8Hyfo`}!00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck) z1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`; zKmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l z00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck) z1X2l{PsVXm>PE4T$uBxlb7S9+FR^`b+xPl4u=g-qj{?mN|APPsfB*=900@8p2!H?x zfB*=900@8p2!H?xfB*=900@8p2!H?xfB*=900@8p2!H?xfB*=900@8p2!H?xfB*=9 z00@8p2!H?xfB*=900@8p2!H?xfB*=900@8p2!H?xfB*=900@8p2!H?xfB*=900@8p z2!H?xfB*=900@8p2!H?xfB*=900@8p2!H?xfB*=900@8p2!H?xfB*=900@8p2!H?x zfB*=900@8p2!H?xfB*=9K({3Dz4@&Q$f7^}Iym&mHOKgEKiClF6Yklfw@(IUJhF;jl~&{W3Wmp2^{eOb$n8a$xD5HqDR9y18Sm}=`6n5+2%weZIMj1`ZXX$ba zd$KALjz=S*kP^)@=rkU7EpoL#?yqQ~{Ok|Jr&T*0S%{z3%dTS?Ik_&=3)pNk4P}kJ zwDIB0!H$hICqj`}BlA%aYVt?@R2Zv5l(*u_w1D8&$@}CIibYwPiEutr2>%x2Z;4R# zp$TBKRcWl#l(SuuNQPlih}KYIMlhTY215uIWtbCG=H?@T@K427$y{#Jf*c=>%uy6- zMDom<8N}3+dw$M;FbRtGF5X*8H@|Z~wEl9N;?nDej z7?$M_InA;ZB804EpsI6Ptv|qSQ6=P$lX9R}8d=vFnS#h#29_(C5b8Zu3N4Jz>#fW| zWGh9BKcG-kVzr=V@J@Bc$=TK!JP1*+vdsn^Jm&h&$ug8{lu4ht#%U-prbvm|{iM!ee%CTIml5{52sZKz)O7FyObAtvU!ALu@T6GW*Xteo;_MY(uju zKFK*+gI`~E<=h~%$R0UID|}}Avf(&&%&oQ@Y&0OP z_grHaIm7hAwy_z?bTVe)HP<+k8N(E*7Ep&moQyK*GuJo`xgys{4PJANRb+}1+mEs= zvpije*X-h~X=#lrF~3DcB$MwP;}$t0JH#SZ;g9sfld>zb!f!H5?P=%rXe?)?!a) zmlE6QS(Rn80Lc)nNnpr5)(98^uqJ`XO4i~R-Y>|mjB|j=AuUUzznun?8;qnhB1h$h zBTWESB}ir|lL$83{0#L%M;ggMtcqdCSSC5N5Hps|Bnm?iR;3Wx%c=|_fNUjb35J4c znq1onS=JBf{pT2a&bd&JRrt#>zGQaEma`sV(xWTe@~`_eWR4u;H2BQ%HAQB~F-GAp z%lIPE7JqEKe@3K}4(8dJ%5%m5auz`3h%8?@8ME-2bDYUck#nR;uQ|tR$QC7}bCzUR zUX$-@@Sk(sB7@}o!op{Ean^MJwhOcSYLZJ?E%J{xC({dHM>U*~K|tX=XD*G&$dKQb`MehE&X} zT*exv^>-0KP7+W!OocGdYgK1eo^>J8hLN=tw0tPPt`bGRi!dz7kz-*qNg#aNY-eUy z&P@R%3r}|WFr#-%FK;M7mZCTKw-mo9N~YK^(O7mU`=+-S-gAmPsYhGtA?Y$?48@`> zA}5(pXu)M7k(5ICw-~=6BWAlkrUQv&7#4*vRI7MX*{nuHnzb$auaB5e@aNik6g1e>yLCL$T?iCqU`Nf1%Kvdb1G350J; zaVN`_rO1=sEyZpqQcVA^)tGmpw3y!C5QZfgM4_?-K={rnZdM5LSgfWK$Qa7R?CORN z!HBGs6N;o5!oNir$=qa7fMfs`B`{1YuDKk*7=|Xu)-8uRBN}{AU|~ z3!AZ`E`;@!y%UvPg<(k!k(o+tBeJX)Qe+VREybS9N!cbsO5{oJmSQ*LAxqI4{8waK z7o^B9vXG_dh41WMUhFrpHa?Qkd#0oz9SVCg%B0U+ z<22-sTq8Aj%{5k$DYBh|Prj<~nr)n|kyzbX6;`uTdfz$5EpkM*i1k>7zwGDWCk1uC z$t;m$q)CrCzNH~Q8E8#%UKP)z!+tx&*5n8jt;-@0l(i*YTUZrp>kcdWUM9l7Rj9~w~C9d+Ry?aem z{LS{W{Go(mA7QT=(O98vy^FE8BXMU${Vo2+nnYBYYl0jOxP8^L?iTMl?1@0*MyVM`CswzqH4ccsv-MK|2Gry?~9h z8qm%kp)E>Hk!VPLE}m!(MwlQ(Jx=zmAqt(8llmsr!ro9ldU#`XAkj!0vC_CSL=w?} zlF@;7i#01mIr9S(>#L_^cCDt3N)2IuYvw1;B?y^aDfF5ua;~9doEwQW4{xjthEK_q z3dYxtOpni{jMq5c9}DlkUJC)2~V{#bmX!m^It&7Mi~$c2Fr%V>?w9erOo zC$ro5@C+f9w(l)X*yGiWR+N!4$w#~EcHugy$u%pJ&#J2N{=h76M(0}Q+&HGLQe|tx z5|~#Pj)%ragW-6?{Fq86^J5v~&_Zbl%v5OepAr?KC?gsJh6IaW7;6stLy;McRM}Gb zb~zlS=5(4gQJKM#voU>|k4?nl{_u=e#XqaD#vhwMCK!ve`Zo42GxE^q~^7H_=YgM%LJ#l9fNoO}l=u z(+AQ^ptiiK9Ms+qwe^~q2#2Yrvsdah8tsHuU%<}jQ~e(;p=+3}R|j{Nahbc_eim)R zrM*RVZ;8i2d$eu6sv@oPqrn+7n4O9u+d$n+gEL2wY+M#Su4a4v=#t};GHX?RiljE%6kD&!G4@6*(O4ZlCKzUI zhyCPA`(QN-Ye_bSCD|A?$+Y~^$aY_=yTa9_G9zmmrfK`JOPX7wgY73zp#45c4tm^_ zxc0MyVYf?2VW+xM#o;V3Asn{y9vyg;yHBG0>lMr!^xD$MrLb=QfUI} zd9_ik$!VW^{V0EIW=X3*Hq7gB4Y!Y?!aKq~%H{F6DRDxK)bvC+z_yCniz>pgAR|xp z_#|asyvRP&AG3!eaeI@Zgzd__R-&sklPTa&P@*Qn!MMGMU^GYO#)|AjmpvP6r9sf? zL3%D2woh)TX|RW=+;#EW(R)>e{IM8mE9})u%Swma&-O=I#vWlm+v#w)><#lZdh4;Te@w!NthyOjTfA*npi>Aiuqp_RO)uTi934Hp$i_O@q)lJvvVn zK^4GR=J6%rx|}{cRg-i4am60f#h{usN=;EM1z$v}Odv!?LYau$!_+iI?F6)$<}Pf# zT+XsGmzSW?2DX!^h`Gv1Iibm(W-@t7OC9Boa(mN!YSSnKHY+FDT@I(u<4CsU$l@NuKDZreqB1W@`Pbb}H0D+^mpB7oft{-1W6gCNVoyIJt;vvsKu7 zc^xi~DCUk5uQyrDy=7j9&y`Zjoo2M5; zmPxI&H?LXEqlu(QEYs1EG%@u=7d4YQoT<4dC6khBNn=UlBe5VmFe!^%nkK61N%d+C z@1ktVwNQ7d*IrNB4-Eq;_7){RGtz9I)KN<2l}3bu&HiYWpR_W{yE7w+P_w&Qez?*VHuStt_P!bx*x*Qhwz~KT0Thq>x^{Tk4zr&2rhP zX%14>66M9|HuX514*OUw0~a;SjLfAGTb30uc zQWXtTL|W920p-cFXn4H1o0;^QN&iPo`7IFV&sTBTH!E+UtgGQF`A z<@VYqDzrt6+6;9#mgG+M6(>!PrieNw!Za{mH8io_VY4!wIx*B{B{X>Bql!8_&gz?T z>WdoVGQ1Td!4PKmM$?lCQ)IIpRM1N$*r9&&l#yP^tDOubT7RV!zf|S$YOktd?D+cB zlAb;;XJ>uE`fvkPsDU_Bd}k1|4Bf%PzV33LhquVil%8N|xzESz4y`J2iWXW^54&X_ zP_bN>P=Qp3=lE{PMzT;sjodg*9VW}GA2_??I9PV$K5l23gQv2i#O+Qt7+zPI=-O+k zT+Z8%?%M|lbX^)VZ9JL8Dl*>Fw>GvHv6{v-Mw3ipk29IXW#u%KXdKTm_42x>PCy(j z>ed~~aZ+7OrgT8)-l9ZXOYc8e*BA6{`bqIr?YGRJ{W?h*G;{>nlYTm0P9M`qJ3`3D zREs9@O3M&-1=CFZ(Yk8Zw5M@rZLYJtbFDUA*!szqBv^8&GIK1hY+Bkh66y-R?vff; zsn?k-Jzm3rsMGDGZmzNTq*jpKv0r+Y<+8(c%0|9^K>Wdrh?Tymk_rU zux}~lAbrAwa+9%sD5dO_T0ijF6E!n+$NFJL*X1Q`B|E68WTIU#qXZ_@~o~-Yqe)&Nb0@XH!984H}Z;ttPhuRT~E^lx@TI??dr5nb`u&6 zDIVymK9Y6)ASq2!L|sjAcRpH|)_3~8ikE7Tq<-K^wj54pxhr*IE44Q1j`~5UtMiwp zaVC>vTK+nx<#xkEnm{t8jdL$9k4Rd5D2*q)UYT^qw9bE=MN3wpBj_5TA+h(aPUxiK zn@n%R8j7-V4<9PklDm|vh~2sE2ZxoLZgt`VAdf8?>g!g9Ix8b^TK4r2}O zHYo|^`$4(RzmJ!a&ed$3TqLtvK*W&29`55ATWYs2na;GpGF9ytsotH-bF6F2b5hMp zrgoR$zr@ZjbD8vnYmCUmO7H0Nb@`!8>fl3&Na?7e$(rlEU$`I z$!o~PPKQSkY%O&qn??+{=w>c^;~;h$rNVON(^iBw$yH#_atSv7NgAL zbtemT%2cDvLyNvrMjoAFaYlF6LGoX7Bhpsgc%d$Z)jnyEqG?*0o3h-WD5YgKqVDz@ z`x7)wz&j9n-Oc-vdLnnnHk#&f^IVUSOk?(!_Q6X-N(Y1`pKi9)udrF&Yoo69RWn^u zJXOhbd$Le6#mgBy>slsvGO3yRSvN6*2XzTXX*RKG=j0guvXd&5YCnBNME%YUo%Bk3 z1yWXHjEp8|VYD8tIaU{~A?bZiL@Uwy5YCbd}8wp%4ir)IG8H`I#4VOl9cxtau{kNhTRvo39R z4yrqQ0_w(xqDd7q)ME~q=vviVM7u*t!J@50^sHb1I51y;PHWDYBl{>((nkq>jci6R z%3ZjS;_S7wV){(G_4c@wwAYpD16o0A*tz60EGH^+l$*L@Y$c{PecX-P^Zdtwc|M3W z>K!p*G0oHyvr;F}I(=*Uc|wy$2%{DjA2q7RI$@9J!ot4JGQ(Ja&$wQ}X&&)0PegRb z_9*{8L#zUAW+#U6g z{Kuz78tdvWH=DIzYxR|N9fWjSQI?J4mSsLuSvISg-Lfp_pU!&yOlNn{P72x(D$FKL z(^@)P9-sEmtg%Svl>IR-^FoOIVZBTK{Rxq-+8l&1rfQpewm(stVb@Bz`HZjqVy#R5 za}Xj?jmoC5OgXGMk2P#>S?xb2geYcZvpkFO`E;JmI;L?(AZ5iIZK)HzRhq>#byv$% zmPU3*eIWnwae-e~`h+>}@$u1?`!3q}xR68}ur{9pl{}Y(E!xfbV2zIB<9d8rY`fza zkHWrX##Mk+ONzYfa`;TExaq9N)ZyH2spsTBo-1+*AI}vQW{q~wwt>dJDNX8$l=hXI zx-HOWcX^gA-v?X~jRynjNhi8K%gtS)&;HGF+gBO9NQkCZ9pyOJ zSNcH}mzxeA7P>Pn=Mj0z<8_FpZvR=^(FM9Q&qKQI%#C|fcQ&4&uA6Vj{v(HSBDS_Pi=0Hm}58)|@b0jEf|i-7g+lwKidkSJ*5%7QLAuS8q3;&jq7 z0imXlULw>KI_g=B>1l84Z`rQ7Q* zH=R}^`Xt({Yj;fZ{P!`YNpp48h$+eU=GqaLaX*+b$>~HhKEkRM^ZlYva@p=E=SiKp z(UkImtiP;XLD9`L*hau9${;9cM%t@j!$Y@ znO2Wv@SlDK$*y8^IZSJScfC@klXxdZnj`6lbrPxRoy-WTqUI?zXtSB#Ib#TVUr=*T zzsVt^U#8l6vN$iEK2~P@IJ`mr{9`w0)~TAjen>riSBrfHf-)KVs$qJ~T02@aHz6q> zX7s?gq+x>d1t?m2a{ zJJ;iRJD@MH>W*!Fe0S9QTE{&#sZx6H*4AefTJFCyfl|d$>!C73HRLMw@vmF3T^OdX z02JxR&6@(Lpii|1qxG~FF-BiwWjAUW=#aipWG;OrY)&v1Y@+X&#pm0H(Kkrrbcnpt zJlr0qgXFbu3Q(t+zHQ0FW|MbC^kkwb6b#VkSoIS*O;M^fm}v=pz8&3;(}r54dgZFJ z>gugLeDo~k3@BrPbbHN2@89mCoF}^{)Xz>y`7Y~ce`I+rL8?SaQ8lfi z%+MRk+~+X9lOY7r7h~>edxB-O^GnZt&Ju?q_c`ffJ*lls_n(_<%Ujo1&oi*ApF@g9 z!oh&wxOP)@qx@l-j=SURyvN*<*)m(bVchbMwSanuq@_UW!3u1ge%+zb| zyq_Kow$Lb0-qMU?CxAPB-twx3O11R3d>KDb5}4GvSoDG^L9(w&SNWTifD-lZae3=x z6quBfOv!E)aDB8{39G|9yCX-GyE5ieD+1RB!@9h?B|nsx8+Oj6mMSaKR?)X9{m~-Z z*#*72s;r5UR%$qLFjdmvlw3+03vf4;v!tws^SD!G&5ddYS!oRIU$))AHnY6B)e0R1 zrtOq2k3s)5PTYIFr6vu))aB@wYm@Vz&+XV=YQudUn*TX8=q7dwTba+@X<6sg7KhZ# zYmG$dggJ z*6I!=|*l1ogp<&x9MZi`HmLzQ<01>sdv7#^5rxv@ygJrYpRKjODJ<__RzQs ziUxSa>f0PTA$^@R)RQ^P;QnSik4L<|<8^Cx=HHO)1}HW5H7` z>qV&&B}LWr6jwGYp|qM!ufPl;=wrcJ45?~GVwcf+9fmQU4C>0Hj3Mx4C#f+yUCEQF zNRctLXs*(7aSpY<%tU+>S6BPHW&Jik@3H5KP?JCE4=ZU}HQ^*fyXGYQT121Jz3$?**|)Hz*E1=+P7CNw{K$mp(b0$R*J3OVng&9wkc`r$@oSrwwNr~OckDK zFj_ZW&;x;>ax{t%r?;g41;u|R^(DyLz(4C~Mf`+CZa$G;d4a42`s z2@WX(-1~vPlmGk*Pp}T^4tL;LD@EI}GQVP3*KwwNG0o7s@tN1q?-#nx!n}1Ip0vg^ zPqx!^1g}=z@RU!Z=~zks;g;9ab45cJEQ6k7+G=E&ci0_zjtNo{pIYU)+?`KKOv)UD zCa|eB&-}QyohFNMh0HWlfG zTWd&Xb>t#xPCb>$nto`x9d{)QG$r$X-;U=$2a`-!!$_rE^Tyu9^eefq`jx6?k#If~L8iRule?jk;X zWokApl`YHXhP@nE9w8|yvO{tEGgtlimdfN z_wb-Up8?plRL;y&X&)HOaVkPQo_u>Y1z|3&NmrGPJBNw?bbR%eUW>)3e9(GzHs;@1 z^koJ$Bva$Ri!k))GmZK0!lyb+;4~aUU?KMO3J7hYHdIU0)`%0WT%~TYpPDZ~;2+A? znxbymS4X|1>rJMzx2Go~Q7^@mX4Fec>?FIR#CYt(ep)Z(zb?vf-bbscbEG?oHq+EO zvZ5zh?i^EbI`OiV8O?S0()FIi8og=DytfYIy>Krs3f}QLV zr>u)AH64y^?jChZJtY5iQEAgX*{buC7L$cO&{bzG7TRn*DEkbd-{zk5-$D7Ey(lD1 z3a_nB$b4FR9;Yv6ijB@ENpA7ZsDHDwBGZMCUi;QgU`+SCI_&8%^}2Sw;z~V(F~{pyFOa*k@C^Nk3QZ0-1epa zS@+?!ANKz6{cW4JE!uX@Hs`i=|GM^H{r>goKezt#rhh8`Jnf&)eX#U{0Uvzx{yXpA z{(j5*HSf2)=X-C%yUX6a_T7qi`@g&Wo%!$7ytDP~r`}%n_Bn4Czuo)ooBn>@-#>k8 z^IK27HT$iaw+6oT=9{bDSn$R-uWx;Q!|U^3AN%@{*H>*_u(kKr_g~xe+M?IadCmFS zIe#7U*9ZP`?O$g9W%ysdd-c^gL6p{hNK8pMCkJm;1lG<4 z1fLl6#E!=|J^tp}2i6W*+k5TyH7nN4Uo&CNo4#v1r9b**mnKq>#x23yz9N!Z@6ypb%U-exNh6E%dSmaJNDYG*Q~h4cg=un z3a)wT>cv+pSATldx~nE%<-Ka)Rj)33V9~-w!>`aKYY3G^4^!< zwQ#{gW#PbupSC^MHo0w3+f$d_e%Zpye3uno_Wq??7pz#|TQFcj!GfnQS$v6d$&gE) zoqyB(;q&{<|8(91^A^mTJg@(}eskVT1QT@$XJT7?U3_VLP<(rAQA~-AjrERgjjoFN zqP?TH&z?WqKYPIJ?XAzYPG}w2`fy}%BoQf&6hyX$m9R7XY|Dz4#Vs{016n=}Jv?jv ztb$qZT=?9D3oo2}Vey4e1s4Se1izX2&dl3qw#=-Vxp~H2Gn_N}&G=^es_BcSpErG* zvR0{31}S}%4b4lNTbjQKJR6uC@CF73UTu1yX<^d}|7`z`3tqio-35sY>Mj^`!Nb$$ zPwO*n+xeT%zxMp|&i9_b;k?D?4Lt9=#`hcVYMk9z*ZAtxWmCOV`%nGu+_mRkd#?Z7 zMdwU7XWNwLrmUJ0oO0Tf{!^Bn-EwySvv-{J=2=V63Z7MQ*1}0+Cv9zbs$p5fISs`P zy&G6q!kB?$o*lhn^y1Mq zqX&%s^vwQs?~Gb7>by}kqrMxtdE^5lXV;!q`)SSQnx|@J*VNPutl3(J$@z-7k|Ic~#%g~t>g{bv8QM=D1QKfIvdO@~(e zU|`|12jA4UuFtavo_9e1-VgL#(c|HQ(`@~1|N5`Zwt(pcwsBKNRS%&1$`hH1^aJ`? z(KWH}zt_Y>ILwYAt&BuNemW(L&IFDmq5(QWpU&tBhLmUtUBhg>I=Is$rRr|CpQS|E z(h|G3#N)8psypiMKF3LRr;k3rRTplJ24jl7DiWmw6Z~=VRbsbSghKXcaK_Ad%pO%@ zN_39WTw=2wW$Ptm(c@~i*N-kap6qp*tCdje%wUS7Hd|MmGuvS=Gxq&6y(-f_{C#%c zzhQ+s_WiTcKPDJf>?7>i@BdD7Mus>87W@8Xtt0baJFd?)8J7{$v61wlblrh3AWq$t zV5N<=JPv5u_irfc*!OR#tfxtHbrjH)8vnz-|0GF1_?9}pWZd`fC^4QkhkgH%mKIC(o7ipHu~idJGPG-{`~D3F+GF2; z*QLAKvUN!IE@<1V&u?Mhe{w{^X3KwmOQf!`yc=3K;m!+vm$h%!*VOaJE3{St~``u`+gJS=UM3_iw0BuxbG{L0m_g~nzJL10Ag#htn(grjofefDSGpmMj{E+N$Ma&}zr`^Pnt|8{ z_Wc_wc`hVoIHl}NVG4gh=$Zqqp_J#FU}*`6Z;|dpMC#sZ>D|!WiHbJ zS>lK^b&9K7?*HCD_x&5!{Q9u(-%_7g-*(KV3R}fFAIZvlH}3o2f_?t!=Ei92RmQ#f ztR;2Hv(Mjnyy@QF=kGCoePS=|^Y^&+{#gSar{QyVsfkk8!aiKB&_>I+KO9%`I)Wj? zu?VNrxp-*~GKd@2#Ch4-V55TJ_z3$bmxYANP-Z%d)oVKbW7nr+>>@NCf9CTsoNnXd z-7>=(CYQ%epKddr*GgMebhE0QbjPzh^FOCIZ5zdR=>~#LhC@`k;QQP=ET7rQL^9_b zbscD#;T&jJsn1?NM~Oy*&1@^S=_6c4lcq=02BUo{qMk}ptTq^8H~NeheJUsvnX5!8 zlvuDS7z)Pc+lNsz9#;Z!rFpnLKGPr8KI#<+(RvM9r=f+;zVBT`PbQk^Yx2XX#Yr0_ zYi*pR8NX^jvGWQf!@C6LF#%YdbyfA_>Z=m5c%-E|>YrPsghIx>$Ej(nEvemIpE|ca zV(TR~J+p{KS5{ltY^pyDW1F>+XiLM)$lUC{t2SNRSgn8V-0Aii4zltY&USXw0cNJU zBK4D=-LbB?IPY_Q)7BMYmvU-`nkLQn$!S-Y;j{F#-%IpawWI6A*{WI>wp;dL^Z)Ki zU3dOi+l=ls8Wl1$b{b^11G zPMNs1cutJBUC&9csylqNZ7qACnt zpFwlV)Xz!lyCxiu`kVdQ9AWBC;6z#vOi?TKnG}>=cW}~%Lp?(}kjGDl^R=)OdhAV# zJrQnJrqekg&7>rz^~2)!dFin6>_7IJHk>iRCMB9FYNtC{wCEdQ1}(`&>a3>Y8+v+iVI?iLL0LomVSEQ-R`$gM& z{q9TuWHZ*7HWvgsEReF87cAEWu5#n&kPIJ;bUMr*jNBjUf(3c!1+k|)brwk5f+`%v zct{tt1D4Nu@|1af1|{3j5R^L{bPl+2Y;`~Q7FPb_B_erK(_U=_gj+J{_huX5%JlhA zUzv-KqVGp-z}35}+#6beG&!Kl>i;wH{!X+moyeU@!POqv-uehlCt~fPuVZygIx`;Q z^lgR?YK6W~HR;vVAMG?2uOo}kVC^y#eX3D^#u&fN_Bf5%@6t2to|ZX1ozFP#G88`N zXN-im`j;^YHM-2KDq|HdvdW)s$jmdTLXY zdJ={x>?SS5+F2NX?Rb81x%(uSgC=nK8ORNh>G8S#Xv#UpG#FADyom3479wdAREEsv za{BD!qro};xMGjZZ)u8z>_t`nP#_WVN2`@sAi=uaMfAEfJr|{|)J=(a%4RppV8$WE z(qy-{tUNh$tmQC~;nWO9I(c`@WBIRdd%FFLWJkx+OrsmiuhXIw zg!*-b{KjUjkH@)6lbM1vr{vhY+q@`SENeiX7&aymjM>Me(}O$96QZwT$SN%NuuMU2 z?6$Y_gxev8>6|6>_y1?_PT;&6-~aJXX;DdvQczW-l*9*_Ano^##jzR&W$&vou| zpYu*QCc?@ECbPsRuK$K(V)j4OPxSIB`_@w=Iw}Hxz;SV|m#{x4-&>?6r+FjQ*G;t| zqj8@%&{(voMW3kdvFB2mkT9FxcY(>liI;%#dUnj3xoqjct-_F!c7>jB=#?*9Cdmk~ z-#WgWubJljoyT5aza`3}?dbE2B$2oAgUh2F+pX#w& zUZr>fgzT41)T^Bf-y2Q5ob#`C;t~g(`#SOSE7C8ZPW(`4xJ~-)6^BPcFZeiD;+oDi z#fF0uYx4D5@0oar`cEe(CthOwDknQ3IdNbLRfotkxk*-?2Uu!W-0rVc3QAYT=9h8C ze@LRcG$ElONxp%sf{%`#yP&unuO}}3yI8qDbW{ru2?j<+?Ro*DqJP6Po|RHP-#`B8 zJ+_n$IyZC?Y9sC`+=WTi1A=%&k`D>;vBdaFwa$?8a&V_G%-_C7Y{R(7zIK~AI?^6H z4UUV&Wd4wH3G?X6lq@3`!)41<49uG3g-=MLVUo-7*uC`krzCUi@~Okb$IActGlzj2 zIAuzP$qgLquL5Hp@w+`ROnVuR)nEFv>B(Nt#`ju*KmC3E*4L@-x6q`d4La9vRgfIy z;+{=EZ!!Puv+40Y?s=8sHfN}{{h#e~ldaaC&P^DlPLflwzy))P=6nwPyb8{B)^+SO z7ZcsH=#;=S>5NO%`&X1#ef*`~-=3L}Zop;^1%^VyLPG+X3VZ)RB6At{1Ap^8>JIUV zN*kU5lJ4XG>vKS8U~W-pN&7vp^Fzv(O>)ipZ#W0^z2s|FzsNg3arM6>cLqq!ICra5 z_y6&|Xp;8CC$9f^C(2s2?@D?>D07xll`Z@0G;Gw~ugJ=jv>7OYW83Zu1`g(A)7t;$ zOC~!P!H*a{w%M)upZwtN)jh6rRCGz7g_4@%JJoYg?3Eb_``zBK6WH$|q2-fIObQ$Z zm+|?m%O&?|2@h$viO*&e;BUD8{vg%;7#fq%lye68>BBoCD@b2f9&@8fhWCzS- zi|E+1=AjNu17K{NU(c**bxS)QEr6L$iqP zQ5_=!^J>o>)OelY-+7Su2@(&c1coei5=3ZdSsM>XJcIMHAG7TCclMJ!Ehc^oSHp$lCKYmU$rE4B)P?uIwtUC z>i?ec`N5aG-veWBxPa~D{WGs=0)I@{_kHd9B5(KDBHVCoxtV*b?y_cj**UK@K2{?f(7-`h4Bo=?)Yz)D`k1x_m3l;}VT?5Fs{ zsPu&&hfDsJF;B(k?Kxc5*^4YwysQh<{}+#w6jq{9bYOwi?DfW-BReL%F*y0Qh00Cx zOV|$=-=3hLiGl0iB$-RHE&P)wC6ScYt?laG$-5aBm0&;7xAF8A|x z{Qov5E**G9dXi@e?Tt`AMD_2d7(A;+n zL`@4#@($o6<1eZGf&^xriK+^@h%XaNK8Fnn(Y{2_A!RBgy-%3%f}Qx2$mKZi@zTe? zeaGPa1@Xfv33A?PBURVasUJ(Rw=X5!>X1oJA)%p3rnvqa@`eA#QZO>}v}eBk1b z$Gv0XGGyYRG@Q^9-fJ4@9ui$;r{)^_vrD|j_SObkbgp;*=O3qFy@{(W^Uq9mN`C4< zvMoqDxRB)9^->4m?M1aR(B)-0FZt5Hv%rtw#Gf}_ zg8Cl=$63-V(bRnAQhyzqFgH20Wa7EW_N4`hrrZU(-phF0de|l3(+_+v33k4IcTs$I z8~C$+c}?F-zOTP8)!$c+W+m6CbDeHExgUFR&)+4xsQ<-0=42~A_Z*&G75tr(RnMPQ zmSWWvZP+ozi`Kt7wK>^ZQk>)*xKv8E7`BVPVL!=LD`!n79;3d<8Q96zcPY)332TX) z`Pb(^|J`lFWA(m&lbcMJ;%ZypknCI4@!p28gm06wR|HD-Yd4ev54*?TQ3^Z_d9Fvk z9LIo1{&W2?Pshm}6G_j=se3=mC7hE36D&hY+CEOW{;@ZA{QItdF8!Wjb9*&M$B5v5 zk?r~2yYX;OWc#FF)R3CoD<-w?8x0F96PQqGFVdH9P^f5Mu8=tSN|JhCj-T~Tm;70m z{aihwPehx9-F&WtZ*VZ>kdbceug0G}zFn*H4~)%kRz*bdk}TiuZIf9ZRF zQ&^H^QT6Q$VI%aS^<2CVWT}(ygWD<5t6$RSa zD81NeJ>w+&6HM6I*>#mDR&}?!jgQR%U~q>0w1kEYfVCDlBkx% zN6CdYPUuB^zW=Nd7u&G}1}P)8Z;=g<_>w&8f=5T-1E?!sH0X=uKKsd6F4x?NE4T50 zxb8ScQ`v~*dV*w|5SHSnizpw=^y%`~8q#YOR5@kas*DK<9 zw~&rDVe-5r;_vE|l39Mz{wSG{)OAJ4EJ%7G|7*$}kVmAl?@6Y3Lbv08Jio{Bza**k zVmq5;iYM34#3uJy54>O?A%)TR!lrb5Swf*7A~|*vuig3Q_+%=?^T*z?Uvk&Njgf4A zkxbnoxXtI4|4-Joyi}O#wbgFqudZ>J++0X$jRVUMY_gPkk47;aBV&>|0?&PZ^=z4V zUH@8MlTsx~`;nC5&NZe&l2@!;Ft15zY0{%43Q4Y8vHaT3vFK(Kg(mr=+qOwK3X^Q8 zq(v`ymPP)NQe`PNJw7i?sTj6j8N8zA0-uyWt2&`0OjJwa{^CL#Dm3)Mmpy;hh~)ak z3$J=8Qet2A#JeZ{&5YGAX{XeRi-_qM5yRa4+}4o}HU5hJ?>ZTuxAbH`LP@JHb1~nR z?1!BePO{VOLQ!8h9N61h1jkxvY1!Z@^ihG`tc8=`zvrKY_~d`WN$=c{iSObRYD~Do zWAXF*#A<1ixt30*GWjSaKA!%{b!OsLB%8-Zp8FCFUCk6bn$#q*scM0If)lU%MGPYZ z&P%DPSq`eiHHX)U?iktsf*<0P4gl*x;tvJ8vyr4{znD)>c=hg`^@CyOj1%^(a7v53 zm_9J+BLA#~I4}Bs|lO{mhvG2|K!1 zqL+vMPxo_3S$R&(KCm(uz`oTu(fquB!~Menm%N{wM)rt|jY#rVfd)N0Ms{z*KiNej zUzFAZ?6(n9_4!Wq_d$kKu*sP0$Zc+bydW>Md}!cXy!Zk4IU$#CKYr=&$4hp|UL*47ANR|0F7~C*|4MehCnU$`f9N}$H-R9P$G{J% zJqF^E9+3&n_>3~?u1bjKlK$9Gj=V}d2GF+PE z`Ik$4cSCYDUd&j03a@Y|ZMk>gV^dMyjajCAg;4*ds`#^Z(pNZKmYMerc}@6 zYaC&7Ub=UWXdDw2-65)1M0bvX%lKVrxv=0y_SJRvg?RS3Py8!;ns++CV4Ya&sABrq zOCy70yY!6f-Z8jGM4t{_f;&XSo_j42UJqoG=wgDK$Inc{yY))4P_?)|HiFc^UJ%qE zGCD44GN41^iHFU?5q`nJ#OBE?xM^f(n{gKzW7kD--Os({vSCDDTdBw-m6yMWMCAOE z)nX!TEH1*nkHfy#GtoHw`LXBjn3ccq7+LtaDT2-7-+zoR47ix(Uc^iuACbMN#mN9> z3Tat5Ti7_lrifl#Bg1Uv6HS9E7kqa_OjJbs?vcSo!)x^D6@%;9YCYqk`}mE&=$?Io zyF~Pj3~nD88EtQ$is}=Ed4iE0gWk9IBb|S6Vk6sQCrRoF3vL=|)5M~K`$lw+J9m(F zii@@vTJ=2leGBI=CE;lGcC?QSj(eW)Pn+tI?c+N0|C>d|^tCSyj|p^O_d_CMN=EjN zw0^AVt-+KvPe8=Ekc9=(Wwr&OE zBH?@y-Tl==N?T85T}mhGV>$)}eVYZx=YRkEZwvgl1^(Lt|80T)w!nW|;J+>K-xm09 z3;eeQF4rya!`JP;zU}LEC#Rh3f3oz+bSK~c>cCfRziRN+p)aR?x&DjgpY{GM-)Co! zA3Hw(c<-F@%Qf4BI% zrw@-m9Cf(K;Y^2*ytDb8@OQGlv-s`dZ%4gd;O*0I9eC^Lo3meE^GeuDb)IkV%;DY3 zcZclGzWdCs^}9yzYP;*i&doa;>@2Y}=gtE=7Vj9aBmItp+atHv*j{4$v29zoP2HAn z+lj3aTf?^&-+FY*<}H)9G}$tKQ;SUpH?H3}dt;N0g*TqvFn&Xe4TsimUO#_*i}l6V zr&*u#iKA;H*Vb5DV(qatTh~lolW)z5)sd@ftS+(o*s86ormjk}^6c{c%j+yJzC8Q# z{mbSri(8gv*@2~PmsVa{cz9mQGIjC#g+mr*UwCT4;RRC{L@ubjVE_D?^YhF< zGw zgw5j*ja@u8Y;4Z4XUA+FGk#3On3JQoj;=g9-{|zCcaEAmDr!{Lk%vb_j0hi5e8kb= zn}<&to@e;6VUfdX3@b70*wC#*rw%>)K-M9L2e%zud2r#uM+U7QG=5OdK}QEh4y-Y- z#K2<%whov&phf=z{a5rG->-MS;{DF{J=Ax0-ywbK^jQ--DK;*)L~NSa!}io+NX*RM zalPC2&e{7!uf4q*^vcs~c+ZHQb$X`hc_?~Kbj9fO(LH)J=n>ZAWcR(@XLm2${ZzMB z-70n~(Cu*7HC;z{&EEA$RCrW@s7z6NyUgs;qsz?B5uNvSTHa|=ry8B|bUGC|B(hHA z`i@gO4(J%tF@47)9ilpfb(r6NNc+h4`P!d~*dLKSV()#E?n{5)v9<@=j&9qkZAjal zZN|6B+U8{IL#-#Zj%Z!6b=!N3-@BsK_*T7J6>oL6<)N1OS{`n(yhWZCXPO^vKD&93 z<~5ohY&O4HzGi2e9&0+kY44_WnjUJhxJiK~X_}m9ytr{(;|7fnH(K5(XQR^%k2IXw zFsfmA!vhUwH^|xGbp0dsXV#CZA71}Jz1j70);nGINZpxrqw0p&jjSC~duy%PwT9QK zSSxF-V>Nr%tX%V8jrBEV*Jx6saE-Io$5(Gr{Y16>)z(*ws#dvL&T5OR_NaO?{6P5T z@E+me;d#QNs`S3I@|}AtFRnbka(LyOl~3NW=JvzomzU31{%pBp<>r^`U9L{KLt%@< z3Wuc+J6U#l*#Tvnlsyus)|44urd653Aq`69DK)cXT*kgFiWe`wx!CYxnTnk#da&sDqHT+Y72R88QjzRMP8B{}cxvIu z!j%h0778h}wczZ6!wXg{n6==s0=)}VE^sh-eemqyCc%Y+&)zitrWQAy$iF}T`utJ( zE9cLd|4_aaH^kj=D(}I(Tl4nLTO)72yesm=n z=e+uK)+1SGW{t`kp7m&!HCc*h$&}?(<`tQTWNwl9Xr?up!ZPK|boR>4SB}3j;>wd5 zw`L5_SRiAjjC(W8%+Mplne_Y8*GXSIefISG)6Gv8mu`RBnQ8N-J)7oOn)zvZr>T>s zPEgLE7rqJ#8k4rGb@mNgRst~U6tvMcbbG5L*nWPtpT)EYu{mZNEbd;h*|b(- zvuG{F7IAs)#2#VXJz@{j?iQO#Yaup+)?92lt(jQXbU{H)xNdpOv2It{4-D((mfqr; zn&FssyV`z-MTy}khIJ9UhSpgutNo5T+KJ_$-7j`6?LM*VXl=!ETKgK=^4h3n3JS`Q zJ}4+AZ9!^ z>?T@!vA&suf=1aVs%4sl^(bI*uzSP`(wdtUvEQ*T3(@YDIP^Uz+d}LCt7D{DGbxK@ zz?zB`rJ)W#4vNv5NL&^h1Kwi$WQZBsfVQ9ugbfzEl{QH1Hrhb360`wgC29S|uC;of zvO4;Sp|gbb6$_!oiLJEH$0j?5aEu4r58AwfhGX3AaT<|VjIk!v^rwM*3){6t)ul4dxF+e>`^mpgHB@0X^~>fXdT6t z(mIH3Guvv*>o2yIW_0d?qaKG z-NdkcU$SH4g)|ArX?+^Db8-7YTX6pkaoEoIjKUhyunqjP(1`ZDEbmFH7wh5w!}@Nf z#o6z{_JieZV*C1tZKTDDp}rTbE!fUpFZzBM_NBKE=Lpzy(iWUcVD0T+FWZu~PvTn9 z@HgKEIIp2Bw!PPZZ3M%%cf&T{Zx&(ydL1~nVeQ258Gs?)%id4JK5}bE!{^cs%SKtm zdmUIO7(S~WhiwGIXVnec_j$8tWqomM!|?g_xK1=Z_u%h{dq&D)*)TmHp$#xB!nL&P8(@2-4jkJs z>~pUJ#~lpEjoT>ueV-Y&t=Eg=7=~lc^HX&H0&d{k+fD~Gwk=L zt$jPCeWPhR#KzFDKYV#(Y1kib<7n9SZsTd#&TbFVnu|@KH4|H4zwfp7ZI`x8qHPnK zOxr5<5N(Ut6xvf_Q)y3%O`~lVn@-y#_Ndt&Yu`q(nY0aJ57V03zrGC~p*0bkMO!ar zXVV%>+#K3EiJMD%LTnywt=N3p8nF#m1qJQ4^}sp9+qckuhvD4fwurV`$}XniyyS69 zX!XUG(pE{?Wwd${x16?8;-0kj?XtG45PQtxV2_JEPJ2x3JNtcJ20I_6P57LjGFxEQ zPi&Qyh4mF%O^Xv-L+c~9mKH1a1Wj}Pb+q0Rx6%yl>m{~<7A^LS*~1oBTWk}pme^)m zO|d6wHN>8xRTtYrt0uOUR#j{pEnMuN*-UF+6|o((yTo?V?iAZat1Pygc8Ay=+U;U{ zX_dsDrd1R>Y&OH%S3&GqT6wX3v~pt4(Za-@r{Z%rVz1F|6+3D+-L}guVz1MRi@iZBCiW(+sMsM|5wW*ug~i^c-7NMF zt&rFWvuW18f@1H|3W&W&3l@8yc9Ylz^lEn=^@hZ*j0I#eSe=6gy4JAoe3Iz1UB*bYef#t`Ivz zODmSy+BeDCl1A)Ti-QG;{YLx4;`7+=SpHes?_$5x&Wim(`%Ns!en%a@ilw3bB6h9) zKGEXNh+RSZSu7pxC$aRjAH_1zPK#xv{UCNF?R&9IG@OTh8{A;OPq6mkJnWW*_N~}e zv~R?+(!LhEns!nw8|^ExYiM7JWv6{1mV}LD@L2L8pV%O0=6U#|EE|!aSOze8v zr((HjpNQq5eJqxjc2w*(`+dB%?<27rX&;K^qkSNjpLRs-CffUA!L;|p3eesaD@Z#m zR*3eFSXujhoVEFFvBI>s#EQ@ki4~>2DOQa3hFEdh>teUi4vO7Mdrhpe{XW*(_o`S4 z+ACruX$Qng(OwoSO?yc!g!ZCX8QOlaP}&P(HSG5>*1qS(!e|(4@y}K{+CH)JG>koX zTm>4&6x=G(Fb3dOiH2)-x7%sB#&)}dhU;m!hW7htYcsBi-R`9A6uXPIL#zsIyI44F zn^;xaRCLXB6crru~=)`BC$5Kg<@@K3&ifD%@^xwzYn)I&l77$n=2MUnqy(PoPEv)_kV`(}uBp-mTyqD>R)N}DRyjW$KBJMAH{9<<3~(X>fo z!|eB=*1m~iy=W7}dea^hi=mAdi=~Yd>q8qW7DpQ+)|WO~49j`I+BZt9KW(Jg0NMz# zfwbXbgJ@W9@7D&?hKdcLJs^hP(H8v8%c2Yn%W%WK8DfUI+|ULX+T@0|!q9d%tP>3D z=!SKN;aGCRHiBWBxnWzvux;J2&0*LFZaCftn_*wMVIRVI3{2?M%-}h z!0=gg!!ZWKG3SP35r$*a4aY1D$FLjvi-Bf1*4^+KfZ;RYhR+HNpB*=RreOGtx#6=1 zL;vQ6&nOI^SvP!^Vfbvj;WH0IAK-?*0fxT9ZH4_lzzltg8~Pd;`W`p*Nig(LZs@yU zI6t_dkAtDlb6Y@bD~3K3ac#sF(OQfBYQOilxO>Hx&{~NtrL`1WM!QFBIqhz-M`=LVd9l89JjqR zjPK zv6pBVd-J%LX&75|J3zx&p4$u?AD?Z<-#s$+@T$eZ?iPEE)>HZS zZ~B&|^P9dj!#2?QO>522KR2*{{Tvlz9mb<(W2BDWw9#U{Xrsh>(ng9!(?*E(pbZ!M zo^7cwZTW>(PYh$9eXV_U#eTEjVRgjL(rSzSPOByM2d$8e-kq=3&z2ZnU9d z7^_6t>QWYCpRj6T7~76Bt15=ER9Lte##~`l#4t7syGsmXxUf6LFxCsJEQT>**d1aR zJBHmZ);+W3oMx58FcuA~D26d>SOqbRZNtioVGJBrP7Gt^urM*)3+Zfj%svx-Ok(UE zhI6PJ#^_-E?^;I zxW@r2Erxp`uu@{UX96oJ7ECK4hI?3@EDq;iUtip-f#Lk?hI=|NoPXVJrX3b5O#4Wz z2o3pxmn}*|e&B|CQ>X*^fgA1tb~JlK4EMTVIM;d{?uo&0u64t`GZ=CKH{4@`As2AN zy*LW0&ciR3Bx(r z4fir(I48T|o+k|FWH;O!h2fm+R>!Qp8SX#3;a)53X))ZBh3yr?y;~U0$zB%scwxAI z>V|v4u;;|?qU{r_Lc@JqFN=KSek;38tSW7*ST))nvFfzlVl`;H#A?!Ziq)d+5UWkw zE{5FWK5O3wvAVSNV)bb2#Ol+wh&7-+CDxGkq*x=`X0gV!O=3-G8^w@6w6!*`6hkfu zTOo#=5%#zka!c3~V#q;ZYsHYO!q$i(H-fDeLkqL7*tTSza z7;-4oF<%V17Hpmvax&OlG2}t5%%+JU$Ae83LoNuLA{I@1NUSIAVXnk>%7AH2!3~d=A_8{X1i%p~r5}RYz%*w`yO{Vo0dx+LcYznQX*i>4y*fd%X zvFWrvVl!y5V%hC?Ja^Jb>|u+8MT+IL-|^f@N3lm3*IjHjt(%zr8dT|upr9M=-y-(& zv;EAqIM@wh^Jsa+=F@Qg^s)^t)iuqxYab2^|&<>=eCx1 zg~UBUODndHmPTwnElBKXv#!=YEYH_tBMr-Q+eG`r+V5@IOhX+W_ayCiiF=B6R%{FH zH?gg>U&UTDi?a5i&0fcL8rtHvgH}b#?xfu%wu^SB*lrry?91Cjt1NMQX?KXdZq~)x zhjsI^&(N@LZqL$gm$Lh4mBgN-RTO)khVA0Zdx2I#;`Y-<*3sG*B4yvBeIs%2(@IO+5n3s+4`?ODKBScp`-pa%*iqW8 zV&9o{u=agz=KJUq+DWlbX}3t(W3;a%?l|pBvCnA5rR?XlFC^{+?S$AbX6>zg#iZ<) zw4!2P(LR^5CuyIFeN8(q_6-f|?|sv^v||!?iuS2kT5DT`{S=n6-&-8)X0ab=pGeu$ zv_ca1Bkf~}`-xUi;(n$T5IaK)7RzGoxZi$`n)&|y)#6|uiTy_VQ0y%21F_#}N5uZ1 zy)PETdfyXELwi^3IwnvNzEVNL(=OWw8RZtEFr~+Dj5wi1wmbS+iF5lU2$Vrd=gggtlMG7Nup8 zxMH--V#R4MNZDIx&x_qkdrl1bYD@dcB+Dy7+b3})X;(^IDOyIc(zFa>A++>jWoYTd zLTUC-V4qjF|G39~o;CB&M;PrHv2rx)QUYbm)1H>N3begq6=|001(Y=Td0agjawIqOEzRubDJk24_M})t8uBJD z+laPV;u_O7i8Y}izw)w8X&WUD?ZD3lG2~!~Mb71Au{~kPecW&iz}8Dy96vDRLmr3E z8f=}!p?`oOAM&_+X~>7%(9aonNoQWn>iuumio*Tb-n#Rl7d<2ZUu%Hnz*_NZ7i4f&AQ+mrT@ST7p#A&=`#TW;ok zSPX5MSS)R+*eEl69*|4<^5SU7rQG_`mPpxtw8dimX^X@L&=!gfq%9B|M4K-*(F}dy zJh36Pxnd8{=7|xpnu}5gb#b(iliOr@B6`MnQKx{5;h}ar4oRbEN&8H0#TRjZ7pmh@4NQ)HPMC&N_oEh?;4q{Kz+KW9! zixAsFYbUmqcE8v*+I?c%X>G-J(AtQ-YKEMxwb(A&y<)p*t;F`wT8izZ-6Qri?QXGW zXf4E^r8O7ZM{6ebn%Q0U(^TwvS`)DsXpP18(;A7rNNXte60L#Q%e4Ap2Wa)gUZK?$ z`_-(n{nQa#mNtG2zP8vwi@C#oYKgs0t10#dt%lf}wCZAqXw}5tqE!`pn-(ti4y}sV zVcK0{@6zrRdyiIG?0woDVn=AVi+w<=B=#Y#qS!~Y3SviT<;6axl@t4f7AE#7t*qEF zTBz7@S{bp=Xdz;s(@Kk-pp_E)f>u)OOIiuBuV}Z4ouu6=_BHJmv2SR_#lEE#6FWsK zD)t=>`5=CNwx925g~fiL-7I#RR!HneT0ya&Xa&T6rUi?gq1`0*3oXA`x^(tTf_auS z32pw({u_3+SsshUdYq+Ymbl+(Stafd+ErpfQim@u4Gqh4TWO#39#$Ur)qMM1VR10r zS96{ghD{@Ja(SzTKX^v`ZZX%)qa z(a=A8TyYxuXSZ8u=%3wgrJ;XzyN!na*{uW({j*z5vs%_Z^nY%5n$0uG&}Q_{ZWU{gAIPpmraMzI>S z8^rE0t6}ZSD^`n^TdX$ida*h*^sC;My0n~P^=Q|L)u&x6cE4FQYfBEX28_e$&fV>3cqYItg7%$Qd)g_n z4m3Oi;blA0@T`Q}FtaMwK0H(57RflHK$|-;4$qKyTo)Risc?&;;h7J&t~5Lw;?|9Z zXGq+-(>@dHK|3xMO~bPxUUsP2UA7*diuI!5Srd=zO~W%YZZR}GTjLf>!!tN;eQ0=A z$1RSAXL{UvnqiwB6B}oCrx~8@^0@vqJWJ#@fQDy|+y>I{Y?9j`8lGWt8%)EqPHsbJ zcqYp20UDm2a_eh`?T6=;+@_dSHp8<-Zo_GKKFe(c4bO48jiljuFSk)NJQwCRnuh1c z+{Vye5gSW8AU50Vc5C0uV&iEqi9JYrQEUQjzt}|D3u2RK&x=i_Jty`MZJ*dGvx?Tf z9b!w(Dw*L~KwsZ!v}eSo)1DTaLE9@fleS0fVcKr7M`*jmX3=(vO*KQCH;K)m;h9Ts z^IY0Cv3WE+!|8GJX?WJtZ2=9>gt{%H;n`8QMKnBP>bB9Wg0*k8*kZ&2GS)`>kzdqV6n+FG&4X=}u`nU%NpEfZV8xK&~+8MjhwHEo618rtJxYiW;(Jwba^ zY#nX6*fVBjt$p*v)-!IY*apTe5!*ytEVh}pNbE`4Lb0c43&gh2=8J8m%@upuEY#XO zM{GN7w%88ZEU}%mN5po~9v0h8n<=)3HbZPLZMxXgv}t08%*t4sr;0sGn)6(_?1J5p>v<0go`M0-%|MV1{ec7Qfc>=oKru~%th#9pI~7CT5A zCH9F~X>0Q!u{US~#a?IG5n^vLZn)T6v|(az(}s$@Lwi8%Fl~s~yR^Y#Uz(M)HV+Vc zpVnXO2(6#k2eiIoAJXE)KBDyzJ4%Zc`8zNU2+`-av@>|0u-*eO~^vF~Ud z#J;Ds7t3M^`z_YKR$`|u4%SlaD>JNHJF%Z=_lx~ZyHD&4t*zKEv^HYD(proCM!Q$+ zDr<8wYfBTc-z^T-SnNkLtj9fKLAH-zcZ;Q=wGc~7Yc6&Lt(h3U8v@H~Dt5KCuc%oa zF?@FgthN}&)v%8z%QeZB76+RomWeh|EHiDYSQgq8v8!kgiCu4oV`i?{)wDTc*=V!H zuA$8m%T9YlEC=mjv8-lTx0zzs(PoI{q)ivgMVlselNpZlrDC~hOT_Zf7K`PjEfTwd zwovRw+5)j_&9MFEi{+=y6Dw+l&)h1pVA@Kt0<;xk1!<3q6{0;Rb~Ei!v3zFOF3ZJ= z(3XjXn&Gp)Rje3oi&$~mQ)0K!o)il+Lm$0a>^9mau@bb6VkK!C#7fcDi=i3V+ap$loVvT8UiPbT~`W_N% zN_$hR8SM?R=Cs$v+M3~9n9By(d@S;AT28ThXxE7~F~hoDE7ppZL+oDK`%-Uf+IwPc zXzz-3GQ)ZKCRyHnwESZC)AEV6qunUh(hTc+gIIf7Ua=0eJYpSbxy2%B*Na7)Ar~tu z)|pmBtP8EMSQPDMu?RD4gF<56Xa&W((+Y_7paqNdGeZtjTC69nlvpoXNwMCv5@KD= z&gGtBv9w#o`p|9>i=!16>q{#pHq`77YjXv${%E6dOUSEH=mt>wAaTDBA5}qiL1I#?UH?O)*PjKXt^$ z(Q1p0r_~aBkXBP{0SB{<)x;*#s){{C3m2PZmezinh)tz67Mn(EBsQJa zP;8JImc1Jq%2(iWX->`OKOKA6t%`?Ng-6yt;)>dpet&P~DwANye(e4$iW7jU2 zYjnT0^A`KTJ)0F42fI&fC9SR4Dq0({)wI@PYiRe1t);aRdxF+dY>OG@ICU0VPwOPM zffgyYk=9Xc6Rm^TW?Fl(CutF4>&&oS+KD~IxSnELY0+ZaXg$QX)4Gf8pmh`5N$V=M zixwreo7P2a53Rr0URpn~r)hn~o}tBwJxl8&wvQGo_8cun?0H&mu@`8)#P-vMiM>c0 zD)tiX0kM~9L&Ofy28+Ey8zlBBZJ^j|v;krVY2(CRr;QbRgEmI&P1k{M9idGW`+zn<>_ggvVjt1Q ziyft9H}kf9Ov4y}*ZT?W8j1UqhH(LpJ4VYUamQ&>CGIoY)e`qPZHmO5pkn&c+_$tG5_gI=L*l-p%@g~cmRrjHK$|OZ zr)k$q+>f+56894=m&E-{n=Nr?XgMYB7upSCztXHr4SWyQZ#0a*_%=98%PVDnr`f42 zQ1%ZR#%a84P=@&P2d=C9SW81oBW2Ul@=M$mH2Wt|M><+QiAzsgZ07Z5pjndwWi!%l zl(JXS7D?GmG)p}LWi!(-R^@eMp=FY|t7ySyzP?#$%cShpv@4}-Hri5&yM}g?EH67P zqm<1-TOwtzr4^F0*U=u6xSX^svbQQ++M`l7H!ZW2%|lx*ad~M4WO+Bxiiq7v zLtlb*Mn9R4w!(h*ZJ(cpzQp5hq7^ptZ68cSU*d5EXg5n-LE7VHUPmDs`fM+IGY!l4 zIttU!pL$#oS}}>kcrn1=&Hzvgk6`vTh}%flQVSScxsxm>V~5{LO`Fq|uVd6+W?D=B5G(?Z2C&ku1= z$?`Ba5r)3bmsg8cM#|Qv;k@8+m;;KkPs;M@(n6$cJ=$i8t53tSe0i8#jOCS+vX~DI z+bU%-UmF%CagAv>FZl8>{~K{Q2e{!~Rj{&B7Vq4GZ87uDTXP!vH80zOwnO6Zjxm%) zf8}v_{}-%+nIDsQj~Q&clx;-|ma_NK%1c?i&kkj`Nm;yu54Kwj@A-q>E@kn4Mi}}q zZ{Pj2N)p$OR!HI^XuHgOyR@h66zf2%D9gjUKvD0VVv)3`rEDh}`YUf=XIf<`+l97Q z%0|(ONZGEmJEUwk+8!y}orZIO*V}^@E@h)>SbvY}Nqbh7*NcYz?Qy+nRm}W2h@qjs z_qbTvT@u%a_KcZtd%Q0g+w^&{zO-smwjT}sn%B{vhIK<~1*D;WW^MaQh zM5}7%>oJ(NPs$FVRX6iG9-!@)xS_NfvblP$ZX;>_Hli4UZd7!?EVpD3jewNFV?HcDL=; zUf3OJ65@8yZWr50t0cCIR#9v>t%BGdT6wV@_B*br%Zcq}Ts^U8Xm!P&rD3j%ug5+b z=DN5&N2?|FJguhK3$z+y`)Sq1UZhnMdx=(6>}6WG*a2Dj@Q|vVw<^cJ+ z9i(9nklX7t%u#ZCgN8XuZg0{Wi5;Rf6nl%-KbC zkA`_)Ztv4Dhsx~;4Rfg6KA>R^mD`6j%%O7oh=zG-ZbxaDm*(~{4Rh(-KB2V}`;>+` zXdZWrhB;_%$7z^@=Jpv4bI{yAr(yn|+X))x|G9lZ!~8$DFKL+T=k^s1bN$>-(lFQ0 z?Q0t5`ni2W!(2bNZ)uq8=XQ#QIhAhT(J-gd?Ry&LRJ#2@!<z0l-Tr54!Qs_Wj2HG%*%SglgU0>dnG|b<1%S6Nc zUAN4%v{FYFnuP`8uA*U1w3p3F8!vV>ZJby(8sl)l-AcPz>^52#7fahh?S-Vi-pjTPs6cY%Fr-Q z;}%N8IE`Cb+HGQCv|Gi>(QXkdPs24pu>GLk3bbNk6=_AqD$$CF-A*ekb_Wf|GaPkP zrr~&YyOW0F+3hYG`XRR}G+bK++Ygo(PQ&%3TU8pa5#6fMaP90?orYuF>!?A)G458A zhGX2V77fR^TWuQp4YxWp^c!we0||xYeiOcy?<*!}09akcQ*gtq~1ag>(+^eW7n-S4gHH-7aIBlwkvH^`c>X!>uSCj4 z)x<{ADvFJvH4z(2Yb-X7)<|qTt)bY1v<6}mX!XS=(&~v#qG4>wx8G#iyY$7mhJ9;fvd zTS4n3wvyIUY!xk9Y&ETi*cw`Qv9+{rVo%UIh^?ay6kAUlAhv?qga}u}^5oF+J{68jdr!W3-#aj?)T>eMUoG=Vd>qA+K{g zK|_w|_5}?&rrVb^(U4=hounbhbo-iy+|lhD+AU(=(va7A+$kFJ4Y%)T6~w-$ zA@B6KA85!s-A>bxce?#ZL*D836Ak&K+s`!QaBgR4$l=_6p&{>d`;}Hj>^BWbwyOKT?-4bu{FT9+#7b+|ex;4Y{LRUb7&p1G%GH4m0du$mS8P=_nSP@#JSW#L>v0}6iV#R65v%M{4%raOV$P?Xer6EsryN!lC z(XFr<)(v^0TS*%7M7L5jYg5c0tbX*4!+s*>tfwEQ{RRX^_U?RYj%yR5DK>&}d&CBtVO#AMn{JlV?10!9+RI{N zX)lS5qrE6Lp0;0Xv>EE%B{tVAm)Rk)iL^JxCehvyn@oFM>>=7gu?NktZZC+9GQ<9O zUThleIkBZ?xh?L9*bLhHVl!#)i9JkvSL_kmVX-M@*aokOO*KQCUlp4}dqr%OSssf! zE;f&LOl&^wQ?UiKPsA3|J{Fs0hHdbU*laVj`E9W!w70|-ad}6@Hk#$NvR{iWr=1jg zl=hX_W3(^DmYHE2d?dEm3~l~UY$fdjvB$Z*FT}Q+-C$*Z6k9_(Ew+~SgV+{Bg@-M`&n$88P?+`u{~T~ zI$7Scv@673GP}vjW)pjkcD2~^w5($LxV*Gt`)O&!UZe$yy};#NCH68ci`W}x!PdU( z#a^N15_^@FQ|thjms#u}EtA;mv@6A4?2xUv7@v+V(*z@ALSPN z&LJ5DPh_8ILqu}{rVM6zvwVFU+tW#l^m-6%$LJ$-c|N;xO;k+j83C zV3_yn_9Lyb*iW=O#J)Ad`i6>~p_LK)&J61jBK9k-v{=UU@$b#6C3e>0idxy4V!zXB zi2XsUE`~26McHa%KU*Bu7jvwAebaKgV2-uhFBXS&!yIe3bQTB09BVhcBc_-c=JdK{ zus9gz^txrFVNS2xl{C!hb<0GCJkIWw$t3v{(*W53y@$-Nmk>brZ{HhW$QJEEjEn*!8sjV%M0V z&Hcpk(E5tyrNxQeKo!iTIBl%hEwnLWx6($7-9{TFR)RKCtejb9 zt9QCsDcUr#(zK~!#mun2Q^d;99uf9R;4_ILB)6c@w_TPA}1Lu@r`#bWxDpnST zbBbF9Gpw5)YqiW4ndz}sjb@8E_dl#}b($W3cbTCr`uVL%)6efcX84}ISFJ5YY*}bu zZQ2#KZpCTgW@t0cDZ#Y5G@Mi1>d|mcajQ?mImN934LO5bLmF}hxBJcT-GXVPEsbd> zEG|z_e4Crl4w(6RG^Kqmam{EiOI&kWkkrwF_L9WiO?y$Svl+e*@iVETC2haNwW9rD zR-A3Vm-d3hwWj?pacyYF&3t{^(#}fUeYD@idYa)o9G^Gy?b43+tHednj+uEK?Pu0vs+P6>2cA*`WxG35gv*O%-U1>jyb))?x)}8i| zEUyRcL$PSu2Vz6b)>!+VHS=}rMLQyKy=gz16=(ZmXzxp0EbX+!^`Sju=5@r;-jlL@ zY43`SHN*FNJ}qVY(+*4A0NM{`#o4}rw09(K5bb-38%*14=It9odt1srKzmDUiW$C> z^gCJJFxn}x;j}|ib_DHBv5~Yl#75Cx7aL7GC^m-nn%FEee77q4KR@or(e{}6`i`gV z7JHEPijzz$QKjb!thJM3sE)D&G+dLXRgKqO_ z_{_L1py9LNwvdKn*KNJoa%&&IZKK$uH0*OP z`xtG5#63=1FSgYT-_wkJ?qyffu+QCA(bh@X)imsLk6S~-K6hJ7dqT=SL0c=fjWzY(I}XK*RQP zdxf@0%Dzg&_Vc*cXxM&kADhjy_AQjMuhSNYy+OnF^RjQ!=1bfm8n&s&y+xZRac|S+ zioHXdBle{kzT14Z*t<0BBd_B<8uo|V`!wtiw<9!cXSWY%*nVyw(y(3JKB8f}xE-Zo z8@PRMhVN*{`nr8Wn`P#oqfcp%h#jM0yLj2-G;9~Q&uG{#ZlBX0mgSwGp6d>TvsshC1ASradHfhBjI37uqDTtk%AVtt}J9ezQ0jmgoEYEDg(Z z`<;g6x&1-I^4u_hhUHBVOGA55EG=!k*cG&KVmZxb+VaMVrKh0|-!2(wsKYHIZH$z? zl7@OcE)xy)x@D$~ma=YhUvG1M8rtl36Rp3L4W?l|Jgxu@>)}?A)=$b7qG8=U?q(X+%`MFAA!}b>DO-dV zCsve(ZQx~#(Xb8Niqo(S+-{-uk>%Y=ixs<#79)12*<@=Uwu>*XBn|89R*Hu8a4Sv2 zdbowq&=$8cG_=Jnl!msrm8JC-t7$gT+Sg0091U^amz0+{w+ghLQnsR)$5o<5%kpj) z^Y-0A>mhNKY2C#dnoY1aBhJg-MMIoh6nvsKhWdAe)e{>;Lz{iu52m4gZbN8jpW9@!Vb;F7vb>=*w8i6w(a;vR;WV_x zZGvb%q zp$@ktv9F}&J}))Z=<1oUUoYT?Q`2fL;Kuz(ol!nE}EW?cGL8H z^txF;Yah(pvX_Q)l-tuZoTJ>Hq2V0m_ACwOD7SqyoTJ>Hqv0Io_B`!ov3Je-TKfu# z?WYwKdy%H+)t6{`UVWKXK*}DV>ACh5nx1Q4r3Fjb*JyhFJxJ5@@5g3wwjMW0**9qU z#onZ08~DCFM9U{}Z_#cPdz*%BLZ?ZQyZ7Y1d2K_h!AVeb@#b_X!Q#!0l5S*4OPA4eRT6oQCyq z`;3P6xqVJUTij02a*6$F*2~(LQ|wC`;`|u@igumEos_a3_qD{ieM7remiH|!huA4v zcCqhh*NFXQ*3;UI<@vh(K*RFfPSdhU*&k_Fi~U5)D)uuCZSm!up`k5qztB*JTUwhp z7j5mkN|v`IgXQDqH(Cx`h=X;ET1XkEl^Hrr_J>nwI1t&>@J*Osp8KsaSDZ6R}%pjm2)IH4?kSY@M~Qp;!r8 z1F@2{`eLPMxGwYcC{4q4o?8eF*H&(2Xt=g=3#H*2$E~{AT5BJ!aooaaxW;iSN5eIa zTX`C;aoj4DJL~rL__NcWFd6QcY8uBK$Xc}@Kx1O{t zV!ddY#d^~+iN(;a6pN*06dPr>+}f8xERL35tS>E{SU=hoV*P1p#RkyQhz+C#i4CIR zSv=nc6U~-c`|vED+YlO_#dCXrhB?V@Luq)P&TSYC&(paLr=1ZSLBpJ6j~hwDGjVP+ z&6ZgE@O-1&Xd0exbQ?p%^Nns}X?VWTZ5$2HD7uZO;h93W2Wfbw&}{+@&lI{XFk5Wx z!}FnTlW2H8)NL{i&xg7_MEg=~3hfKAsk9Sf(`cWIO{d|ROs``G?YP*ZW{a%N$HX3{ zeJb_{?Gv$Cw2#GR(~gSGp?xGamxkwDy?yg&c+S;rJ`K+?yR9`_Xl;I9Y$5GEu|+gI z$LwVn(+-O*p}ixvl(t7~8Ev=Na@sDjC(RaE`*w;wM%y9wIBmPw3feZYm9(v5t7u!q zR@0smTSI$NY?s+QYu{$ECup0**3s~u1mAw^X&b~g(C}P@$8DtHJqd1`Xm}@r+h!Wx ziQx8}*<5QM-dEuE6m7NG7TPMYt+bV5+h{Aqw$mOL+d+FwY$xqeu~*FISo@ZX?WQdg z+e2F_wwJa<>}lF!v1e$D#Ga)s6x&BzAoiBoY-`_qvFB;?#9pAy728jnBlaR~w%ALw zSz<5K9uYf0dsyrPvsu=@nPUGRdv^kTQ~Cb?UqT~IXdubZh$d7jndd2lCX@_ijEbZP zAyX<9nh1r;7#Y$$&+|Ob^QgJ>dtGy1P2jjT5oy*IPo81%kU?@EpDV)Wk5dZW>MC+m$u z@7=676214b-bLuWpY=wd_d(Vhj^2k^??Uu`RBx)rcL91IXT4$QeUkOgNAJ_DHx#|k zvfg>-9(Phpg8Ry<$3#eYwWh7rmeKIP3L6@8_)78@*q$-kIqAn)S{=@3*Yi3%%d7 zUQhJ?$a+1{E1~gC(O9~p_op6bz0=Vvls&E+dRt_@)6grN^-e`^%dFQGy&_q!3wlMf zUT5@5t9Pl!ateA|WxbQp+dAu=gx)q;??m*r&3Y%Gw_Vojgx>a9uOoWJvt9@E%BeS5 z<2xR`9kO0~^mfd8?a$OF1=d5=edb?!3Ht3bidacnbmGxSow~u<0G`^PT?V9yk zptoDrYmVOTS+5y-dt|+)=#|NOP0%Zw^%|qMXVzB^ zS+5>?6|!Dk^eSe(I_Oo(ddH$yIqTI%?{M`dXne<@w{O-v8om9p-cji7pY>{?cRu&^svWRY&jOtaliChh)7&(K|Hj9fICrS?^%< zs%O1}(5sR4s-agi>s3Xsk$Ph^<|^nNk@XHl@5roo0D85u-u~zvmG$;R@93s3UrZq}=SUcIchH+uE6UU~EyWWBx6Ynb)Qp*L{b zzrOQi$FFu*|7ZQzSdX*sLD}&u@13CD0QKznmG_!vJv)Boy=Ga@j$e7NdDi1O$QD_T z=NnsQJ)T=^mGyXTv31ttxy3eFkLMOoRjvYs8k@?O`hXUDI+H&DGk8lN4%^4@7#&yHVtuUpo$<5%80 zJ?q)=EAMsBdUpKEdp)wA9l!Ek&#Y(1ue{eQ>)G)u@12qL?D&=UhN{qkPI`jr-z3!tC1gWmaB?`!miWxcP^yCCa* ziQa`-?+f&XXT8tS8%k?-i=xBQuJnLy~*g!$$FE}yG^~d%D4`_o3h@u=-r(4 zu0d~J)|-LeO!aIIrlYqY>rF%NmaKO*dbei1tI(UTpO?F|znjoosK;4vE_#cy-W>E6 zXT90zEy;Q}qBmbXn}b>CEz5c{(YrnC-GJWmtam+n_Ia~ar>0HH=>IRU4|4inMg3BG zNTD`m|IGf^w?rGejmPHyZJvS6Gq8CEHqXH38Q44nn`dD23~Zi(%`>oh1~$*Y<{8*L z1Dj{yU(CSzJ@n))^`HI!1Rdh|8$}5nX#0E1R>aoCHiS;n{QVrAJ^Bk}Rp?O2->`!m zX#}>#j*JBCR9(Q%?7&Wf2kb0)z)qtl z*l}Gu&mOQ7@qu=Poyw0bcCJ5QUj_)+w*>;79FC6(fmJ#AxDTVhk~s7)M;Vu{24xmijqBW@>_6Dx>2h?T@DM-3ILi8aKX z#9HDm;%?#|;$BBh755SM6Aus%5)Tm%6ORy&Iu2Ly81Xpq1o0&C6!A3i4Dqbv2o=u} z&l4{YFA^^iFB7j2uR4xY@fz_u@doiG@fPtm@ec8><0uvH5$_Wp5FZjB5g!wu5T81Z zR`D6}Iq?PYCGi#UHSrDct>YLK-x1#v>xdtSABmrcpNU_HUmdko{6_pv{6VZI{v_-( z=pJgUx4qeSF#`5wjevcdBjH#*%)agsu*jH}?_T8L-eR(Hf-|k7MryTqGPr$w(6tFK41?(F}0s9J4 zz`mmturDzM>|0I=^_62^g9_O9qyqLus(^jdDo~!-o2WokbTm*-C89F153w(?AF)4i z0CAwBp>nDaRf%fELBzqtA;h7?VUEVisZP`&Y7&PNM-WF6wTPn}O_XyqaSTzLIF_hG z)FtW>^&L%>(|~A5G$I-kO^BvMGorbpnQ~eXEs0h{YoZNt9MP6&=V-2+_Qdf-2cjd< zi8z5ckvPfGQaL9Rrx2ZqE<{)2RN^$Eo1>L-PA9q(J&2w}FX9a1Orp1=wQ~9peTjZV ze_{Y}7BP?*}DpqO`+432sjmCyExyhGP#a zMr=iFO>9GKOKeAMPZTFg5IYb%5<3w)6T1*4iBd#qVpn1}Vs~N>q6|@%*pnzn>_wC( z_9iM26^TkjWnv#L>x>ULL5pQMpP$i5H*Rzi6e+3iCV-_ z#L>htL~Y_&q7G4)s7KT%8W0VMMnq$x3DJ~jMl>f{5G{#TL~EiAaU9W>Xh*asjwd=0 z9f?lF3B-xSNyN#-DMV+Y3(=K0l{k&)Mx0J`CwdS)iC)AR#F<2Iq7TuR=tuM?1`uZv z1BpSz*~B@-xx`>%2yq@UlsKOlMqEH#NDL=N5El_6iBZI8;$mV9F_sudTtbW|CJ+;e zNyKF0Qep~m8F4vr1u>PllDLYvnwUmRCuR`W5Z4md5!Vwp5HpEc#ErykVh%BvxQV!# zm`BVf77(`(w-UDz3yDRIc$RpMc%FEHc#(LCc$s*Gc$IjKc%68I zc$0XGc$;{Kc$avOc%S%y_>lOB_?Y;F_>}mJ_?-BH_>%aF_?q~J_?GyN_?}ot{6PFj z{6zdr{6hRn{6_pv{6VZI{v-+&#jh`05QT{?i6Vq8@tb}fOTYgRwxDfnvDIS(wk&JF z)8J|I3MJ|aFQJ|R9OJ|jLSz97CNz9PORz9GIP zz9YUT))7AtKN3F?KNG(YzY@PWj#2T9<5(3B6ORy&5|0s&6HgFN5>F9NJL;;qi@2M( zhq#xxkGP+BfOwF2$Wc$l3gQl8C9#TFO{^jAB-T3Wt5`@ZA{G<2+;Mu*+H-7e=D;%I zc4E1sfeKsOGCjv|6Je`z#ui&bG+=9>1{M&udTVU4rDg-RE^a~-71t5h6E_euiCM&r z#B5@Yqp6B3iK~dKiD`r_2$u$GJD5RSLtN`~%PS{dfX#}?GsgC9< zE+%ZHmh>>&V#~?|#u1kgM7k#3*94qos;-h;xa- z#1P^9f*!ZC*lO+MB*gkWJfy{_Op zU^@x4ci5k$A<>9vOxRmg+JQaC-Ub5piVWE6E?_U41e>N~h}y)lL>;0oVgJ&^-t4VC zU~kh2_BT+2s7V}796=mO)FO@|j&|5zZdIZhaS(AZaR_lJaTrnEVLvyOiG7HDiT#NE zi35lOi7F2JDcqANN9;wEC-x>P5EY3^4*LNwMU*CXC3YirC-xx95M>?qUa&n;oG3x; zKpad(M_b5uzwjjM$3Un%IWeme|f=?`^;NZ!Cu2i9d+-#GgbV?rjUA zu*2RdzxU@D))7AtKN3F?KNG(YzdGzq_;cb5;!ENy;%nj?;#=Z7hrPeQPkcapNPI+m zOngFoN_^(9e>z?#-XPv2-Xh*6-XY#4-gDT$vd>NvtLABJL*cA?_vabJ&NN zWyI~oa$*H>2eFb^MXYw%=c8MQTZ!9ab6bbBUXXn~8bEd}0Byr61?B zT^DiK2h-p6U;5|W@CUJ;_>(Ba9c)1qCTumCv}^m!Ys<(4Z2g#kEgTcD6=MRnR7}9u zhzZ!@FacX>Ct-kcY>AzKt*sNVMRfwUnohu$(Fxf4IRRTZCtxe)1Z?@CgtHWC>kb8M z!J&YyG!(EUh61*>P{0-y3fO8w0b7PC!9Mrf`bz;@cqw2jE(L6)JaEnw@m1#H2)1pD1|39*z|M%+#;Csq)55Gx($D`!5j zfVhRYmAH*qNGu{2JBBG|7I7mno0vn)C2k^aCgwRVP|nrFG-5h2gSdvcmbi|%p16US z>9|lMxRjVeTt-|@TtQ4Ft|YE<3|G!rVjOV^F`k$}Oe7`|lN}?JGn^PfTtti{MiHZl zi-|Fgk;)lN3?a@Vh7#u!!-xxr3mv1BvyXq%&#*7CAF)3%h&wo&IEOgbFJjyc21G-m zkz=BAY7&PNM-WF6wTPpLqlsgP+K$NztwtO~984TS97-HUR3~aUE>+Gx#J@~V5#@=!i3&tTq7qTrafNb96T1?-5xWz65M_w6#Ga0+$|*tYK%aF_?q~J_?GyN_}(!?Iqwr65FZjB z5g!wu5T6pC5uZD*QRr*L>%<$xo5Wkh+r&G>yTp5rYZdw&@jUSY@gngO@iOrW@v7qn zzJvW`-uCA2Z#rWhlq!XM~Fuqvy`)%SVP=NtR?Ou?k4Ub z?sd#o&Qf9-aXYb`SV7!DtRz-B<|t64`Vlr_lF~xCXF9 zM4UjJNSs8ROq@b=Cb~G5D5ni^9MP6&N3#F0cT;wa*1;uxZ~V})`KA`T`FAr2)DBdQZM zh?r7KXCwYAW?;=N>p>KRA@P3FQPoLH&KD8NK_&!J60*DG_fnO8?igF z2T_J7OYG@bt(;x`=!#(nZrPF8iP)Lgg(yjsa;(v=ck>*>?t~rQO^0}GOBtdpu_sZE z*o!FdxKn$Z<=+W5+(^tO<`8pkteaSd@TaUF3zaRV{aahGx~BQ7Vd zAf^&m5?2vd6Vn`bD`y;W2{GO=S|`K)@L&53>xn;!Lfd73!S=8%h{D8{L=mE>!>$3d zWqs0*i=mFLR}R=hJ^@?7CtyqW1Z>TofGyS&uoaCG?D8^O$|zuK7zJ$cqJXVh6tLxr z0=7<3z!oS9*lJG+cIDbZ#KD9u>=X~P6`cZy5w?a?Y^g!ms!g%QmcUA|OW*b-Y|*RO zvOjSEaUfBJs7h3G*j06V5#@=!i3&tTq7qS=*vDZP?CnbIM(j@PL6jlN5_=Nm9Cj_> z4#bYcPQ=c{E<{P96j9n?mluq8AT>?%%MJ2PO5W(I7v%z!PE8L;&+1GX?`z*fWz*ixbi zc7dp^AsVp7Lj$&IXuy^W4cI!N0b3w6U@LC4Y{lGwEj65A*Wcbv*y6&m#a0y#*mA-FTSqux3kU~n<>0_W z4!gAX4q_#-idapoA?_sB5_dW5s^LY%VqyuglvqaGPAn%@IP4nan~8bEd}0A{3vnxP z8?n$~mp9))%p_(JHxjdnImBGzCdW+WTt!?>Oe3ZfGl*-5Yl-WK>m7E5_9S95aVar{ zxQw`*xPq8UT)$!OY|f969b5|h=If);%tXqXy2XaLG&bg5oZu*61|B&4!ef` z6rwZHh3HD0N}NV?BTjeN9RZFfIuIR+PQ(esiNs07$qu{OKue+((VA#O97nVz+7ay? zb{~U=L?fax(S&G9G$Wc5EgW`>gky->#IZyjqApR7s82L-*xeUu5H*Rzi6e+3iCV-_ z#L!aBeAnc)ZGN8%^q zXW|#4uzx|=_O_+tBjH7VnBgVjW#Sd$RpK?`b>a=j$J+J7#3RI`#AC$c#1q7m#8Zw> zlyf(64{ z+)gZa{Go^4N5m;C+Y+a+3~}Df5a-Pdao)@j=gkap-pml^&HfbDc&On{Vl8nOaW`=f zaW8Q{@c{84@euJa@d)uK@fh(q@dWWC@f7hi@eJ`S@f`6y@dEK8@e=Ve@e1)O@fz_u z@doiG@fPtm@ec7W@gDI$@d5E6@e%Pc@d@!M@fquUD_?h^H_?7sL_?`HJSWo;(6w+H?dbhOK+!jP(VoRb3QIse~Y(;EMY(s2IY)5QQ z6emg$I}ke(I}tk*yAUObQbcKDS7J9}cVZ8s3{jTYlPE{*MU*G@CMpmWiAqFeVjp5( zVn1Sk;sD}6q6$%!s74$_984TS97-HUR3~Z>HHpKCBZwo3TEtPr(Zn%CZQ@v>4pEn= zN7N@85Dke&L}Q`}(UfRLG$&dREs0h{YoZNt9MP6&N3#AM=9VhV8?aXE1X zF_pNIxQe)%m_|$|W)Rm9*Amwe*Aq7oGl^Nmjl^tX4l$RwiMW}VN6aS{5VsJw61Ncx ziABU>VhOR7SVr7VEGJeFcMvOyRm5sy4RI&2mbi)ixK>SGjMEp$rLi|enM*L3v zL98eKBns(h&)>iQ5QT{?i6TT%q8PCiu{E&`u`RJ3u{}|oC_(H%>`3fH>`d%V?BOV+ z-wbzi6c%PEwzQlgS{=@-}q6)1@R3a)9 z)rfPCcSN(ST?}97nVz+7ay?#g)^XXi2mpS`#M_ClV(S-5e#9 zb3D<3=ty)Tx)P@nrxCp!J1FO5;uNAY(SM7k#AxDj z;tEG8<%}W5661(Vi1EZ_#0=sZM``6uBqkA)iA#wo#B}0DVzy&9^Tc3sr5kMM&(%aoCHpI5Xc8&wIw^+Z#5bKv1Vkr?rEG1%yr9=!{ z`h*x_DG@^~C32t;i?bMFX%s^&jbezUQ4Fy(iXoOpF~rg+hFBV=!BuVi@Aa|}-rv51mwd4^kJ5hdI59Jj<$Nr!671HQ%ZAn_3KFcFJF*>hr1 zD8u7?*b|P!v}Fx(C$W~ei@2M(hq#xxkBAkosw>pKS()A(4E9aLz;a>*aR;%ISVgRM z9Ijp4HVHb787Q6ByV3$V(?6QTxY)37P z;Bw*$Vk%)5MWr3sbL`5cz}19ZYZP1Tf}n(>^qfnG@x%mTA~A`WOxU%0vFj<0W0Z3d zF_IWXj3zE7#t>tPagN%`8A6;#3?+oI{*TjBwOZ zP7k6NaRzZF(VOT)^d z4Ty$BBS&N997G&J97)t7jv|gGjv;D0nkwgD;t=9c;xM8*QG=*S9PVhQoPCM?i2aEJ zhy#f#L{*}iqq%bSB=#c86MGXCh>AodqB60MqoqPi6T1?-5xWz65M_w6L^($*<&+?H zAa*2nB6cQrAxaXZ9Ifro<6j*%6yuhyh^>ijh;51Oi0z5uj^mW0E4Kgo*US)$zZ+s* zc|)u#Z-{l}4Y97gVVYlcVJPZ3ZG~9b-ViI>8)9X9L#%9XxXSltxSE(w%y6{R!zL4# z5>trFh|7s9h^fStjt5HhCB_k#5aWr7#3V;YtJkf#ZNOU4jAWkH@I65n|8PS|*L9`@V z5v_?f#BoGhM;C?GBkB_kh=xQXqA}5gXzDmkIkkwRh@**Ph}y)lL>;28qnmOLB@QF1 z6E%pM#Nosd#F38Em2&`bAW?;=N>n2bA`T`Far9751)?HRiKtBML+nfJN9^zDshpBT zDWWv7E3q4~J2A>{T4K8%?dT<(PYfe2ATA_^6C;R=h>?ynl{1Jqn>dF!ml#Y8AtM3O$iHi8z@!h3HIl zA-WQ$I{GW8Ezyo>PaIElAUYDAh!Y$Gl+%=GMl>f{5G{#TL~EiAahzkILi_qXybS$_ z{=@*{EMg$hn7eM`7^Gd7^%tOFPof;L7g3(ro9OMKwzocxvxO4=FvAYSj>JyH&crUn z9z+?(IofqGVk=^6VjE&xVmo4cqPXK+<^1kfvl{*&))Rjcg}8$)h$2K$$6)Pxf$zX@ z3vnxP8?li1p7@pc%`rr~zLA(s%pv9yHxV}z^N9J5^OQ4#xQ4ivxQ@7 z&Sk{q#1+I;;!5Hw;%Z_VG2Jmtp_dTji3!9+ViGZ#xRjXUxIj4<5hICF#AxDTVhk~s z80WZ9IYWr^h@r&!#4zFl;zD9LF~Tuip#zAsh=If);%wp^;#^{|V}x>g5oZu*61|B& zL|>vG(cf{Aa=H?y5~mT}h|`JgL=U2;W2ACA5}k+>h!csEh?9v^h|WY8$0&uiCfX3k z5p9WfM0?_RqJv|!avBkhi6%r-q8ZVgXhF0jS~)IOXl>$Hq7G4)s7KT%8W0T~W0X^a zs7V}796=mO)FO@|jwX(Aj8$k=q8f1!aWHWRaVT*ZQQa|4IhBchh<%Cui2aEJhy#f# zj!TqNme`XhN9;wEC-x>P5EY3^j`0dDNt7Z=6T1?-5xWz65M>+_l(QYNJyDz}LF_>6 zNbE%HOzh&AsL(BmB1BQ57_k+xHL(q`tz(jMe)9vLhTn-li1oyuL?P~N3!<=NvUdHw zKgY0+_<{J5_=)(L_=Wh@ajACw8Sy#s1@R^E74bFk4e>4UonwkZ-y_~9J|I3MJ|aFQ zJ|RAJT&|qgh}VfXh&PG1h_{J%h<6=VDCaridEy1)MdBsmW#Sd$RmW82JU~21JVZQ9 zJVHE5JVrcDJV883JViWBJVQL|xKg9OlUPgKMchr?L)=T;N8InYN;$U^%ZU}l9mGmv z6|tIF!q9}*uC9}}MtpAw%DpA+9Xu2s$g|I0EgC6*Ci@;P4- zUlZRD-#V_>u5aKONiAR z46&MnAy$pJNm%E9IKvObkHk;J&%`f8VLvcnd)v~nKv?7tGb|>S5KD<=#O=gd;x5N+ z+VyPxm%edhm_y7ZY<%&sn~8bE5@M-iv5IBH?Zk3o1#t(ll2}Eoc3Ap+!safG+P2(6 z+)CIVJs!4@SVY(#BR$OiU~!u(gHFc&y+vPB{TsUQ@o(tcxqn07jr|)suJ$+LHdi)h z`n&pTi$Omie?$Hoaoa9?SlqVD5V!3z)Z%mEwq5quahPv0R3~Z>HHkVzU7{XQ-(i2b zaa%P*+*ZvHw^cL5ZPg4-xPzudGom@sj%e?&AEL&@aYS2({dhGX8WN2hBlK6@S%0bN zhr-Z>=t`VQoJRC^T%;WwPjnzU5}k+>h!csEh;ELN%4trtBw7)zi8jP>L|dXA(cUpi zq4kLRL<6EB(THeFG$EQ2EgYj2T8lV}IGQ+ys7)M8)FGNV#wzD9qB>E7s7V}796=mO z)OFZ0A_o#xh^j<2;vnK+;t=9chpkXjk*GveCiWrrCH5osCk}8-P)-@5EU_n1j@XMR zPwY)pa7JyH&W=l!vn5f4C`uF~ zwj#DBwjs84Oi@l;?r(_8{S9%szacL7H^k-shC25ce{$6@KDI4TiW;gCTCzV2B$v7~)0^hPY9KA#T)Qh#NK7 z;z4oa2}9g?!Vou}FvN`~3~}QLL)>`65I3GM#EmCxU81Jtybx?Vfy4?SWT=U?j+U{cM*3J_c(01tR=)!Vi|Eev7A^z+(E2#*h*YC z6Z44$#4W_F#BIbvVv*xI<;)~z5jPUEi8;hvVji*BVe5xYBc>BGh--*ziR*|Ph?^X? zG})!Z6yh@Ca^ebNDsd%oHF3SeR&g6kj3X`~#uF2WiNqx0Du*o)H=GzjTtti{MiHZl zi;2mO*~&SGIF}eq3?a@Vh7#u!7ZPI}w#Hpwq94(p7(kpwoJ|ZPE^yfLdEJQ~L{Fj@ zaR$+c7)T6q*vfpT5S@uGL|5We;&kFnqPN2q{X3rMKy)NJ5hoBQ5hoL;5#1cNxL`}7 z715e#LmWr6Bia)uI_4{9vOf(^y63vL_L<^#=V}U}CA!-xH5_O2WL_MND(ZF$w zatn2bA`T%AB@QF1J8n}>C89F153w(?AF)4i z0CAvWp>lR5$`X4L<%qqA^2FXm1)`#3kwSMNN)n}r(!_4W?!+EM8OLJf6eG4HwkL`c zC5Rn}9f_TYogGUQ`lpW9q>oaDExDx#QIyz<*qYde*w(RByZ+g848IY-6LBMGd)Rtz zDa5^PK@@f@({sM_=NP^x))7AtKN3F?zYxDVZr85kuHA;uxaD)=3*t-SE8=V78{%8X za^<{ByhprGd_a6id_;UqeB!u6Ij<705w8<(5N{H15pNUkI94j>S>ie3dEy1)MdBsm zW#SdbD&^cyJU~21JVZQ9JVHE5JVrcDJV883JViWBJmXlcQLiEHB-Rpl5qA^!5cd-I zIo2r0j&7&70D~RF4#fEd+hT{4V@sT0uq|951H^;GLynh}^DyxU@hI^a@i_4W@g(t-<7MT%NW4V6OuRz8O1wtAPQ2lG zO*!#4Xo$B#L%aolPQ#Hi9vLW7;-xT6?YG~-MMnk+#4e>fP#Ou@$uTw+3 zP7U!oeMgAbsUcpchIpMC;&p0>*Qp_1r-pc)8sc?oYrMtl)DW*zL%dE6@j5lc>(mgh zQ$xH?4e>htNQj>UL;M^V;^)8+KL>{RIWWY}fgyel4DoaDu@FDkhWNQQ#Lu-Mey$Di zb8U#9YeW288{+5s6CqxwhIpMC;&p0>*Qp_1r-pc)8sc?oh}Y?-LcH%7;(f;u?>mNg z-!a7djv?N64Dr5Wi1(e%%f}U3|BWUjUZ;k5of_hGYKYhAw?ceAFvRBrLwr6k#ODJ; zd_FM5=L180J}|`R16vm^KJOUf^Nt}t?-=6qj-igfJsIi}@p;F##OIyw1-+;K_3xaa zFcF{MY)gE8GsNdNLwtTS#OF6de12Oe#OF~%d>%FE|Na_*AwG{9;`68>K93sW^Qa*{ zk8WN*uF(2FG$HYigdzTsFvLF+hWJOq5dTR0Da0>#hWO>q5Wn0R;+H!^{BmcAU+xU? z%bg*9+cm^*yN38}*ATz$8sfKIL;SXDh~IV%@!PH;e%m#~Z@Y&0ZPyUL?Hb~@T|@k~ zYlve3hBy{rh+_eUI2K@tV*!RZ7GQ{D0fsmhV2EQIhB&rih+`XuIJRMkV;hDzwqb~4 z8-{oEdQKl`4RNf-5XWi^@AF|F5FZjB5g!wu5OE;Nb{z+z3~?aJ5C@_RaUjYN2cisd zAj%L2q72_M^gAMsvf0DpD4QXUvKitin<0*}8RFQWAr842;*gu+H-`RB{6VZI{v_fM zqU|jXAsXTkq9Klg8saFZA&!C?;&81Y4v8A#kfz}50{lvj}+Y$%o4RLVZ5N93?apu7gXC4f3=D`qW9t?5j!4PL23~}bc z5NA>haVEtOXHpDtCdCk^d<=0~#So`e3~^e;5T{iPahk{wr-=-4n#d5Ri41X?$PlNA z3~`#s5T}U@aSqH7=fDhc4$M%8e?N7JdPIGq0nw0XL^LLv5KW0@M027A(UNFIv?kgR z#}RFbc0_yPc%lQ*k?2I6K%7XNM4U{VLUbm&5M7B=iPMN~#OXwLq6g8F=tZ1CoJsU1 z`Vf7Ienfv_0C5&EkQhXqO`JoVOAIE45a$s?iSvnJ#0A8K#BgE+aS<_+7)6XGE+)nh zV~KIZCB%4Q0x^-8L`)_wC8iLU5tkEJ5L1aOiK~dKiD|@iVg_*yaV>EjaXoPZF_V}@ z+(^tO<`8phlxjsM~TOX$B8G1CyA$sr-^5XXNl*C=ZP1H7m1gM zmx))1SBck%*NHcXH;K21w~2R%cZv6i_lXaP4~dV6kBLu+Pl?Zn&xtRHFNv>+uZeGn zZ;9`S?}>H955$kePsGo}FT}6JZ^ZA!AH;g%Pa?igZXf32`{aiBKDi;jA8&~7#~b4N z@rL+*ydl0HZ;0>58{+%%hWLKGA-?Z#i0}Iw;`{!F_`bg(zVB~{@B16#`~HUbzP}-^ zI55N&2Zi*TVO*F{ScuCU3~`x*Aue+;#AObKxXi&2*H#$f+6qHlTVbf6V{YlUoFYP8 z!(oVPI1F(Ohas-vFvNu;hPZIV5EqUZ;=&O_TsTrxhznEJPVg)oM=5XKM} z!WiO07(-kLQ%r~pZVYk3jUg_$F~o&EhPbfD5Eu3s;=&$7U7y6Qgt&mn5El>`;sPQ= zT(x9~tCkFL)si8uS~ApOPBX`L+7ees8RF_FLqk5S5z&}vLNp~>IJVc`>Jjyc21Fa; zIHE1lj%e>FuAJsXOQIFgnmB<^iR*~#i5rNS#2jKivCOfD za^?~@5jPX_h+Byz#8P67ql|KHBNh^ih{eS1#42JnalfOia+VV-h&zat#GS-i;$GrD zM>*x(Mchr?Lp(q{NIXhBMm+A=OF0h_4-=0NPY_QM&l1lO&pXO1=PBZ8;u+!v;uYdm z;x*!R;(f>73Vo4yiFlcKgLsE{mw1o(ocO{~L7{IFZxL@39}u4spAp{^>l~Go^C9sO z@iFlU@h$Nk@f-2Gqq1_oB)%fPCcYtlA$}$PKbMcw`D_25of&V{scDn4`u__K_^Vs7 zr#^-jDtYyv+5h^MXj7=Lop#^+zs)nSc?LGmz~&j)JOi6&VDk)Yo`KCXuz3bH&%ovx z*gON9XJGRT{Nou|Zx;{5x8e&5c4b6dK(GPq%80n0!LE#m>lx|@aXo`wu@KiY*cA(L z(ScpD5EmWT6)fI%p)sMF)+AxLBi!5EpCM6&P``hFyUX7i-uR7n3bC3IJDqN9fj8&cY$qhf_@NC~}E*pL#=P+>z# zI8%iUDWSKDu8uw`Y)ENKUllf_gnlY)ND2K_*pLzisIVa=oTb8slrT_*4Jl!e3L8?w z*(z*E3FoM=Atjuv!iJPEScMHKVTcMFQo?yEY)A=1RoIXc&R1bWN*JcXhLmuD3L8?w zg(_@F3By&`kP=3yupuQ}q{4=jFj9pLDPfcf8&bk(6*i=Vi&YGDj8S1jN?XRNupuRk zQ(;3&xI~2wDPg<{8&bjq6(bxIRoIZymPsmXNC}fw*pLz~RbfL)n4-dllyI2}8&bmM zDr`szSE#TdB}`ReLrS<(g$*g;Dit=QgsWB9kP@b;upuQ(S7Ad+n4!XklyHp-8&blx zDr`sz*Qu}}C0wt zY)EO#%_?k23G-CgkP_yrupuQZP+>z#xJAWG$E_-CNNLM$Dr`sz3su;V5*DejAtfwU zVM9t-qQZuhuvCQ&DPfrk8&bmUDr`sz%T?Hr5>}|NAtl_Q!iJQvQiTmEVU-FSQo?E# zHl&0#Dr`szcdD=hLrHS3L8?w8!Bu_32&;fAtk(}!iJRawh9|k!aFK#ND1$%upuS9 zr^1Gm@V*KgQo;u+Y)AV?7aLN7o#C<}C2T3!kP?arHl&22!mo~Ef(CD{5jHlzewpT>ri zVC&P^kP>Y19UD@DExuzzO0dOuY)A>V_>K)JVFwj9q=X$+*pL!-Qei_%*ja@QDZv)s zu^}atRAEC(D5b)Nlu%lQ4Jlz)6*i=V-Bj3+5_VT%LrT~~g$*g8j0zi4LRl3yqy$?w z$%d3*%O=^75^UKd8&X1f6*i=Vy;azd5-O;$Ath8)VM9u&q{4=jP}vH{J}PWTY0JJU zY)A?Fsjwj>?61OxlyHCw8&bl7Dr`szRaDrJ5~`}OAth8(VM9tdNQDh4;b0YMNcwwT ze~4g1N?Q(9VM9tdOoa_8p}GniQbG+CHl&1_Dr`szhpVt5B^;r`hLmum3L8>FEfqGT zgrij0kP?noVM9tdMuiP2p|%PeQo^w+Y)A=pRM?Ob>Z-6ICDc=4LrSQx!iJR4K!pt{ zp`i*JQbHpYHl&2cDr`szO;p&B5}K;8Atf|ZVM9u2uEK_t&_aa`DWRnb8&X0m6*i=V z)+%gB32ju^kP?nlVM9u2tHOqq&`yO7DWSaz8&bmYDr`sz9aPwm5<04|AtiKDVM9td zL4^$|;Y1ZSq=b`H*pL!VR$)U*I7NjGDWS6p8&X0S6*i=Vt}1Lu38$*CAtjuq!iJR4 zO@$39;dB)?q=fD&Y)A<`RM?ObdaAG?CG=8ZLrOS9g$*g;Ocgeygx)G_NC|yZ*pL$X zs<0s?^iyF&O6ae`hLkWsg$*g;EEP7Sgn=q-NC|^f*pL#=R$)U*I7fvIDdAidHl&2X zDr`szLsZz163$a$LrNH`!iJP^z6u*s!Y~y!q=XAp*pLz~RAEC(7_P#Gl(1tFy`}lP ze?eh)g%bZDQP(Ss@Tb~pNgFw`>WW+ae#`FjssPca#T@K+EG=-u8wLdc5@u0 z!X_n!9&Cl<5EV8Z`CBN@$?MW++_*}rCu1)HI?rHKlgp@gO?Y=#n=sjwMJXs*I$D4~T4 zo1ui3Dr|-lTB)!ZN@%UZW+Ea zaHa~Ip@iNlY=#p0sIVDI=&QnJD50MUo1ujMDr|-l2B@$ZN;pe}%}~NX6*fZ&gH+fI zC7i9oW+>qt6*fZ&=c=$7N*JudW+-8Z3Y(#X^HkUjB@9(zGn8EaFj0lgP{Je?HbV)MRoDzAT&lumC}D~Uo1uiu zRM-q9T&}`qDB%hfHbV(hRoDzAT&colDB&sv{W+>q%6*fZ&H>j@W+-943Y(#X1uATY5^hmpGn8*LB`j27 zGnBAMh0RdHVih(+2}@Mi3?(d8VKbDlOoh!*!tE+-h7y*muo+5Np~7Y;;SLoxLkTNY z*bF7CQeiWcuv&%9P{JA&HbV(_s<0VKSgXQjDB&&@HbV(_tFReLxJQM}P{O?`Y=#o< zQ(-fdaK8$hp@aui*bF5+sKRC_;UN_^LkSP7uo+5tM1{>z!lNo|h7ulAVKbEQxC)!0 zgeO$k3?)3N!e%JpDHS$D2~VrA8A^CYh0RdHvnp(c5}s3GGnDYW3Y(#X7gX2`CA_G@ zW+>q$6*fZ&FRQQ_N_a(u%}~OtDr|-lUQ=N+l<>L=o1ug^RM-q9ys5%wDB&#?HbV(- ztFReLct?fJP{O+^Y=#ovQ(-fd@V*M0p@a`q*bF6nsKRC_;Ug6`LkSz z!lx>1h7vwgVKbEQxeA-1gfCRs3?+Q2!e%JpD-||F316$Q8A|v@h0RdHw<>Ig624Pm zGnDYX3Y(#Xbt-Iz5`Iu&GnDY73Y(#XpH$ckCH$qo6*fZ&zpAhqO88BM%}~Pc zDr|-l{!n2vl(1ff%}~OhDr|-l>}F#&LkU|5HbV)81)HISEd`sQgd&2?P(o3`W+Q2*bF7?AlM8g>?qg_ zCF~^F3?=L=*bF7?BG?QiloV`+5=sd+LkXn?o1uhVRoDzA?54tIC}DRMHbV(}sIVDI zD5Jt=D50zho1ug~RoDzAlv80dl(3fyo1ujADr|-l_Euptlu$v1%}_!`6*fZ&l~mXa zB~(^nGnBB83Y(#XeO1^DCG4ldW+-8Q6*fZ&2dJrE6*fZ&wN%&)B^;%~W+#ZLg#pB3E{Ubvk`1Yq4k^R;Qwz9j?|CK zGydaJOL)4VQD31Cd1yhQg+kYQXpU&FoaLUABTiP%ZJtw5=&sN?9-1TiD(70y$r0x$ zXR7Dqhzpc6(Q|Ud#mX7&IXPmIa)xm9x@wa>Q!oEcTonai4PLc}|XaOgS?> z=YN71G=i&q1Ucdj7hB|dF4#=oE-7Ga;A7rLE!_1j`h$S@r81Rdrpp6 zr<}o_lOujtPJhqI5k<=C_aD#65!)-Li|6EslFI4mIXR-Na$>dE98pO*js4G4P^hZV z+8&xCYAC0s=j4cElvB-f3JQ%BTG>N$L@VX&={Y%~gK|oFPLAlTobrC;r=ZYNq4WGZ z!8xM8a%Or?ju@<*X`YiKhAU@^=WHBzR@7JGx66LhD=0ju&|)6?kkDxRYy|%;p46_7 z^;5+^i$6Do>Nd5tk5exw4g9Tp%Xnc zM~qX>XwS(JQDJEk}$~&QqR~Bc>?lAP94EG?ED zI?54?mDAo2eCCLi%4zO7IpQAW)c2em@rZJc@|+y;jB@l=_1AqPa>OgjS?oV=IpQ7V ztoED@@Se7;^er35hkDp@f7r(Hi5?cG$_fhKD)e3-+kcCnwd-em*Z*fwteS3bNdbL!n1|XpR`DoCcngBZexct>^ro!6=RT zL?3mIn4p|)o>Nems?gpZnj@}N&LGdp5p$Gtf#>{BaH~cz#z#<4Sgz2?9-1T8D(5QC z$q^4K=X%e{5l<=SCeO(cFDYlS=loCbkw&o6N01}FQqDb|lOujq&Lf_aBi1YDS{->2<2?+ zIXR+^a(4Ed9MMEMdw9+UXr?W@`IhFwuKxyYw1W!1gH1$xJ*S*MXA{v$&pE)K^G|S! zc2L=OuyJ(N!w&U_{S$Q84yyVNHjZ9;SY3bEKS5vZpoZ^Y;~1caHS>r4Yn-dS9p!u5 z07JB;g>U)SxKMj*;CtIRF4Du=`@{YT#%KqveFvL}@p?`-f6gXivYyk)pR|f(n?QN9rZ38US zmSMi-U*mS|ZG!J@1FX=N(Z1zh<4*1E3g6oXxJz3u^DX}x4`^@K_}(_aL)tRkxBP27 zp}o!ay={P}v}KlW`PXRMXyy`ej@j;9zap(zpC; z)YRTe_}(_a5!$l7Z^;pLl(U`ZuMA`XxD{lX7BlmK@PlIkECgj_9SF zSV<>G3{XxiIYD=sc^sg~QdyDmqa>NMb#9~c3Vw`efC8~nLWeQzgBs~7 zndjt)S<1P^b8^Id<;?b+{|T091k-&4Ibw}+rg%<{xL-NrJSRsyuAJeXlOvv2&Ir%R z5w9y}u;=_w@S#S~-AC}>;&bh~r|{Kjcm0EKd_MS1yYA?_{zGV)54Jo6 zE7ukk8hK8RD6X8^o|7X=Dd%v{$q{=hr<&*Fh|0>@$8!n_)f8IRL;qXU(5}n*u4@V< z^T9FNbt&I#t*GyM1GLtbtNl`se~sg{w;8^-4bV|r zuJA4Y8mDM)SNh&IKo@Np?_2&gx@&Kfd~X||r?yP+EjgmUaz=ViL1BnO&-2iN!bJ-0 z>7kp5i}jq|{+vz3C3;S0f6gXilAhDepRMm`*SuCkLx+R`E&jWp3x3=_Z>VdjQ0DXY=GyrWu$M( z5w9y}sORK}_mwlyb8^Jz$~n_>3JU8Kda8%!h~JfSg6HIjB8L_#be!iD6pAafiHGKh zQp)M$H>u7Mdn%`lztD3;W#tt2oE%YAIYm7uN7PWxZ+<~;jyOg+^F1d=G*r$k&&d%j zl{4LQ3JM(*I>keCL}%rU^PC*fLpdWnr=ZYZp@Tg%M+{a@f6vJg!K>XSRx789=j4d{lvBxb3JQ-a zw2X)5i075Fi{}&+-caba9-1RQP)=db$q`>D=T|?#nj_XJ=R40SDEy(&Pdzk86g^Cr z;&@JuD6X7WJts$$QqHrU^M3{vHR}6))H&in<*f0X9C4U(ruuKYIpQegT=-I6a-46^@q4HYv*$Q25au~96mE757jANl z5av2A66QEY3bP%fgt!aRXyJC>a?(-j&R%{9PXGYXwZM{ zdX}J{*S~P1pdW+3Fk6V*kj)Y5`IfmtUB^vA9mmZ=O~*W;hGV`^-LXK>|NWJ7i>kP- z+O0w}-*TJK)Ui-#;#edc>sTz*b}SK&aV!;%b}SR(HgUHL?R?8}p{-+uaGc`~p|NA7 z(8#e$Xy{liG;q{D5Eq60Yc$f{y7`ybb3`lU#C3WFg^mi1D-sI|T@@OaTjq#f%K7{9 z(flw#yN=6YbHotk#O1v?VuW(ya^)N`PC0S;b&i;#oSpp@oFk?wXIsz75i^xj*mH8k zJmti_3>9PycQ;+8u(;ydNs?DO`$uqYq=s$I|XUH`ZEO}mc!BNeVv zsL&0b^WS1i?Ke(}9665^iOON6*#<8Uyww)jI{wLU4JJ658Unc=Jj_vfYINkA2u%mVm=Oi`}CH0&* z_pyoCP0xvQ5}Sy!dQNkngH1$vJ*TlhXA@CL&xvy%n~44NoLGJ&M;xr2IDeWWj!;gV z{@gf@(!=6p>c&x94~w(08=#K1#4=7fqKR^1S*je-Mme#}R*vYToLDw2M|4$AybW#~ z-Sn_{Q{6av=wb2hzX5t_OT6ZC!~o^Q>oi9UQBJ&0&lBQ%4nu|bp2PVMU9HWwTZ?g3d_#EH;UIyb^|MfglrN-H|F-vbT$LCGs`?S z1Vu$fiHZUW8X#!U@H9Yxh!Mk6!0=E4gqJ*w7!(x|6$KIfPIdLEuI{ORRCSNuUueJY z8voN<|MRa?Ri~a^4S=0<_#^;!&f!x4*g1z!17P*wWB@0(cm~=Kwr} z;1mE4BKSOj2M~M#z)l3G0$}xeEr7f6$rl0Kh2Tp7?nLlq0Cylb4ZwB;UjgtF1YZSk zJA%^zuy%R|fLrm&nE-x_;A;SGLGX0|HzPO;z)c9w25=*SZveOf!8ZZ0xU&wxb@=2Q z06#=H==q4PTc*g2H%0$}G* zHUeOQ_(A~e9Lhxi*g2GoNg5m{UP96!xD)_unwJ4!=TN=}fSp6x1b{X4%K@-+C|3Yr z=TNQ$z}o3%07KZhUIl=i3%D8pI~Q;b0M-X@0Wcrad>;Ti7jP{Ab}rxt09aqY6#zTu z@IwIXoWpeh4nwvd0bpZ_Z2;IghwA~ba}GBEVCNie1i;2FHvwShHf{#cht#(K_#lEG z17KsMTLG|h8@B=Iz(2bk033CoL$;p)U<0%50N6Q{I{>hAD0c#2=TPnfz|NuE4S)>* ze+pnPr2ZKIsBYBGJpkB1a|Zx+uI63<>|D)#0AN>=rnw&g%>F6Z34je~9{|A4)jSA* zovV2W06Qo2FaUN==n(+yoY2n!uyaC>0$}Ha9s|J62|W&gofCQj06Qo23jl0hvI_t^ zspR@%+>`Kx9d-H@0Cv>L^~JcS;0Zf8^=km^;M8vbuzulb07rta-Ud$j=WhWlK=3;N zMjl{s5p4!LtB9h~SR^*nH0Q#kfDglN+(o{u#gx2>t@#dIZk{*oNS* z0DgqvZvd`C@B#of+kFwh&+y6L0sIufO91Xh@DBiYA$S?Uoe2I3;0^@;0x*%(f+r8+lUDb|RPp;C=+J0dOCJ z*8;c~!BhY{5d0T_Um$oLfF}^V9>C)W_5tu1f;Rwo6u}z-{2alX06ckoGW&rptf_DRW8iDJJakJnFTO^wefUUp12f$x3&3genkKjN6 ze?f2%fIlN>0q`dTu8+jE!jnn3RG9%lBA3-p+W@e|#dZKMBS8m%e<0`t@DhS9052eL zeI%|2p6rd(y#QW~U=Dy+A$T7EwsQJ@0L}R15CBaGJ^5)AOx!b9Eia6k+@^w$@}ohaRBBZC;(u)Nn-$d@JSIs zH-Zv?E(GHMIuRTXpcR4Zi*XfrG7q0r0n9~E1HiV*CIEa8pR5M(KL}0$@BsvC033qA z^~Jc4!;>TM$tM6Dj^HE!A42d+0D}lV1>i6Qp9XL!f|CKvNAMW{0|-6~fbCv>4!{z8 zateSU1fK_R6oM}RScKqI01FYU1#l#SF9KMA;7b75*6f!7jNp^g01PAe3V@Fy_$q*7 z5S$L+!wAj*a5RE50W3rCH2_Nyd>sJWcRmZivH0X{067HT0AL{aCV>A%unxcq1m^(w z7=m*FEJtu20Je|59zYqNoDZOY;9CIl2)+$q6@m=_MiE>9U?qa@05B1J7XUjKuo1u~ z@X3V$st7Iua6E#G0gNNK1V9PFr2vWuE(0)z;Clc*k6;skPa?P+z{e3>0pLUgR{~gr zU^9Rd5L^XdHG-=FOdz-hKn=kb0AE4yeE_E*xE8?Y5c~kZXAx`#@EHU@1aLBf>i~Qj z!H)oZ3c)r2XCt^Cz-b6>0Ptl5Hv;$)f|~$*5y8y>)*`qCz^Mp+4B!h0ZUt~Yg4+Om z1HtV8&O-1L0AEM29l+NR+yUTB1a|^B1HoMYPDgMzfUhF>DS!(R{0zXi5ZnV`J%Swo z&O>l7fO8St2jCn8_XAjmU?+fYB6tA6l?WaLa4~|10Bl6?Fo5qOcm%+A5d0j#1qdDm zumQni0KSdjaR65!cmlxX2z~)z6M|g;zK7tK04_uDB!Ej1{0hJ&2zCRw2*FbTet_WD z0Io&w8vx%&@HBue2!0FT8U()sa5aM81GoyoGXORt_yd3&5j+dv1_XZua6N+O0Bl3> zCjdV}@Mi$mA@~b`A0l`jz*Yo*1@IFDe*_G4@06#;Z!G{%oieM6eyAkXK;4TDB0PaN44B!p~lL2f;@c#fjgy2;G z9z^hJ01qJ88^BHkQvlqL;57j5L-1Mv_ac}I;2s431z;C~*8%tig4Y9h0>M529!Ky7 z0FNPfBY;N{ya~Y15ljQ{2!b~Qco>1}i*av-C%?fb`vUkig0}&93c=d}>_)I3fL|fl zAHb6c{u{tA5xBk>r^Ay!;*$daJd0pDfIlF3CxB-VybHkZ5zGMaI|T0r@LL3~FUHM+ zCokfY*#KTZ@E!nvL-1Yze?@R0faeh$1mG_SS^)eR!NCCjgrF4wJ5QbgFbNNrw*eq) zI@V;U9l*aZO$UH~BIpG0GJ-Au|3J_U;3Wh-0NDBXUI2R|^&9}NM({oWuR`#C0RIoc zApj;L_yB-r1pfn|3Bd;eu=D1Up0+@+l7{I#`xV{+o zF?jMWe6j+-I}y0P7-ztf3_ckF(25`n;9vwf04)ei0POQ|D*+scPeuW}7lG@Gad~*s zi%*UP(1YMO0Nn@*0J;#20brkxD+1`iCnW&w2wY!`J06~V5TBF*{11W(fDa(30yqRg z4Z!;mOaOQvg4F=#AaH##ZVfyc#3v^LI1ItZ0UV0p69DETI0?W2f=>cqpO5<#fO+`j z(*WioI2izYE$uS^hVaQ}0W3!FIRHl?I0e8W1fK`MJ|Fi507v4JQvobMuol4K2)+n_ zy>s^^03XFCUk30I1g8Nw2EkVVu+PVR6~NK>2*B46Yy)s6g6jdCf#3!JUqo;tfVBv2 z0&psVn*n?Q!7TtjkKo4u&P8x5fO8Ps24Ee6+X0-8;3ojSieNi{uOPSsz-b8X1n^}9 zcLDegg1Z4+fZ(S9HX!&JfNvtW2f#NF>;P~!f_nj+h2TB_Uq^61fXfi<1aK*W2LN1x z;6VW2Meq=SZzFgZz_$=Q0^ocEKL@ZL!J`1qL+}`Ys}Vd7;3@=90N9M+7XZG8U>AUk z5&ROsMF^e*a3O+U0oaIOH-PI9JO$u~2!0JEczX13?g69EjLGV`qcOv*3 zfIASp0AM?U7XjRg;O_u_jNl~zHzN24fEy6J4B&bM{{(O!f`0+H7l8&}S=fPK5`eoA z>;>R11Wf>bf}k0|?Fc3VxDA2pi*c`lCy(HhR|9w$!QKEKLNEou{RmzI;2s381@JQj zQvv)Gf&b^@UJrk^3;%2%0KY)+1^|yDcq4!Z5xfb&0|=%8*onaP#kjY?li%T!w*vSr zf_(uzjo@tneud!e0G>dwAArXZ><{2E1g78K39?{)FHF0M8+q4&XNk-U;B> z2;K$YDFibB>_*`FV%$u4@)ACo1>o-pW&?N;!FvGw5y5)_Jd5B!0DnMm5P)Y8xV{*7 zFg$6t_fKJpga0AB>HPzJ{rkheSG*m6h4H`ETq+dIa!W2-n+{X;85;Qzo%UAvzn9?u zJ_=jq`@+8$z`tbIoFv~w{>Q14nsxZkywaFa%$4R$okCE~Ea=l0lybE~sWLpTRID1= zs{OypmKEp663%q%1@L+_-cKlX0d8kh%t_>h0@8Y^I=of zHm{IRQk)MRIZI=eg}n1v5hdh4KR#6l_UFrHHk&UMX#tbkl#tSJW>w9HmTTjsid|O0 zY9FNK7T#)VL8Pie7nMsBrkN|16Kg&GjEWkU<;~T@wZVa0zFI2NmQLdo<&$mRessyH zt6&&~YkZaBqd+3%OhThwDHC%c&zGP++ldL3F-A-)$1oICjFYZH!5EjE7wvx1B22`M z*zqPVF}bS9;%|^UU%i*rhQi~ctANDRNjP?(V2x7C zOv0m#(M+x%^K#1Q>^G_gH|@#+6nSq0Egzp)>qjCjq(+#m8KP;=+(cq1ZIBipo;Z4x zPLPWzmLgY-ZP5x6F|baQiz|*QZ)KF}0==rdTr#?#7MTUEW{(jpU7P$_U@2B6 zW>F%V!9ns5{7@?>*YXH-^3JML=c=kQ1?eNt#g~LWSFQC3)b0(8S$+~-lnH3`)?trI zYQZO#`DpY~%B!qoSK-LoUW-^USgfv8Y#u>u@w5$@~sTy1Xt zM7E|lmakZgPl|5y=Zd9^W-`7ejt6!emiG$jPt)IX2AOTl@VeauZ$y8ROO0`9zm2cFo;=VTpTfV zKxb8|%r%NxqnwXdc&JLi7*iwXb=W(Rk6kXOab#+;*v!^hE|1X~{n*sB)lUi4s#rY_ z9BELCU0g5Axn50{m`lc0iwd>Te32W^j$1!S7hn*Nf}R@XV}l8ip6>?6DqE0{NJbDT zqdaU^3|Gn%OwNkIv2po9e+ZR~s-@L@!K@6|7Q@oum{}ZL)<=Gk?`wj1Wb}}gMQ-nP z#ROnlW^kB_mQ$o{6JH*AF*R0Ngp@d{QpF8t$|j*GfJ{MIteqw5qFNn?wn`=*30UN7 zk1vU`Pwe57sJT;4pTU4j2~QGNiO?xa@tk&ZWZV{$Vo3leOs$n@^6$|K;4sf%UOwbMaKWdb6NKLL9i+FIp!B;I(4 z=|pa<6tBY7j|G*L)l(^#F3X-MLTKkik5_J@_<9sJBwS5^>9L6v6cIkfa~!r54?`>s z(8^p3Jj>+cl_SSP7E73NJa^2o4@-*P%G5DKW`Q2UOdu)*FeaYN;8yePKOs?yKecbYTo887OPO9#Iok7zrF2j~{a%2; zguGX4_@jqSO&h7#?0mG#!?u}-Q4mG(N~3XWUkM-Eg|a6smZwX=uP8q$U%L1t^g;O= z!gJLoqAHoD)h~Idoiy z$%d&YgdB^s5;!V>G;}b>9lW4qQNkJ36TlTm7u|_VMwgfC1c_KhGfDPm(POez+=oHh zIlKmFHe4?nUy*=MLZ7{}hYngX?z>|tUZ=-|!vRF{a_o&pB$suPd%M!bBB6!fVMGp@ zy-G|o984skhz^C3*R?M=7CjdEu}BNSm3~)+w$;fN85I@EsH!muRXm3#6NfNw_IRH_ z$sJTI^5HNldH)bbK?sqUaM+rBh}0DEzV=9gTYv=b6nQ;F)bJ$XGUmg{w_4e#z#Gtd zmYx;k$I|%NUO|zcpdo=8e{B7=zH&96C2w`xLhOuqCNUmoQ?sr$*^qohv=cu+{btpG zx86gt^IT|L49ia>JMpuFG8$DZ!TgEqUu=$-%GJaxmnRoOE7}1xJ_Nl>k32q&kwgzR zDW@B#-sXd^hezz_5;hpSyaYK!iFOTaSjI$llFg58As{2#VnH8*!lG0Pfr*CXp@G#5 zv&*}wp?O$THYcEAHK1a7vcelmHb+DGYRw?GSqRF%<;QXR8dswXGNqO&Yr)3jD&IvY zY9h4f59W-alUrEwNRCl|EVUubWRKGuQ9J#P0=OL!yS!Oj23HW}DY7S>lR=aog&f{`wEHuXW zY4@_n(N0$A#3OxL(YGkYcB(vtJFaXjZoVIn<7gsR#F?;8T6(d=h(ImJjC;$nvD{uk z^td5lbu?mC4(C<#vU|nTBRhtV!+F*8(msT|b1`1^s9nJopQjqb-trqG#^{I!)YKD& z_!^5>y~N8bn3Rvxk*L*FlhI{m7>(M|f?GtUtO2`6n3UHWLK;V@y%;Q>e!GGl)Qjy( z@tLZRY$&nZpeJ3qh~a-%4n*V$D7R@7mMmb^?o%6oy9!g}1Wz=fJ_#LtgwiJGTb%62 z9$^P*=E!3y_js6?4BFLzHab0G?6%d18HlBx*a#Z$QF5hVXdP7x;Et_Z91*ed#OUp9 z$CG~|*od7ELEBecL*axANRtwptcN|-+bT9WrQ>+}r)ZywokxtfQ>A7DzWYJjdem{Z z&`jM{63bJpeT8_o5-6gYCpa`RTM*rXg9Oon`~7U0rU3 zmJ-Ml36Wu2TCC(0`Ve7Z$s0{Nr?!7RIfIWo(YhD0gAdP~&`yIgQ}N`6nn^k<9xDyc z3%_Y2H&TyWI!=~&W7-pP^9{$GYx9E@it3h1bY9i6@Z0`i(qpyzXzZ%m=~Ali?n+=5 zVD2$Da$h55sL{FMCTpr~B5Hm(Q}J?D*QNRIxllvCQ*ft6&`bm|$J5MhjIf$SS30n``y)uH4(FQ!h?*Us#R8|tZ!Dudm^8HkyKI=2wRA^Qw- zBFB0=7vV-?=7QMqTZv1e3Wf3~pxW2UB`{Y}X|6kB~Sy z!A>(ys^-*He~UPZ;<0=Iu8nqYKhWP)b{(R#!6##*#PfQ>+I)llsIZh9olVVkr0%d4 zTGSc2jO*3;^GWElm$)dq@5&Z@eU_GoXDV-t@*$Cx;X1fWsb$?$zedIJNa&%nJ;7=e zM;E1QwH*|NPFfvSA%6KK!aM7j%zkGbA;%)E#9B6>S*=@Cp=5#a*5#xCt~k2rtW<8D z#7~!(D<=`F_+b$(0{FDX_-zET?r*!8j2<*SdmtwtDzi*hdH(zJ^sjO9dhWZ24F zr!WYX=2Uc{OQ&}rtLVx=PDP#8Yd_4P!Vsz58XhBQy%CTlB8zqqB5{;HC>)BEaeUJH za5&CQ|Bvp$|T0EOKeT6Y2YZfE+fQ~d?aa8_B=!dUa8ikU03P$a@x^Vdn zxD5O#JibP;0QWH)Ib+Buq`12=H1Wp!{)9m4t(rHbs9D;y7kZpoE>?EW& z_d3`il9$6x9UVe>cX{WG9xf?eJ`+0+Wq9Z6B(OIis7UTY73VLk94n}F82EXj_IX-< z(PApiuaHSW5loRBD*5T5lh$@xAYWX4^3%d#eO|r@cWc%Wk|~_?qkL0vrdu8sDQDRe z4~If-lI5hs>vWx8cqSE1_Troq*KUgQvqL7O z3_s)P5XpQF)JZiQL?oq%j@}(+Zhm*JOw97o-t#sq+x2C~_zWbKuN*XK<{u zl?4#0=p(G2S(2;HsMN$TPGz0`l|@;mKc%Wlr+{ef(;k+OiPoJB9-?qPi_9FHim&Jf zcb46mRS(;b*$G4W1(KKsV&}kF-JnWXR-9Z$Z1EvEiE2oD6+PP<6i>rU;X&L+XDOPU z_+@10w{c|?Vj%e((BtF5bqxB}wSsfrVTJF_i_lc;9Fc&`*2KIY38oTQaV67$q%9_! zM^BID^>PF97{y{E@+i)l7JkpXozSnda1|iUoX}LVd7>s7Sru^k;VmUwHtZ5>DzA|hEzp!&uB@d;Z?QP*ww^-KW<~6eLTF=X z<<^D0vSWl`?=rEFT1~ajsNIHnc+;u$&$Ae z_{DO{8?aRFFF$}bj#^mq_A<*ar2DImKyS}GW#=Zeh6?z->*8@5Km__Y&gbt{pgv3@ z)H{pvK65E6sKwRotu>-ZiSy2g;fAI3SI0xyV>zE_4H`Pf@_ZP1eC7GF znI#`vBRk>ds6l;20*ojiYTDc7;<}|j*hK6s2zw2uk%{slSAR$*q8N#t6UX_cnJbl( zQ7$4)NU7J!FwV2znUoy26A#1Sn*8H!tdlJ@k*e0cG6{h+gu?l-!?cQx$I}^b> zchsnG5FpM&G%K3+Li9NAW5^vV8VVkqQ`qiI z2+hRJ3JDq^`@nW3lZ>b0EJ>P6GIF@dE-^F#R?Ryy_c4Nx!nITndB5P1KgxP6POZMqHc+pp0_?j&{7ouRqC+hHKe0RHW-ab?6 zwxbX$DJBC^wrz<{o`4@k4USp}Yi+@l+T%)NXG-eYxngg#Q&01?PRYk|CSrKol?!(@ ziR<++>iDWdovlS1KfAnLPnwj__|rmxP#0;^O1Xh+{A%p3T^w~B)oxPaANLNJrtMIP z%eJFK*y9K%7KH1qv722mb8OAReW|1Zo~1q1LX`VL?V{r+5O$%Gf5I2(;?(zO7UGr! z&0&(BuV+j~qbo*v9IL%qDn=96x?82yUcz-QHnaH=cq5V<+;R(@_EQ{mWMyw-DPOLnO!Awt)DV=qJ=<0_RCz>aVWjoD z3^XtUavLDZ+2GA6<;L0pu+3v9mWzI!v_N(tRu$N@wCChn}{_o51f%Z!q;4UJ>~X0zXd}5BUfpt_kB5IxEwYq z+_bb!%4{U~`XH1$N!@gb(^t3s?ZRl)yiT~6Jce*jlRbL|~KT>gIOI*OpmhBC*|YwsVpWvlzuy?-EJRnkf$AKgE2bIQE|C2(#u z>YJ3}Ex*X`kuCA^lR$J7VkJkDp?_uAqjds)RId@ilrdDgmd4$ZMQZUqu&~%g^@fqh z*PXz`$|cp!7hfOsXzVGJOJhA}!aBJjQp*oiVy(YijyfsPt_hgZxKSY2MH)w`yGapC z?p*=OEjL=U^@dPu+C@t7)@CRF@XL9kXh6kBj0Hl%IIbmx^=%JDBDB%qeDEu>_5H>>gZquBh3~ux$eUBl8NXo5 zYL(0>c-zgS<8v|)!Wu_w{ZcTK9j6xgECsu{6?F%%*Sbx>Ra)AUGUIs1=`v;-n-gy4 z;AsWauHPtBIxn1|SUK{>3e`1YZw3N*p`7jatfcz}TF}nID62uS){DK`Bk;%axq#oh zv>U7PMBtC5pDp$>_lx4szi3;ITH}34V+-|GM3Gc#L`JEQRZ**Z&6oMqwVq6=WyjJH znB!@7uP8I=)W^`yZ&Zut!j)w=yP|HvYAWNEIp%Gbzq{{`My{xw&Z)iij{AOyS``VS zW%pZ3$7;%KFRms#7l}e0%gwfG>TOm*;)D*DWD#!z^m1baPk-{JsN?Y<*&Kax;+-LW z!rt}}$5ZTWhQv+kE2iUYjmvg-D1AKj#EP|O>Z#e9wn;5s+p>LlzbOB?@}C3$IP32xy>Q82cmHMApI-jsv}d3B{jT5c`puT7_TIhV$>qD& zJ+bSt=YKx?k->*%KQM6rQTO)VGxpPUcb#>|mY+Q8&3Pyy7g1fowRPoHx`_=`D^=}X`H_ME6Yz? z|E0&)?tSXC&!667;U#33hcIbr|RTWWpPb>+Q}H%c?cdXGCM-#coU zCuMt$r7H%P-~EwGKD=w$wk5k4?|amwg_#9w4qrZK9=d*DaNdl*%>PV2WbOO*opVyp zr0&x?cegKX+t|9ZW$>Ua@16RdHM0(wdCH6z-+BD>oqGNqlm7dd{T_asvG1n0?EmJC zZ`$#O%sw~0ZvX!}>9yOYY<~5mSB*_Rqv_#E3$z*9H0`{9YT8#UH}((o_5U~guPff} zc=btPzZ|D}1r)J*?P494Cwj2oN&Fz43ke|BzX?SUW(LbaJA8nZj<~?C37iX{x-X#hJa9f6*A0Opq`Xl7Y7|sI)@N{?DY-(J^p`Z4 z#^^Q^vDlzI)>SjeF;}|OYP6D#p3PvR+9IiOkkBmt$bSJ2ej~*R|B#xTba~2Jj9;E2 zi|ASV8Odmpr73MvHJ5yRbhS}#QOP6_s zI3RxcvW)rXIK*-idBzCuUWLO_w)@_|Ql={W`d^nX%yvshKQSk+F?_tcTu<7%(D#XEK*Po{%B6U?st zg_e8p`hWyKUGi&e9)vdHmI7J!VFzPqiP*I%kzxp;Z-DyXgL>k327?M(kOP;A24;aj z%MoRvOfeh08KvCVM>{O@7>aT-?+n%n4`fu==sGCE%cXT4=3i0X85FAx=2p_|dwQc@ zI^_?XT-3>qPTx57+*XNF4Ud!u&Pb$p27Nr`?yn@zgUE8maJhBLfv+O8P5QojM@@Og zdOmtXxs%i#a`xkIv=3Jl?j?^QoSe{bR}S^QlU8US#zZwz2PChQ<5kkj&Svmc*mdRu z;&haE2zo^n`iDy6Zc?T2210j3 zlRKJHCprqTlB4Nvsz>VtjJ4HkL@;FxmF!FhaZkYD|DVy~E!F8uny^r=Z&w;X_^aiZ zlhW*(I3y+4MH)w`yS5U?xKD1_@BhjTGHw5caL18Ng<5xVQ7ZvenA!;&G1!^|i5sDK zMO)nHV12^JJ|yFEhE1(qq7;8!4he}83NH3C#`moi=##Anb(G;Mm%yrA&d^tzBg4+h z&@lb=Xmcdwc<&J=K`ZxTWOst5@@}cw#|U}>hIPd;y8jAmUCtqmdp;UGy6%RowsRrdosH%|c;lRngS|1$IGYa_=;jCJ@n$Ok>r3$ybL)o!K z!Mstl{wpr1NCuKqZ+BMy;;AXu&?TzydhX0jygfruo-B5U85o1iE3Pz=HMH|1 zk@A>D!fhciQSv1lOeLktXLUVLoTlAI%fK&GMIu#@2}{#V7>#%`E8bjzQh`BqG1bu( z(!|tx=@is4$ML%wYh+>}b()ArK@M5|cF#cMn*kN%!<2|7>i6W7aeUh6q~e$>uWa5D zQ<nK<=3=v3LCR7xoFhAWYcgSS1-GIE=66edlmTz?~4mBIyX&RE%9B%^l(&C zs_e~D#^c&8rcBYQcMy?^B70Mq3B#}?7nj_7!EQ1sRm8uzkIHCdwoqvzYuXdSC8dk* zFF1-OqHmOPihNlhE}bqlo}x_l7G@&T?MRFYKC?A4*NFlHrS%I7E@f^W6+MiB@VfU8 zDIGRMO?!lvNr*6i!YJ~_>4$m-m-V@~VBmN7Eo28q=r}n>b&a(pc`8z21y-!lk5OGC zDPy)QMf8GCX$?Fj!njMU(w8$qnWXF^x0Hx78Kyv-%+Paz@wyx%n6Z;)-@PY6y#zYEy+42Nj+?Y zN-LP`NSE_a0F#;~HrS=oRNAC>q{}gB+9xGrnR|q4`%B`R16F~PSEI=2A(%|kVRX!e z6-wr+Dwifd8YMMsB+2#Sln9&Lx58o-)gvH^D~R>2QRd)W6|WP-h}0Bei4oqQu`Oly z4^Fl&UpjwvRyBk>RVu^QdyR(<3~`YgV$y!TF)1jeq`isbLfW>_mYph!tx95vz#^h&8VJmCx~Lf8P$_QHOrAL2@^srY!7Mc#6dM`Yk`q3 z&M%e6BHI)si;zb=B{H{G$-`}9{Mi$l8oOGG+%?=kv4myfs}ZAO`kvPTzuDs~vGsZa z3G0i^m1fy2X7h$x)`jV%>{qJge3srxwzN_+%K4J7CxXggu^B`pp@`O_zVUHRMq7Bh z#=0O#E@ix8-G9f~rm3S;!y(g~Si&+})KfAoNc}ghS%?3K_MM22tVQqI(h8iqg^f^S zR3f_6CGyYa5&4nfxzM;Eii}V9AF8_kESL@AezjaG6wI<8FSOU`T%Sz11&M;KkT%^n z0yP>=Ca>tvv_{Y`OcHG6(4~WZnV<=+fI~9C|D`{twE_eKVUmK~;$k0lbT8~eVa)e! zQ!+G)Vsi9d_@FuwsDhxvX{8t~_-B>gEF9IDxiVVp*$BL-Lpn&90MD)+X0tWQ}r3Wv#Ln(xT0b z*w)dzENMiW_+E-)jq*z_Yn@e!h+bxPSwg6LnTTzfC3fnCtXU_eY)-jqA#0RNDr=Qh z3y)3hM8EdRoWznwvpLr&W{rV@nT5GQF`qTmDpnYaq884B9!F5Zx{z6?gJV$C!2H?b zKbKxWHjwS80(n#v0A}oMo1>D_R@pk~&RQ+NzUOI;&hg zkv7YvmA1<&hsWwtpLWhUiY1L|v{;2Xc}a0FLKXsq$z`pxs^Q5o<*94Yj$M{e)}m7_ zS~Q*d72IePbEP?R=HXsn^P{StW{PiWNos9fot6hxIi~BHV*If8;bSGFLksG zv(&6oM9Xh|I!Sv@eef8B@yw76~$vSlX;pJv??PQ(Y70j5heu*qR)x3+9OI3|`n0audCWTmO7^)X67Z!_6vHZ#lq(z+EWM(ArzR;1a0nvK+3Ot1)h0y^9D|}8Se;T-z|u#yZ$)Im zN5|?q2fWuy)F}N)yPI`fTg&GETqM^V6bv1fflWi7 z-ftGnsySV+n&q*4(a0H)m#I_e8@cvh7xeLRX$>4fEa}td6-=W%pWMgZGFBO>pCHk>o1`DxV$%H`3ZUl6zCm=cWI5` zfm+!-&VYBd_0D0)>G-OAruBXAnl-n7X!dX+KZ5@gZi*2v9^p(P4I1Q-dpTH5rky5!}{av+|%a@4b!0lD|eY^nd z@ST>0Bi0Z4Q2*hxhx@a&VR#8k@MNe|D`!pL2k_!o&V)kp|AWN~`##qm8Y&v& z{(tciaDx9+U>}$Vj|ZSASC>k;*~4@5#rOG@0-x>D%Ia#UdBcm0O4caoL)mhEyviJ* z&cGZ-vZmuJZs6j1OKlf>9@q&6=72Au_>1JL$`z<26K0__ZkF|d6Uh0giauD(TJN2a za`OD~e4|pOpN`Vo$=?Y66n=Zn>$H5JP<{(t6cgR%@| zSDEDYr!tdb&Kb^f1y((_lFJ)~(&#Wmcxc~kt*u?}v;HQRA1&##3N>h;1@q6v*~8Gc zSjT{&JVO4$D2x~odQ52ACTYWTmJD|B70qE1!evOZ^t0Vox{69dIoo7mi@y3iEY1sj zvz`QIxOBsv#}H|Lymt0HtoE1froeyw?4X?#sNKf0=_&&tl$Grhg72a^Bpg+@DG&R0x* zUa1U`9lD`Xu|?PW3I*Nz^NJ2lo7_B*gURiiK^tnZZRPZZhqvtKXr^6yRX+k=^oPDkKX|S_-D(oF1|C6b;1O00q%p_2UdH(Vyi5MJGHzz`EA#Mo`J%pbXkbV$9S82*r~b#-^m){i#Iq+-v} zkIuBVw&_D_#zsm7eJ1o9g<8&BQa0d7P;qoF1k4H~U1bTj#b$LFQyKbr!Ki{K$EHs4 zL{dQqGrY2Vf+fKckm>H|b)4Il>D3|ZP8d~Fuh=pmQo}V2RdVCSOo(RL0zhzOt*RHH zt1Ii^(43~t)0#8A?d`pt;4}z(2kLDtJzX%^fvA%M)B(lT+1{m(tbslfDqzke?X0!E zqt*V&nq%yt?c7jq=VZizBN6hl{jm23Xz<5b4PK?axBj1K?~QH|i3TSS3t?lhXjTua zR>$Y9GKxibTb{J!_RbzpOKxQ?d9eXq$q_Ktv*NEcOR*Yp&V&(S78+YF`6%Njvo7Gs z$b_@nT61S>TL)|Atu5_6PBZW9?riOCbGP#L*4A$PiMH}Ru`eG~ZsX*h3;QOJ7;PEe z!}5-0qV?V6QWf%TG!j{s7$XJywjZlX_jb6eGz9QvaQ2J*74*6NW)*s-`FXRDgHCkJ z8by(Qbd@n-(vCL|{VWWv^CyxDj)oRN@3*>C&Jj#I!H!n9nM@lDFN&3_QLK`_n@ple zFF%nlK{p58N2N9bW9v~cQmR4kGIdI4M`tVcJFP7p9ZrSpY42|9an;9ecbBs#*2R%{ zbrF2e-6KjW_DS;C2L{;b#fUjXdDXdfm!N>SsOpK;S3#WRu`4VYvT*dVlARA8Ubd4 zA)28@Wz$*(Co!PM-x5(rvK7tBO2=8m63J3s!0G6QfgZ*IpC-0sWw|ab!~l##^ZFJn zTF5s&O*>C(7Msh2&CeDVhakvht7I@bYWhymrcP<^>1lVGcUQO5yt{gOJ-uY6%QG?C z6Z=V1xqU+;u@(aHHOyi7!7L0T#GA-tjOUK8Uz>_Ho@>u^b7P^lcBhm(+q&D_LA(dy zo;xnjCRfH}gzOZt(%>k`&E2Lo;4!v=0>C$7@%>JGxC=PTv}_dGYD7h$U5iD zB^b0g?mjYFG|GehR(C75o#_c5X^Ob*HxNOXvwTQ8b+MJUD4ne!tv%?rpSW#xb!ME_ z0~1GQl-u43gI>P*xC7*#*at3CZaZY0H;jh_*#E#LqB1{J?(;g^JDd{b*P}A+y`FhX zCgYyC?1^QXQ!dlGct}RE6(kiS zdb#+}1=YzNA8>8S8V&4;b!jxYx6hH7i&dV!9NQ_8)W4lGr= zPxXozLyg5QXVT>CvjFhkxjiGIKUy!MkI{>TW6X)hRbvMfsneqQDG>}}Je!j49)Hgq zFCUk5Sz9wBuBiW`bE7VPZp5|g?oQT_UqS79b<$<+OcRE=63-?zM^YajIBFb;_AsG6 ze8EnbT0B?jZ0C9o7BmgBdt4;40`>Lc5MX$8(jl zH5z2a{GS{Pwz+z0ek|DGnaHzJ-;>*OCE51u46}w=X(u)gg!hHj&NGQVTu%0g+gc;6 zS7Sb$tl{wu@&rEZ>Rw6qwbjiXSoYf@7T6MxH%VP}dL?eRC)3)|>0XcOMrc*zJ#oCb zD%my~(3;TmcFTh|G?;0%TnyZIfXjvjX0ShOOvXRZ^#K5oo)0;i10|DqqY zwh3H0d{!v#(v8b zCW`KSLahd2@Dbk{yg&;tAm^>OZL-$O2s4-TjapY35a~4Z&V)BMVSoj%^T6L4_Q!wm zP&k|ex1$yxW8jNpqxmvE!Nb&x@J)E3%wEqMbpLjh@ct>p12{p;Z6S8?%fPMOY~h!7 z=j0?NT^HVi<3ap&V5|ofoQSa>R(NJ&Dly^J%4P|C~N6W9VCqVMOj(q1yaky^LXR$(a{&`wv~+uf+Wa@MFw*A(krlQmRwZ zSvFo_vqH7-l;D(;qDxGsoA=J3|_2rE;CsoV6o>- zeFf{g!uTHR2)W86XRd@BH{b%ueI$jZR zEB;w)^!%`W@&)^*2{?M~RAiNLk@C5hHhzEHb)LSpi@g{~2f*G!-V^7;@z19mc~N5T7?a--aGjWQzcbn8nXdL=ZL_AUd*XN?{`xp` zzdh(wc5Iay6f|{+B(T zMV!cZ_EF`&Z*KlXCd~>RJyHuST=JH~j5UK}2JCo=7ggHY;WA)nT*aO3fIH_{SNF;} z+mXQ78S9Wec1HN096P)2Q{l$Wb^HJ6*jX}eID=F8zJeW0k{UaIOnI!sq&V`dFw)); zW$cXk;1c85*?#0X)8hOg-X_KbP_zEW5c+btXjhlj+aMQoz{Yzf)5E>R#`lVCZQX47 zjz%!|Zgx6$=kHvv?-S{QEi1~{WB2x$XIq#OI+||a*q!7Ytx;p-4p+Ps&wUk<(N{Ym z{1zg5VIJcgG71xL0TJz(?VI@6L+i>v=-lZ2_rbV% zC#+fF3ah;Z>p6nBN3L0YsuAtn88Z)iNBT2Vf~>V=Jf|;%Ps)VYT~f-G#LGH0 zcX>M%!5XN+y&vIu_GPf=g7mrgB?sTMWN6zF;STpDz6|lLb0cf_NZ!6U9=>%&KFt7? zjC{FJ{6QdkwWyp(sE57@h+kZvf%2<~z6_$e2xI3jz`fhPX)LSW52ggyNMA0r?^h@7 zaeO-T35%=lD-Cb0!*}K{~oTcuZkkhd^AH}lW5Z=Cm#^uhO7^W}wb7O?`KTqXZN&j6S76-uk&%Uu)sN`3^s zEmmEl&w_6hR^bwPGdEkW!bS4*o`1MC7`|VL+~nn!nedmjkwQK@8(J%!;(AP45zG_B z<4$zzU#p=;?ci$pD(P2waP_PMMq5sUkB{MvQNdiYm#@C zt=1-E%(J-#6564y=P!;fZ#UJ&Y?XIl@Fn`ckev`NsN zz61Vm9R5$+kNj7_f8OhpL1rSC5r{y6r>r=Q*a?B-|l&mQvZv}ZT`VeAjj zKeO|hZO_!68GPn|XEyzQ&F?4ue%J4||L)}9E&bg=zuWrTQ+~VeZ(n?R*VF5s9(#J= z>B&#u{nWarGEeRE)Qh_}?>=Ss^4%{#x&6tdPj)`J|C2j^dC4zN{^itPKD_JrT}SQe z-SylrZvDmjUu=6~?GyVy@$%!lA7B6Y@sAHazVopSk99sa?Xj01-SX(#M~z4K`T1jy z)E-&-$RUqB|M2#QH#~gPL#I8o??W#>xa+}n4~{)J@ZgRI)<4ksz_bTm-nnJx+MUME zXYSv6|APAux_{dJci*?+zBTtvzHi69=Dh>=9(3>S9b0#tv19)oPv3L$J;ptQ_e{EH z=g&6%Z0S!A`01v*PrJKz_d$10y8Gd~%)2soZNKx9JI}at@Xr13eEyD;?^tlh?(Mg3 z-?ZJ_-n)ID?UR49<974*f!hzdefMo!Z#(0*qi%cdmTk8zy`}S({cqWM^CdT*d~@H; zhupaLjc46ZyJ7ha({6bB`kSs_aQ(j5Z{Bvswl&)_+a_;&>__I0GC#WYx{cSJcHO{r z`(F3l4^R5x;13_(x^?S@t;cLVXzS#yXZ&FK51zYr$F*CpJ^tE(YxlqQ;Vm1t9JFQX zmgle8bj``v9COX?t2bXgaP^Fik|O*_B0>3cgaTYuRBmrc6t=}R|UTDx?? zr4L`S@siFHui0ty>Zuf zw|w`s?{5CiN#B|Fo#!uj?1Hl{$Y0QR!QC6yZRp!@z=pjy-1P0UzCHHsP3NyUfAaae z*WbPVl=a7~&#d2e-rDmHIB(K%@h&f0v|+Osx&ZOzxFeeL-(A3O7`GxKNmow@fJJ5OJGdj9mIPT%|V z$G*DdtH*!!kkj@)ZR3|u`SRG8XMFj^FYWl!+Al3wyYJd;Nslv58mb)Qq8{zC6( zCV!^$=B?}7_k)*w;FVeb)sRvRIq#j5;ka{5XKc>Veb) zsRvRIq#j5;ka{5XKc>Veb)sRvRIq#j5;ka{5XKc>Veb)sRvRIq#j5;ka{5XKc>Veb)sRvRI zq#j5;ka{5XKc>Veb)sRvRIq#j5;ka{5XKc>Veb)sRvRIq#j5;ka{5XKc>Veb)sRvRIq#j5; zka{5XK+tWT@1c2|5C80%)U3mQa%MrFzMzz=6-t%id8M&@C0{CT!G1BLupzGxJ4CEX}zSLG*40X+Ri)flb~l7B2)ren#XY@wX+DgHGQ-Q>b$399El~Khddksx3mm5?c#(lt|J0 zwFt4!Er}!3v{R(YZ&9H(nlJLPbKLqxq>N_TFVY1vN%_lWs?mSrlwTl|lqOoeE5o(L z<5fq|3eNMMs;*rd+-HRoO6em)^0`uZxKf_r^bL-U(|*vSF1RSe$fT4l%bTnD-g?CZ z{2*Vw{Am=_)EpNP-o@rehd0-E@0%t}If zY$EL>shDLu+?_SELR(Z~$~Za|j}eivORtV3t`c#{X*UMPD%;__8kR zA|4WwMNw9)f(&aaQLL6rg@Rdzj?n&bMHc=S{V{TtlHpU-SL+*vakB}IbF0&|FGh%2 z0)ak+s`BW_v|bRePVO_(N(k-}=HrtJ{MLs5bGlPbz2K^9gYXy-;7dz|>= zN0*$s=wkta{{-?VUlRK4DoNd^ov9WdT?%=|1QjOdLX4MIo)b}MN4Ui5Aci%IaGPSB zbQcN+;lwp2R~1?Gb!9)wq%5q_h?$cp`hfyWi^{GV605{iwvawK^<4Kyg=^Zy3B*~d-AkT?Y}dddF<;lSCZUz(KQWzd zMh(~8gV%b)nlmF6PcEq^JgbJXoHFjTHd`>xR#xO-A4l4OejL&|YJ`byBiS=Ik(SE> z$D5WIAEG#dfsd)vth+-*n1zAsTBPYql6h~8C^@jDqszi+QI?Kx^qYXDY?dHSn zbISP2pG95^%^kN{8c@pv3y_Kmq|>zT$cz_#7+sZB-feXXU3>{RkVP(0pipt4n=k=| z-Wu$2BD9a61jaL;g7MPIE4B86?Y2RSMQ-~RdnGC`h%KHrx@(k_HZPmJHnN+@))nzo z1+9K^v5q>NNh+&q)T_iDu zK<`qj%r%NxqnwXda;Qqc7*iwXc8|-VmLF>4nA9|}*)3htCA&Eowxq^rPTlfjRMS^K zFI4kbJ&&3mu8ZY-uck@NrDe=e4^04; zE;L^fc_nZf#Fj!x>&}-fr)?zCb|_U9K&YTD*6xxmsE#A14*AL>5JE|`V`XBHi^d-D zDApZ3ZbL^p7KyS~aO{JW=B`e;`(6o;$$EfF-yi{~ykO?)-tO$lfd>!Qakrb*(|o8A2n+wLa+D4ymJGbnh*(SXP9 z#Ll7A!BNYXE0!)hq(?e`>+4|UzK-N6X8-S{Q1pha!kW87S()W*-hlD8YRlqO2`O=| z9Bm(vu))xuCski-3MGr@!6aN3uRifZ9#5Fov@KC$kmYEeM%5)YhhRm>Ba9jd4*)oX z5-`Tp7_Z#yjK(TBD^JG^nFV?t(-jxAugj08NGS$zD*DUA$U3Sxks^>&Ri|^VHRia_ z@}rnd)7C1CsR&^reshy3I*O54rI1kU4OH>5F8q5c#g9lr5Z$!0GREIlfObT>D7$N5hktHgq7Y0ctq$3xPAXv{ zTM|N!Ls|!%@7YNC%1EnsfGhs^AQJ#Z-U-s;M za()5^-OPX>w)CId-cKM zcsXA&^?9W-TpMOoAytd6_Z14d_2(5GmRiVFSUK28eluu8Ew-(kzVPst{T$8xW?_6) z-lY`IglWx7Dr`P+dr~SaT*49o|CPSr_)zwDX<+rI*{I$$#@0hL6hk0yajy}-V*4hT8 zdVCEQGIRR4kv+~BHT9X$4H$hRm1-FdGOp;)w9eFvrK-NNR4eAvdXd(Pv|jvQjTgtO z#*0i(SFc`xU|2a&Z*A%9(ko`RRLlWt?{4qu(MQ(6T`v%(a^`_LgEs`Y~bR^Z5cNzvohTIsdhhjhunTU7Q%h*iaqMP5l(y=&{7tsiZa$qZzUesrca)2c5p ztE);medhd9d2DD^Y4uEfRXztD(?q^ptr-Pta3!)SKNN_vL$&~iRE z7k-{Ob&AU@tCE)0_O@iLhFi>JxJHBGvsIJlv z(F131N90GeVXe84A1NEplqb&7 zLhEma`^}Nss5VDywkK`T6AjzT1v4Nm%|KvU?R8pn#U!_ttd-84 zX?ZQkXUnAuOjh+-i)ZU|YxzP>A1K0|zc8Y-X1#wd>TNAB_H6BL>u%|2)2`8)Kk6iE zIdWi$KEG^?nX60X05WIjhF*X*fK2bftz8ELUALa;p3~Vj zC({jU6O~ELE2RH3bqZ9bHBg!0LiiwGLg7JK%qK5BwTx9ph!>~pv&fG{>qp2z1*&jq zR%P~VxDkHp6nJBnVBPr>>!Nt_zEl20at9*hM6bg7fuT=_WeKxtP6v*HZWb%X*hm5V z12@!T(Y08`*0RK?90xN4duitoQfl!34%Fw>3UHaGc}UT$!4$D@puVU!QpjfyH`gpF z9cLB~8EI`_*}1ZNWhRsBY&F`A>DFT95|?rRRVxxmhsl45*0-UKf#2EP{O-RE;hYC$ z3758#t9Q$5hHEYuGIxAAbxg{x zL8ksC3l$29^N^P)MA4y32Q6>e|B7rwz3uhJ3sJI&mdF8v!6K~Z!bD1Bj?y^w5lz*l zi)ybQ&f%9vqZT$Z=SddT8Vw7P4THOHhX4fQIQP%f7^4^pt{N-Ag7FPGXvzjkPs zCQB%1Z&BHtfIdqhlYGjkHc7WO*C>|_c2Hl+uupP1>o_uk*ft|#`=oZGb%Ctjl0+Dh zrQ3@zu}nVEa>PzWs2bC1AB@^odD+%%00T@&uP-$3B9O^D4Dn&DP|4?>q*7L)TQe3J zqry+^Wlgs6cPZTv*Xem;!!7}Ae z6=sWG=d_@|lV)d1a9gx*ZNfi~Ms8K5C1gt>@`{>mN0c(UO(k<&qR_TxUxn2_*P4Tn z^K(bQlBRqn{nAIxs(fTGdt_~l%jX*+wZ)n%QA9)7CvnzjO27Udy;`3zqQxQd zoxL$*eyx~|6gcft^d@^d^@-@d3VWAr7)D!gZHCb=+_s=V~Bjd)Ravo+c<3`vQC7DHW z!Uz_J#$j)0RaAd+e;v+^RoE8ERecy&y~DSyVV-=GN4HEW4QG}n6tp<6Nq4&F_Uv+3 zFM`SUM-5lZ0RY-t}nv*aKjmbm5Ibqkf24=%! zMAP0#!~>VYRmFi!Za zLVqJJB#)_tbL72{wDAEUg2jaMNbexEbH-|9BceorrN-pR(+hes2la4g?0(5rEA0#h znpMmx8U7A?3rXg-8k-5f)G4L&y zW+VcC()!7@D`vTI`n~+I^pmrEw)^a+K9Z(p zY`t#Q*jmMNGf_*Wrosp3w0aW{2XM3gTY7$BUuDD!*RC9L_cXE8e7lUmtmtm{^-Iin z0wF#Ev!Z4iN6EKf#;ab%EBK~J`LSMWZ;2YuqZ&}uPbA_ecIxy?Tw2A_@>L}oxuSA1 zF0Is$WG3L}IPEfwHkR7DbvR6xAvs2~aCgSCQ9s{~3kj$cKv zzpx-`iqr}lgD;Vc){w|dQ$uQ*gCUGbw>kt`Q@wSU4ibEPu(va2&hhf{3yY0MJ` zidK@yi!-`rnepyz!##ntUSU0>cKrvI!t8__YEX9Qkjk4WYAop-32h~lFVA4Yx3m(; zSVUv*r1c{5T8_A4c%o=Sa~9E75=BPBpZ8b-bZ;zsD!skXfsqU~Do55}ATUobcN`Dv zmm=p&V6JgF3(OWZD;WeuMP*jpcK!|d;SUr@j)Ejgie-y8*QnevW3*XmnmwnD72!q2 zL2x zOMqI9(#O&)L^ad++;Ho-aF^Lja_eQ@l8KNl&R)#S@#hm*;n0;NCbQKm!dZXTW=yf%!hhK?z5FB=)%4?ayA-_jMxIN3S?OM<$qqEOuq>Gyr>!O)zfP z!3j-!ShYWhZbdmG!Xpk&MpREwICUth0p%Q!K{$7g!qGkf58~CKaBA(3%CVl33)V@= z1NWH<>KpmFZFCbcy>DMSX1C$wmc8r@xDHp;u_vlsu;S$DbJbw%!3rqm*+aT#x^$MRn&h=Wr$x%>^?+y{~D{tHys(?QydwBRtZ2P%_03$y74A z3S0q7CO3g5v=`#`4K(hF7na=hAkpl2){@+o;+74m(~asUg18gZEePNq|7+S?qpu~| zt(+4tFp#KxcZqtmQ%e%@)g|0bouFzrae|uN#7QU)oa)6{AL43Cpp8T_AwG{nyp_nP zg5)KjGq7wVkq>e7^bTW^s87)>!TQkoQTl~3BMaY8sJIWJ*gvYAKat^!;&%Zb%w_Cf z6^>uX@G0seRgT-Dw=9b4@`JQ|JRwjZ(3dblfuUDn!pffg9#lkyHe(VR$>mxGD|L}C zsTE0A3TS22S_|k*6}MFdZEqyPSRDQ6$0M!9^){@{F6}J3EkOR;Dshu#FmkBGe9^UF zmL9*jT7MT+VBz_*oFfz8C=Jb=>jha=KSd&xDMCtUZDQD(RQ5;Q&JSXXr_H+`;py4F z6&TyzJVCEQX)oqm$`W^8BOkG zT6C1u@-Mn6gi1yg9q>AlY65z2>A>krvPLFOQ5I*2L$LHJExIU_Ox{Usna;AI=p+G2 zTqWZ1i*{~c9J2j`>%O+zq&qqnjbKpWiH$U?K4XtH?u9r5$aEvq(b4X-nWWko5-0$jbRs=!x)Xu_d*#x3lfQW zQ^YIdR64Ih`P}@Bk_7E@Vj}zWAVP;jS_eNjLptgyZ6Z7dVhXCqmrF(!9fPwFBR4x^ zdi+`BwbW0}(2R7IqOw8=zbF&)C?lCqp(usf873VLXOnjyugyE1iZB8R(B@^6*Je$u z(1NHmza1FMsJrS(WQ5?X3ROtX&M?_<5RZZ$oSh-R$T^hOJz&JYM?FFw89lD)6tb^y zW@ef;CK0DX*kpu}-U|-iFi8`DrM=`!BCo_5MiElkxfy0-m?{b&(`qvD$)>ZXGPV^( zH{tY*XHoEzTZ?cALs@-lwlGWb!xk5fXiVV=j@tUbSQJX9;3>k16NsNRP%bZC zh;nHW5}yf$cDqCzB0TnO0AjjuFU>WISwlAq@cr*{3BECI@beVwAyg`SCO?&oMITdr z%`4xTbw#X(f$GEPVcuzhvE~1!FDF=HX z;VlBWaY?;%BGATAYY#KLqD6kz?iR#RU%f%ZDthftaLija*RBekJ@ba1eQF-f_i zg>gd6{7Lw@us+X}w=N=+pCyN|>fGu+wnwB126)>a_R&Xi#}Td<){ycQ_?Dad0FCo& z$Z$Z@o)*MNCpkaTaDMfYs>+0qQlWb3e&0#TYxHMKKqEazoxD;Zuc}^Bt=M=3okW9y zc6sQy6%)9tlRsyoDsfkal7bYYm@Cbp$kjVasEoWpBgM(z{NS0q#g)rbpBNrzIoZ}? zql2BLVkw2bEK)^H7e2{{#K3Hp>TPhcbWn16MQdvJbUuT07*d{KrujzPX3I(15>tyM2T{wfFR znU>aGy<%od#T-Fx9lc%p$eJpA+$;-k@*k*o_1G{6l>+?qZpV*kgZZ2H=qx8c?73YY zWnEupXQZ>G12WQIpO4;F5YyY+s}B~(%lV2+e~Yg76$-kQ?TTJDE95@;9B5N5`$fuS zZ(nIRJl}vXb{{%0)RG%7(*ji~&%K)z%d=MhDa3K3GAonmo~<92FIMO1hqbkLb?OVD z0>PJ6O?}L)t}5m9B`fO_4pxR%!DKjFtLl|irCK4Uj~UhMDm@F|C)P_Vby(CeD^;kQ zOXk(!-!bd!%XXr9wd&LcHk z`6_%bIDev<(;n5DeQI@Qhu2Q0zSykR%0+#`DpjbYE8z>UB-BBv`d4wNt*B$f)NA0r zl@JqiP`dT4f>vP8ZEcxe9llsPVN^}MvSw_gRM2M*oM1w;G5ajjv`YKbXHEN{*4);$Bj!M~o^;DuG{ZHzF)B~vpQV*maNIj5xAoW1%fz$)32VPkoxc^!6sV%?S{>ztt zQF~(JW7~iJ^25s?+WkOn=Z^aZ?!Eh-$v->l?(KKZzGKr*25#SQ>*ODAxcSx_XWTGj z+uqkr-8${s-Pb&K)wIpKFQ2?=@@3mDzU0C+-<^EHW8b=U{n)u{*X{hq#4>cjf-(u54{&wy}9d@5fGFzF_(O%lBTsYk1@E@xz(n9Uoo)(UU&9 zm-hYUtC}xwzO?zm<_nt7Z$78_?B+9@zta50=Fc~Orumc2CpJ$smz#^t$2PBQ9%=qq z^GBMOH7{;HviU>J^PA^3f1r6zb60a)b4&Akn%~_#z4^bJ-`4!*<~KC|SM!wS|JS@% z^FN#Z-t^a|KQ;ZK>98DM1G~L#8bJO)rKWzGb(^XBEH(lCv zVbcXo=Qo|xbavC3Of+dPAMvUl%NXXi-+4pwe{vo1Sb|I``!=K$HA#TLC?_HLcynSzZ zf0htU6%{M3SgB%-HEsE|w2hV4wBpZLV@(WE5|bJY(P)UG5^mZpF4Bk z+E}&vn*RTqe$n)^rXM%`sOi6&o^1L~(-TeKXnM5iD@_kI-QRRy(>+a} zZTfW6C!7AY>7ScE+VuBL|EKA%nm*k0!KOcNdT-O8G`*|o?M;8wbaT^WQ>CfYbVJjY zrqQN1HeJ`Wv1voo)lIK&TGh0o>9tMEnmU@&O)X8YZo0T>QPV4$Ue@%IrWZGz-!!}F zyr!n6|2ORy(|$JX$J2f^?Z2ko`}EM$eNTVsNALd8Kc4!?e{KD*Klrboo_ze|2TpE1 zdBw>uJ@uidUi#F}zyIy;x4+@}Z}|3gmu~v`wQsq0ZoUCwinVTTZb>ZW9iCEPrQ10^W97OFW&vCSr_eHc=(kIUUA^% zXI?fw|LzM8&O7z{n_j%@MTgJto>PCpnOVD@f8@NLnbT(OoPKuNJZs%!JFGvMb_2MA zzLhbE+&Upj`n0ujIn;oZ-jJ*?*_l)kb7y2bNF8!S zb(HCX^rDl8_W`STLxG!S>gIFQ^x5*?f7b5oA0)iwGbq8Q11v$~q?(}a;PSl?xy%2Jw^-9Gl)gVhv);-*G zbrlvFLC+~`#we_?Y|iHCTq+wDk#V#v8msEmyA`vR75I*vhoR(N}xZLc`DplhQg-xgQ| zK`Wu)H> z)qPoO$7R5-(@u3RYfCL_?SggHS5KR=ea|L? zc&WXvK3Xi~u5xw^m2Y%P%ST(=wq&++Zb_x`nbvGuc2NuTU)vrMqzCVGSOFG4g8sp~ zD_#@0&qw@X1jAlv$tqqLt?U@73xDD;BOiK|iYrVg705&n3EneDk(ojX;$m6X1@F6& z)ydn!SlM9;M$RKjE#(rN2q+ev3Wg>88L`nuQi9t^hdzziT_a-v+wXWpG6>|%BQm5# zsx0)>z=5DAE?9Mfw?ai=Y2XwaQ{T{9nSL-|74=X^lu-mCwldpas%^oNXNLQU#u5=C zt{m=n)kuD-R8Lk!Q3^VZ*!JvIry%Qnu&bavrrMi=imBEQJ1A{w zzGB+a3c0dOoe-<^V?BADlhu&Pq=ogQ_N_3iC09^aVt>sUm(>&V39Mt^3RX~0;+3#r z%B!VyVYu!2G%FO=lgr>n_&%RRR!mPCzkO9tAYT&tTAQj(qLFh&wo=Isq7!mxGn7`V z1{7DVH7-sAFI)=t(xC8>-?@w$euQaQD5N8ax_qx6i4s9?xj-95QX3eUNT&miYWwnn zX;~Aw?p%X97!%mz+0!8~pmG>3bl8lZK!p=ddOU8^OuF4fEl+=-l zoQ<{(u|lAm4jtP?1=Cj-Cc%33hH+HMhQhk_^x71cRI*(pl@-*H*k8)Qu37jeE3NAK zP}}tv))BmR)Sc4ft)kj(+gMshHt*PVtd=jQBX6i&%d);?J%#4cHrkCJ?UVVE5fTUb zGAe4MUyI=8rSVnAFG&f@S`cA(hEw>UVo{ZX$>5g4SRK+s@SAg!;>e7qZ?a-h(!9ea z%rt$y&06laFYX>AR!CirR;@gELNP6ASS`w3L=fpKt0H#@ZK~%I8rJ`Y+mfqIUm*oK zya@dDAY(-WxNk@DUg3s>X#Y0aE6>#=N=#5e7~6g?%Es^IEfq(NJaC8A^ug1I>3*;R1*L1mPy`@au%^128+ zA?rwRHA*jJ(+lW$46c`o!0^Hmwet#l4wBOJga?#YmcOP9i#+bRCrKh5beQ(r7KJ%d z7mKP&q~*1$DHKwbR41jhBngFdC6S1F2G&{75JD?6LS^A%QNmzN2#!S4XwK&ZabeHZ zBHQP_t;Sn6c&f>fm4tJkQTB&H`i4|>iR$ApQAfQmXjD}d8dP3Y!M=gkCl>5&RfD}z zCHaafN)$&zpS*xxQx^*L4aGSI=0$~6{*x3Uy%(m$Lk*3VxoqKb8tKxvEzBZLK%3YJBWCs%%W4nqU$mmse$c5> zl|CI_E*dPAM=EO~vY}|OR1}c)j8Qr1#8c6DuGA@{sVZe;sF4-tjEU6=tf|X_)LuHC3VQeIOA_5@7*Nd=ow8qw!HBrJ9 z8gQr^-ASRX9T4p+ttY#0WiMo8sxR!=Tm1XHd#?y>uvbVSAM0?oCtJlJ@F8-rz_{IS~#PM(|1a{uRfsVB9G8TF$hPDCukzze~c6 zrgV=qE6RI2G}er`DLl6u!E2YJ*-92JbV@*XO1urV1ZbUNqk|qt3aHk<%2D6Xf2%(&l!kkD)$C~EwidVKT!#lj);%mvxlR(A>a;a+Hz?|sIBtC{%|1QT^K>h6doXG^n0XcLZ z?<8=C4Uw3?WNIARu?6TM>=Q&!AIKq{M$o@yJsEg(NdD=6oQn1`M?y{O-ZWt>ZmcsYbrNDZ8Ti(GH+wW1x^MMQjsEmWBfSAlc;9g zbjsmrU4eH@+`$tMpZc5C`wB+QMZJs_Hv@=?8*%rgkeHNs?!rSK%HJ42iRC37W};Y! zeOK|&D{+sD-9HcUY2G@eH!q!_(FT3`4{s%H)R1{J8!p0!AFD?{l0tqTW>Nxrk+ren z1=dQ=U31bCpdckt)=SlW1E~o5LE0C>{bZHI@pjXTBKNp@3FjWSfd%eU2wY^HAZn2@ z+^w-q!555Yb8uZpm7j_rMX>PGy-~iWNWSJeNEOJGEs0&opI*qK(iNh3XyXu4s(g*K z(FAg`{t4^cT?vEXjHG91Rqz1krvC^DPbKy8e!<-EAn$S0saPX6KQ|qPdqcU{dGrzC zV1{ol9UN>>CJfl?DCn9JSRcAk!$y!{kas&trL^s#kwxSQ$Hrb1$V5RgG?T#_JbmT0 z>Q6Z+G?o@W(DyfF_90^;cp-{VRo}`Cqc$Bd@Yzd*#B(+5)s|Kg^`+N&W^3}nM zeL5Ax`SdN(wnR%kYcGW3iiHJ~43dy^rd02-aUB(53#Glb%H@_d@B}jXOAS3^ChiVh z21nb9I3{djMir#pEhCvlE4uNuM=$3GcV5BM$Y49q(d)qycO8Ot3Dh52>8C^AK+&GVHVgW*w zsLRn5WAJ;J(Y-^CF_>cl7^Qjk7VArrID$jx&pdh`DLOx|0D6QEwl#Q!;0FT3TQ!7_ zmYy)5hU}pSP|+oO1xOX6SSE{-%P2u0{qdXfwCKG1Jl3<9sgdwld(-@S4p z(d@Kz$VVie6fY#vGT10)mUS@PrUb`H;pnSe%0_t>MCC%tB8-uingbZ|9Tf8e;r<&# z=nxf+i(_Yk4uPaXuz_12P_UU&4bHv5WxQN~1jh;MuvwlgVtXGbH>HdxOFqFi8*yW- zN+;FhsG>dzN2EcP*XkLA&FWFR{xxk9&(k4~|60 zGfbipC_>d)IQu@|orPv)--y$h1&%BYPg!Gi<~3~39am{_xbGUhc8fN4>8KEo&FEjZ z130+<>MJgcPaHf#@6|DRKOljTW!)EQOP~ukG$TEii_CQDg1KNI{60|EMd+(ofn5UV z1U=~}JOG}+FA03aSrGkwQlTB)OfObCPCaW|39cLB(+k%Ejg{eWk2@S0xxq+g`dV_4 z;WI5&xNAIDhd~JLPgmRJ$vg-N*F%`aL&hn;WfHd=d2s~YfQ~M=FHE9~&dKtIhYLAQ z9BQ~hhfdl{fr(C~FcSCLXBP_k8=q^BJn0owtq^7g$jC}{U=;F3jq!z47PBKYa&;5CRXC)&Sb#6VC+Pzr9FxJwCT8+R`Al@1 z(AU-Zpc^fKm#c1a6<&U+lCK~gtoqy2C|Ls4_Va zd%?&VFydIrGJ|`Uh3c%Yfd?*KMJzRg7-d!(Y9cj5KZJg&I{5f81u!y0M3`e^fidR{ zZX+0EgEDvSlNJ?tph$k+9HC=&NxsYb{b-m50%&qhX7gB}(COkzn9@4%#}%R-O^mAW zg6R5?X1in0L@|(N)^c*REZ>`$zoQ=##`|8;xXZ)@EUBxm5@=V^m}w3ps6A(r`$mIPO{2&!giW$^{wA1l#BC zg?@go9vUe}bZCA4dJ0nE@0}1c7&Z(9Ol1vtU+(Ltmi51;Z4cp!aIpgIA<4A78h2Bz zVONP|a7pT9tDq%hs%sMLsvxerIAT2T`m?xMK&~&-s$htC`#=L{y%DKn3wQymOirHVdqRYXuQae``1`$)}Ad&CkuU$a-qnIs+}tEq_pw zvgSwyv7bW=C;|r!6%nsOiwnmJFq_b+2f-1-MIQ^<4n-l!bYfYLV|x&%kLXz_cm6v8 zuS)Ulg*ufNCMmui1}WqV&df*FS?G?0@S zChqW&2M@QlWxX@n--*@q4Ug`JtTD6!3jUt)(i%rZcu@?s5n?~-DNbjR($}MdSy|Ry zk?qi5Lid)s52y2U61Gd<``r83ZRO}HdqsI;u6tx3$LJpI6;~>k;*PByl(% zi;%I?vc4)Aue_q-9#D_2j|$r|XCjCoCLOSHLWXruKE>rx8rW&IA3=wH_>2PfxuExl zRX6#0fGET$p2j#~DKMMQ4#Mra`7Cp4xYNP>?L0hx3(@8}Cl3>os-2Z5ZxC)4n)sAL zit0w}`VysrqAfikLD5a4BM5(2)LF7skx6(G+jp3sl~sZ{Nb(_rt)Ekm#onw50@3Ra z8d~W6?Bk$Eg9$whh(WM6kc}*zl6;K}JMnZlf6w;bt^{Y|jAdnV%<3SBk$R8N+F+r= zI2lqSRoE^~EQjMO>! zk#bXc311_;cx=I_xpe{wd-cJcgRRbf>d^BG17!c2LLA9eLdDU2u{J`@Cs=%_HE!{hU{+ylSx>3Qe_R8S;T!#s#|Xryn471T1S7?B5~QJl=Kcan z3usA*TL&yZMDLcuo#`8#TwxUEd|Xqzo{Z25cO8!&#F6v7B6GzqW5zdH$r8Q+E;lLI z>g<0c$;C+U;%+Cx^Rlc)Dj+?XY^HP{T@d-3x0)L3_^4Moxvg22SdSii0~JdyITZQD z$A{$!_N%bRhC?|Kw#9~gPj^BRi@lakw9tp_PQgNj;Lo%Yyp#m$g8H7fB<#&wWTsWBOJ@cH&BM)Gm1ZvzWp^&#k=F~Sh#cU3qXoTA{*cHFRh8=sU zO}C{8^pX0Na7}0>>%Db^kib{b5AO;lm5RniK=C2TPze!$iup__04)tP#_XVfp<#05 z0X+C7c)HE-8TwIyW>k1-6P$v(5rb>>L?pIKaxw6Dq*GNpM1jAG9XGy#Lq%zt>@{ak z+VBPbQ;44r0#rJ;p_+IxMztZ+G*>)nT5p;LNnCOc#}^nipv8`wvaHqn2fptu;0(_Ft-^|{w zF~fQY&V-@&QW09F?_rK&8w;&qr3|x7<5)~|5105Vk+1Z=sv&r~J)gC=JEOveueH_O z+DhK30Ec`%SM%TX6%4#I#+$H5rD(ikPy#x>5U-#e0hp<(krPLpgp z$@uBdQ?=M>RT!gV(75b^R#ODCF+hX1Lx6Gg4RIA>k@z(1b`qGFBhMx(@I2a1$b$>Gp5z5ggr60X_ht z-;QuiL*g&Dpaw@3)yXj;$If=ZA+Z2gxk)uyCWsPgRR+_t#uRLW!;J?v+ECuGu8CC` zA7iL7kWXAZK?=iseWu!=9}-YdHMyFHJvFbxx^_#mAgtb#b1J!PU(~GJD}cgUH_hNE znQ%nGU`=@iv7CWyp@eqh%Q_OLm(XGg(#S>X^%eDM0g`4_FVltgCA9?mmoJ$ zS7fV5mlKPEy_)}$hm+~mQCp~2R9ory8_THyrb+Es<{ZJq z3<+y*U!#F8FI2K;dLEI5>8jn8737-`S0W_-LLFUJQnmKvxa%a&IjXihlgP?}e%=yb z$AQUwRm~6v@B=0Vll*dkD&8;-YMKHL=y*n~4jazH2#42QEo;4+t&{c6STzafp;i+g z53eS;ctoEMDs3d&^S6GhU!`R8B$Y>1${DaK95+`;%QK_$p~1`=MslBYR$5CovMe{- z>>q2jFa&ZT<4^;38mH6Lu&PU741}m8;6rH@i_Ntbb1HE1<6-r}vpHrOJTCj8Y(@G2cXIWiMGkVJtJ1T{-tu_0S zT(h0(?rOU<-P)S5SClJ7xG>HhEN`i8&sGrM%0#*1uDZ^d-Meh02j7B>Pt8}#W0mZ9 z7M}kYUpsmOygXH91qE8)RrZ#0g@73ubP*3HoL!6gz1O9rC!RRWnX(qPpMi!H3eit&P}x?_EuPWEtPBbsNKQz zy43|tz~<~4+(2zl!1_06a(vG0mCI0AI{{l7;5mmXjQrIaULLaB&_t;()jG1Ja+3?e z1(51&@Aj0NPIcSsDuqe7EZnXV7^~KSR!cQByIcZ!oLmw91Xb2+cFBPgy*4N`Z&^`& z>oRKw?L(yRp_YdxXiKwRXal<{YR^B8|7TrbLam zb=Vu>)OmKa=-5jDn^SYvm8%7`Eo6y3?%D$CNn5j%4(?6`=sg8E#(A@opEFw`s&8nm ztJ-v{r`WcRjJ+1BS1CYlZQQACE$8haFPBD9qM{q!6QY&gEVN?Pu5K;Yi+OuITgz>= zb1;3j%Uf)C(aovWKz|YzZbc_~9-$!HIz5oBot>bHV%@Q!gBHe0(9F=gmcX|6a;4@B zmEmOV60Xtb%I;OS;RhIxt1e!(XY6bVs{Ax&yi(v~J$H)b8vcf4ajs zyv1u7wryLgv(*!t$#_CD>CUt$w2S_Uh32do!;rTaLrxK0e`&8lUSyeVU$(+tkcy~|u%H=-zO+*XVTf;60)};N7R>`e zV}1%F(r@edgrGV(vGt0K)qM{H4`}R9aYTc$I_9{^81rk2j3~?~i3YbMC=+)WPaNN4 zf^-{YhbH5$svRZKH>Lu=vG0LNhUa@yDbIIi(ygNJ^oNO-xy*E%Clfq0i%mN^qx{{V z@w|hkJyBmH4?mzeN2;yeH|NOM8=P9bQnDdZhj<%edT%m2B;i6P1?0*nIxiVTQ`x+; z1;SV~6_J#4rFU>Mynq;ACX?(FsE9Ft8%z;d%%9=Lk?u@89c$$wzhyq&XLy-h$PeSa zuQC1Oy{gRx`GNSpkF*&~#=Twv>y>n+E9Z5UJn?;38TUVYAdoR<(@;LckZQFD@C0-T z3eX0(mbXK`1m>kxd$Lfe)w4x9L4{s9ie{X(9TPA$9@>JrUkP(qG|5~7Jx-8^r9rAD zNohnYi(ur zgKap){4<%i2kCMu#v4`JO-eVvuJV%Tb8n3uPmu)`6ou!=DICtB`IcKGUM)B;{ao6E ziEPz=qSJ2ArTzS-;QURs^QAKkbDc^#N%zq)8}imU2sulITy}))((2u~0`Jdq)84So zK$lQbkel^V-u>=+LO^04Erl!@suadyw2zJEYLuBub!WPI2Up-=p_@yQi>Pu#(XgO` z0!y^;(VK-u9ypl!tmEzfbp+hjp16Y1afebC7MG?(!(HjXernPqRuxJF@6@2};$~I} z^j}yX%2t*buiu)CWl8zevT0s54XexEe3HxMc6YMaGaxT%QeU01&NS9NYN`vgao@LT z&GnP*kUpT!Ted{on=R(*urAAyVUV%Q!&qIoi?LR zwl1>$UA}(O*2y(nkg`H}kcJs7Kz<7E%5ewG2uSiMDZ0i+@+dlO7JrSFo4ZfYeSCPyhkU}?O&rShdro(B)BQSV!-y|23c1h`x0n|8qC<7e6wBKnl0f(E9|YRR#B$a<&F}qOW>RJ(PAOj482?`5@-0k zy#6gZ#SPJ(FrY5En-Bmbv%h!k)oXj}u;XaFuae!~>lBL+PP3EQ?iGcs1L1%LMujA^ zz%1t+7#okp&Tnx~0l0f6yubZ6F%>>EsWJY!ve)NIZd6z^~N3gK8N7q%en z)`yq>-0xWovaR>Wwyi{O4r6Xm$3Lb?Dpq?7bass$DY zS&R#NI$*~yzr~lW#FG#=aIF47lI_5HDYr1?yS0xlSHV}|1kGm1u%I8_rE#<&bYk+U z?@PqUh4+4dhM>a_)KZcvSgPY)kd1sO$+n?Y;0GdK+f1O-n!$E!xGq~j)E#{aK#nL4lVIu}+FDXv)*{oE@^8#w`-6ysFy0RY`>8yk{2ruK zdwU1n{edUmY#vTzZi?B5Wa-&97)%2~nuK=P5UG5dg~U-tLdiy(R0d3dIQ(=Aq>7ot zhmn9OQ=Zh&@t;v~yUBb))%PVe*ZNt^zC`>H@^ zvQ$QJh>dz|FGTFl`nprup%!72?Pz@~#LZ~(_b{EuCJqbxe6)UMeZ0>_wxpXz0jbMHP4oXBEi1=nqyYUtW$bFq|4$MD;157aM zsn#lRFCWU`72tPta1L#@T{6@&<{psr=0!{3pc-t3hr@mF-RvlogN^ZYC*%_Mpq;x@ z-Ye09`#d6`PrQ_vhYwry6b=t4Jx9g4!cd-_cOTEX7U2Bbd~4?0n=I=h`1Sa7%lflv zmi0>b{eR*2M9;!Zvah% z^^1MK$o`_|7xR8`_U!zhANZf^|L3uv9slXAKi&4z-gA2We;<1K zwx{b)AN$cAKbrreX+LT{wfBcRemL;M`9D1SgF`1XCl{PN^VGqoc0J`hHSpBJr%rwU z==X2`e*ODPzkl}0$DSO2a`?&XzqkB*i@$gFyNAEq|J?=OJ$d}l@qNb&$M=4#|62>c z_1F`4JW+U}=ZUk&9zJ&V@y8y&`|*8`XCFWH%>&=u_RaO*?EdDguigFVt&gsMwE599 zM~@!8{pil414ox0op$uGM-Du4{Ugnf%zb3fSL|GfF<%{=ee%>6URXD*%j;EY>m?3huQ zv1!Kf>9&*SUA)z4Pxq@%h7_zxDIZ=U0Ay{^!r$v-h3__w;;j&gV}3#~pX=y=%u^OFwhs z(|hln`>E5PJaDN06ASVUoVV|K+krn?e#^c$kMAgKAFp3u-Lq|9 z`Sf_bc<6?Og@a=QTaM-z|tzW$M(7?UU7E$k;@NupX!|3v9E1ks;Bj6%WX>sEdiw>#FIg~e+8^Bd;_Td>7o9o(!8yfeENdCKe9P)v z+0(ZOe*OggL;m{{bYBWtPlf9j>@2=F!d^s=STn;R&uhDDF?H_cKK6x(yY37bMqj+a z01$-mN(v+48Jf=XE3Bvjw|Lm_O@SOX7^m-thFT0w(+&SeZH8Lv9`s8-@?M)T;C@m1 zz|mGHCc&_!8+qv9V8J*&sYB0r=ISBW7dG~~Fg}*G1M6AMA_%KG{%NkBFg`jeV%JGl zEAaFP)sx0EiLB5_1S=g>czkE9>6LX2t!C}Vx)<&oV#P?9!2b5w=wqofE(qHOXAD9U z*xHrX>`Ay{AqNy5tj z7pf%zWD3X60{s2Eb^H)fG{=Uv7p@P?Na1>w@-qBasC~JcT15RS=!CBD3P&m_Q8-Sn zW@5Cc5Tot4qkU6KpVMA_N{1|cMuQDdaHu}V~v65 zB% z^x06qhbtJtR39apy-{2Svo~6lo4rwzpIba^{wY=T)sn1Q5^R2M`q5q`-j3M@7@==^Ch&Q)j-L`HRg{hQjFe6n zieROqCNzG*dz%c;B>b(dqd+G5NW3TtF%6rYfsZ;6>Z35K5QYZm$aIFN%TQ5t?+4E% zHWm`cU_MG#PxK>JNk4QE*vR6F7VCNqUlhsCKvRe(?c%0w*1#hs4&(OXfnX-qVI4n2 z6pVhvpI1aOi`G)(k$G=|GU9#+or)f(*Pl+tVjmNI-4EZZnXDUH7fRl)4aFZNASQm) zx@=0f@+Nfitb5>#9Q2pf0ZSCd($E^Hh%l)I8Mgfmpcj=iB3ED=11$+w{GhR(VZ7TD z=|=+*hp{$6>|JXi-1?xFvus2e!Y&bX=#q=Xuu*2#d!qerWL4YRDZA(hP=i@Kt>JC! z@fGIrF~Nfe7q`;<5HJZ|N!FOKsRg%3g!hSJYYw%+9V1a;F)S9Pgg2UZ4BR*dOwhw) z9ncl7!4n;jzlWu zYgvb)eW#o?>RK!)p6=yQY$$m=W zV~v?>>DSFRdZKia&R!{cw=#7s9v6Kq+$-ds0R5imPdoc~Y2m_|JdXpPdA6*-((#QU ztPCJEq>4R^`Wg$!KKocEi<0ba)^^{KSUJWY*7Av%Go;MDdi%57(IKT*)=Nx#G(SHB zl?wR$neMpw{QS)DkrB#0iN@{7!puM!?(+G;aKFbIL(VJ?Fn=Y@l!kHnc^TkB%LHBz zF*RNZm)KZvC2Xkk$ll_Q z7BUoEqWjBP2oo5qMfj{>Mh1Aexe4N{IqUUmL$>;bu`@x3XSh_1e!s`MA`@DHO?)(T zVqleZe3lfE$$TJy5w@p9%*IqV>?kyG3&!n+ph=mjAfpf1c!Wj3;al*OiY73za&&h9bD1?6VxE_Zy2Fv{ezjG6kCPonTQ&x6HZQ# z0>>mUGWSb+ZDLsEoMB8OF-rLSR^lgx#=={q67Q%Iwn=E2uoYTQCG=L*g1|R9ysQOR z!qacgSXS0Gpgo%;`)z1%5?%? z)gR-0TLS)9WSJ;PjoD>X^D~qhNdn4~ti6#xy+tz}R}jR*vToLiKmE&PWcsGv>%#cx zG@+l5v1bou6bq5yWqnQd&!KT;115o098mt==!1n>2RJxCDnBnBTzKJzd3}Dt6tfA< z=urCz=Aw@U*N#7`gRe)zJ^ar!{1rwO$}a(U#vMKYp1>~&d_teq>1ROz1%?nukacyn zxG;dJzYiyX)6Y_0m+s;%>EpOr0@p_|^8kazbq?be4;x-H3dHt_P#@O_&d*LCoO_mv z-fBh{YP5$aj4YT}EL@uFY@(;*FmZg$@bqSD&KO({m37mIC_#r6Wm(&`eVx06E9Ykj z4&P5(Wv@9&(=(WNXygOTr&^V7k`wx7_s+C;HFRw!w=U>F|*JZ$R;fn|zE%17beCKllP z_F_;iY3=KvV8Z(`gj^>6I)&Q9ob@i0C*cu>X*r@-*y?Iipy zYcuP%Q2!LjMjs382q79qOttry&^E(}LYNsKBS&c6cu%Gz%rd|!5kL(*V&Wh}odtKS z+wh;#ELH+Vf8j%5LgsSul)^JH)`~Ez)Uha8eXv&OejT+KN#sNNa!keWT+B5??J5~C zF?$S)7i4H)T>XNAzaiVSL{`T7k*us3_a6zbn7CLaLzX(Q2o?W>@kx2c#K}cAxMiU& zx0(7T4Aalj7-3^HXxzY!tc+2y>d7oYy-7tj)&$nMfzM)$4AvwB=jUf+pdrN1a5D#i z;^PntgSWF!)>M}D5fz{10rIhn1&xFOn1@af;K4C==!gYBb{iO#pM{|=2nshB07`Hw zxk9!`yRl_e_5BbBOv*JTP^X%!yBDO(Iuzy|?#_99BC~kNV)Z8>1_S@EaL*eH`o%r7 zIGT^8oS3nbt6;(-W{wH5f@2U798KFTEV_d>__C^RVlCln-4KndsZH$4`~;v#Wdp~3%SuDW9* zLndWvS?@Q9vrtjKtIs!Yi@0V_-M3Rz!nWtSSswa(NQqL8o7bayyD=(i*w1~^7GQhg_din!f+P{A61N;gVG}8qJ{=8v2X~kUfV5s8&xPs2|o>d zWbu(QcDJwH$X=DAoZxqDiWG9qh_l&tHWNTp<4G*rW{IZ`CvL2?c4gfr4W zgl7;8%Ope)GSxsI|EI9nD~OFY5}N&&g@-a=Sb*FqVNj7AO)(Os#X`mNFu*~gepFF$ zO%>W}v${{BiV9+&7n@go0Pvt9! zg-Cj!;&@3*saK4a;N>J+A0mMl5ZgfuEhG_OogaIQk%^!e6ih*DJZtSh>kx9|C2oHq zJf!ecIu`vdX>ndqvOR0CP^-JQvrBq_uZz7@f2BiBlV@Na7lT zGkI7@qzl5}gSlGAaog(7H85Yu%=uVj+&W1$%Am39M01a$=|=AUBwn2E63smhc9iFn z2l_H^1D6`O`+XHVO9b<{xM_RG4|i}ML~vz16UK=m+g&N41CxD!=4N*K666v=ErAxRbhm}q|v3{Xn95M3QGQa}s-3=LxN znCb6&3AB%zqy(A=Imf6~E!J`d5vf#>`a+YgDba6e&8(q_aVENMQZZ9hmuhHbu+YF* zMY$?IDN|k-e$mDk1|(l4UYKdkgryJGB;10EWj(Gn-|(6yighf=lJyUUK9=1Ft*(gN zO|eI;8i+znJCK$T%ld`h9K>s2RXN;LZK|upiHg@m4I`TInu}jwVVvV(=2jP2N5Ywo zz?GM!%3}s@Y!wm7R|4n411o_ADhw9Eb?{4wR|m;j32Ts8&Iwl_l6`#i4V{$CQtme# z3q0U*&QpLGH)%rZZa~d(H^uH-MPWTeSfatqwI@$1yuWYi_vOne41X+@tME2eI366t zYgjq4-mMVBtMfBMS6`LI zA`Ftzjo5;?nPEd+hvk?lPG$Gdh%T5PyVou}&revAd>a0X%h2IkQd`G=`6k2R95mF_ zm>t8cb=4EfM*|O@S7L75I~ZZDW_=9zf4PcO7;59Aa5QsBq}4Da2@h=?ZuSOqjmQgO z)?q3N;S~oLo>z0J9?QB;-Cto#>T*y1p zO8&<`H8)dA2p0{-h_h6p9j#r9L^t7#G!P*#k0!PR%Ow0MbBZt*C-2?LjVp+aHWD@m zGixS{L&iiO2~`T>sXbpH?L_bdvQj`*u8e1^Xq)OpcC0LfO717?fZ7l&eJa}b7_f~4 zw!Vs?)sLM5u?BNZ2s4kUi>eUJ!`BhWdxh zqP0+mu#KbWMz+-{g6r|s#*5=uSL3d&<>5vtnL>}s;xnwai*}4fZnpc z80`l`8JfbQ$FCSlGv)aLeUY0sHX%-DyaJcJF#oVnB8s6lLL8xb?q%~Nn*vzYn{|C( zFgHVBG?YiWGmi~0EGe%9aCyOnwvTHB<}rgg7g^8Jhy@8luRRe#clP3TR5s;^W*M!+ z)rD#eUO>#15!dnZWMRDE-u^B;R>i(F;C(^IR9Ja)A<;GIFHHjSEWEYH&&51y!(0rr zqJVEGthW^(!C%Za~=bowH&V$z6;s=+vB2-g_{6-3}w3de7Mi`&whQ( zw1DAhLBq_~$1*xl@CuOYaHCinp!8($GhWPy4p{gvAtd#R5ojKP<70pa=A<60hIuZ; zLpSUAPBzaC<{1~Ge?Dr^tU{gr{0#7+X{1+SnK7uesD#Tqw0s(wMtMj==8WNhLOE$E zNSxYv(DaoQ%1H|oKcDju1xCGK1G4v$y^=ye?U6l(TIlFws~#hrM_av8BVmlR5aG#) z$C;b1Vm@kqE0~P|8Zxg8jruI>b{*e^@kKLE46P7=X}Pg5r~=m*Sc7A&7*KjVvWT~pt!gfTMFo`(f-*31HUh3U&=9;Jbu2|C2YXEQ>7@ipx?aGL~0B1CslOpSpC z_ZA;cEI|ckFiTUEUJDs_KBPb&n`kuaoILFBui9DL+a2po)knz3Y_n%WjwJdH-OzheqSHf~)?Cm}Blplt`no4Fou>K&~|4pz5`5JAZ$yU=hp!pRot0o2@3>Z3f zRFOCpb$r&UCKZ%yjj#w`XN0-dFCt@hotBbGnTmS&HsVLeC;FA}iJ012@E1l*ZDn{# zC!^;8I(lPQipzRIvb72oW!6+~@{v@RnTeOWHNzjlGzL;GG3*B|^T1Z8;y8nIu;^b% zF2Xh`DRVR20eNGo1T%H(NSM+(aL4 zpL0Vt9rF*#mJtp@oP|* zOz}+uIYu9e;%ZsvndOTxW3sYhkd#pD&CA#(hSoQuH;b?Y9Z#)xJ-l3)kK*yK8^zAa=Aje)Q~`zc||NP zG8E&%hx3n(UnNiN>;2YjJ>QOMqar4DU2s=TaA-xyWlR%7>N(3~`ikFFU9Rd_<zRI#4UrE?V3a z)K2V|vPMgyQW7bN)&=tyTE_Z8%rQpjd5r?50KewDI7F%FfLyMKj^H_gM~t2w{Zst> z%BwF5jMtgOYVcxUu6Vcle1g*$zivtTkI7P~Do3MU6R=V#ba%{HVF}2Ov~hWr=WB!) zFK=Mf+=UTh>&aY=^$NA|L0!Pq;pg%QMtxkV4xEq}H4zohFL|2u8Vo#;XAGR)Y98r= z_y>0r+r1_}9RrSJo+NO*!o&eLS9AkzKkpd08&@}Z+mF$$!x>u^xzkE>E`S@7TiQ$z zt=ON<=fFW2ajVIk9&W#=pizOZQAZG09En0h7Bb<-hS|Op{f3BhRF8(utL6e1o_hc3y>s7p=bl}Ex?}hHKOWz;{~fz`-tpE`x14xQ-_Vf_ z!|Ttk-E{S_HQTPbvp==^(5h$puJ1k4GyjU)UORvJyvtX1-`aV1W-!*Ojw0YKN{-0&NA9}E5^{wpby9jT!bSf?I-zCuz?YrM(s8STlOd6FVw} zv8^@xl3cT$>h5m66#d(6_m?Irg{ousmMatGO11{2T5P+gShU@*SM7>Zg|X7f!$S2- z02{?ZWaaI(SGBy{!`$Z-C$<&@q?VPnW(-$RjiAsts?nN4$+4H&_GK&VMJtysTZpD8s{ga=8-|S#_r72)7bREQ+?Q%?AhhHsZd_zvw%)qT(+9z@rChPE zDU{mM42?ZW)RO9I0kv4IO$~bKYP&Su+L~dyA1rUFZO>K&{mhx&yKJPVlG|FCgad?N z1{0O?SS3529ogWFuN}R?$RVSQWVM`%r z*UD(Ex|pqjtnuW*f=>HOPHlCqHqpB^TPit47k68x%ZIy_;ogviF199Ht-0;7vQjBm zT*!H60#=B#H7Eb8o;SuYPYsz+U%;6E0^-{SEe)5+MTvX zchsCJbi2F*R@TX>_m)PU3cP*7`_SWpAV~;vc$u5)%wE|q{ zbTjJURM0xG_3hp^y9R^Ci?-I3*n5Od3PX)kbJmrs1+))Gp_fWT^$o3cJ$xFv>FPqMw#;6g zZtKX{YhgI86kz-tcWPV9d3&f4B`Uhnz0a)Dn;oBk;j+55TrcMB@oX)()y{#{+vP2G zwv=G&U}Q34Xa!bB4-rL);R( zD1PhC+ZUePN}Xa3t#9j6_n0Er{_b)whT-f zYV}IV2E&2w54g9~OF0zW1MDpo0qUAEiomFA7ym1^(y zWTjKx_PR=85|m?CNdUgKGzbngS3`mC80akT!6`Vz<3mw-Xmi{UFUkB)b7wqS3#fcxlso8( zO&H-?JeSlQ$vi&r(0C9@n9$~B(1Nmc($ey|N~Vn)Ioi3ABbDk(iwj$#H#ryQ55=VW z7mhf+<{($o(;&el<}@BR+948Pc@|h-XKU)IbUSNW>`c07!xLw6F19tqS~2r1xLMu( zDd-ty5)pEZJyEQW72u60+T2EQf^kfk0`v9Sn_Fw^>}sc}Qrz4fG(o$ez>u zNZrQ8{hjT;i9BodbJ?D&$=b6QW_hihSRA;*I9E=4o(GTY6j8`mOUjZ=GWrC(mY7Md zOTLeCc9dSy^%HvJcSG`e*k2hP}*~Td{rJ<8qw;P{}G04_r`!J3+X;VC>u_ojt zyjJF7k5sC?lQ!#b&zKZHN8vUqjXg-D$r}3CHO}n#ZHzPH#~;Yo!*+aFhr($`_O~y} zG|NT7xM{Y}tFs+8Vl$%#U(HV-Vbhn8d4xG7znB1L0nSDL9e>XaYg_yVD*IF1k@2kN z2|C)iW){{TAx%IN1H^ax8u?soV_3(HnI~Y4%HONPh{C02BvWA0-j?ZE8+Wg->u(UI zO1X#*K)D;A+ZBRLRu8T)i8AR&zA%%VmaK9G+$|U#D$?);HGJ72xU$B9Sz5We0(LpO z>-Ro^S61pUaVKK^Qq!=9G-~r>5Cc+A_hZ6dN3=?XgG9@MYs-3#H6zu@@0jc0wo|3M z)4qgm3RVj7auJy*o{RRoB|-be0XFT|RUyJQvDr5m+brJN%aFMCnu5Kx{3hkNI|%4r zYj@w2yT_Z#BP$WfibGp)=}4d zPbti9-)X&P9VNtE;16I2Eq8K>-zVMK+U1*yp`DoLyg!Ja2d4c1?uu{|{O+*s4xs*B zASONm_UW6&=j1XIhR!w8ZWvT~pYW{r!a1{3om?&e7Mi?iL&~4=@h?Q2i{nxJIm4># zIGj#q`}FCbzS*Hk-z%HW4O5-mo|F`~Pa%_TrE>&XQtup{7slVGPa73a3+Z3ttk7)! zZ{EgfZeGam)9>i~ZCrl1R>Q!?wv#_Qv0etlfn_tM(I4hG5xr*kp>h@YRPjY`8``nNy& zHEZV>;}gH%g|p?(Zl5jt!_0HimgBcG@y`xjhhTsEB2BY)Hn!*X4Ck{m;yyNCAoAO= zk1hUug0(9SHrbzIw0W7q{ZHn$+`*k%;eB>jS1aADMqIWpWpPg0a{M(2)~I~2$%wLO z)10= z&!j(HWjuGm`EiB>C#?OqKza9)piR5l7i%=;$B8^FZ7Qzum@~VR-vtQyS~g=zw|4t> zal_4aVmkMn^o{ZJxvZDafR+*b5v@rdHXj4|xoIbN2VQrVZ`$&^csBHoOL`8tr&25A z+?!7Dz8dy-BJu3w#$zA6vCW{kuA@sU!NL`9S)JX{Kc0mZFZpdl={C5Kl;u14bE55; zRyNfA_U!FQAa-Vb3KjvgaA_&&V$Wsl%-^TN-<{d8{{LICPdtIxnKr5rJ5yp(vGW^^ zV;$D%e6e#|yGra#>%kSKu`~I|x2MJXBE1fb0dT!nTktl7o_t>I>as=|WOo3ZO61Nf z@}pup-N|ya*n^3y+2>*|FM-&dHb0Hs>EE$q_qLdOTf|OwDSb!IMlA$9ETE;nBy4da#Lxpp~17W*=(w{jcrcE4eg)goQv&TkG-b60j{VY z#ivwruFkIV=fU`SC){ZETbR#(>r~je7c;|?7_Jwf#-8(bvc_xwznpHoHxX_~ z2-t$32@dUgD~@|}vdUf2gY_GnS{d!lMHe&$$b#MRUZfSYdnBN|dH22XY{DLHs%CP`(LaU|AH}wkzBhKNQFzzH~0K z79)9bNj*Nkokc2BtY zM7kc#w}n2*)B`V+I9FF!Ngw5**)!n|D1P;@E#u$B``d80Z2bG=NPj^m^K)drMGl3C zJ;^`IHnYhX^K5Q!9G_50rQ3Xm0)IEp4tp<;t|h`lbm*xBzTN3O+x>us-s7?F2{oQ) zr@Eji+33qJ1hsXx`F2G9Zk`QmJ3((GhO{}EXA4dKT+Xvoumr-IoIkq{``KxHh2t&b zwZEj^x=dmY++c&=)CWBai7b>FqI3@Yo0v~}TkIIpJtuFw&+Jsnr9v*tuWPy=!g<#m z#8>Du+481!&9oUxJ1!a}kvIB!H?FuE-LRbM?j2l#mlHa;`H(nMD_k2rITIP8w^Mtw zqfXALWFaGvJXY=wRuOA%C>BESBr+5vfImtg@V3NcCmGPb>JaJih6ME<`i(Wn?=8R`AY3@Za(LQDgnV5x=ne1qet|qJ-#F(GU!3=??Ijhj z8S66L#-HWj7V}~0-Zwt@gVL8rynFrzV_Ote=7o*eHqt7q1Wvw?m#s69oHdppcIA4g z*i0+;0#<;D3Qyk606U*=d zD3>{LXH)DG8oB%CQ&D}Q72dh@^YFEAdzZo);t(FBg$E1pbSZxIm-kmu(mOihNe^h~ zcGw6*rheeE_=5or`##al;KDsGmw0EpU_GQJ>5BG8U8O}vByXx-nZFu*amC<`6zv=dK#@K$ib!*nRuF3Eh z;A^d1du*n5?K%*7sv|HHvq2&M;=W@~7BaoM#g%}cVKiy zzL{+@rX~@G-x51EVly%{XPoebN9;q^-+tZN4Bdps+6?Y6@%*^|CHn?H9u;R?VZ2v| zjoElU&Xng3o6l*`Kw32j*0U5fH1;jOdb+vAtANZ+4+-GCqQ2Zvq?Al6w~P}YWhj&j ziBHIPc=?v~#IzYU{0CE?Y$;z}HfJ{a3m!SO7kTU74QC6y%8UeUgw5ybi!d{ixB%{U zwvyXgm@F&v7B|y)Qd*FT&i-Nf7h!C*R zMH^$g4dxlQpD1xQQo4jQ-8mxDHkJ|P9HW?8)>Tce&kbVa#W3+D*7sncAMcN^rPYwvo%;sQFizVi=3)j z)~|#Iaw^#hQw&rVR~c=_tIDc-8SWpU?Z|3R<~72k+^2A_so~4(VCIf=?*0^%uB8Dj zu~Y}N7a-XLN}v)j8sFG#R%<2kDz!J<@T%yj%(=tZGfg`7G_b^e+YN8|eNZ^+^uk*s zWd!gZbSjfh#pA6q?yKVV^NxYL4i|Zeo0es!DeaX3XahJViV-V-j4S`HGRJHH+c>HS z+toIw&Gn$h+DIV+Yg8xPg`I@J`Z*?pF>F!;Hhho59FjGk=hXdnhrFx1bREk&{QSAz z%mnBwTbZkt!d1BPmV%jwj<11wmg#}x4d*r`nL7zL(t(M~VJb!B4bE7hT7zc*Ri~7} z>@hnxafl@`L2=qnFup+MhD|6iM>R_xawFHIuvUFwt#3v9Wb}k$K5K7xM){K<`l?5uE!?&p5k#;uW?3YHUoZpSES$O zltpIF5N)ij=J4XJQ{f$moB0o$8wN2O$d>9`+|6>ZV^9Vat3?Q@)p=>@RH!76i>qjK z9H;`0V`v@1?GRK!^i|k1Tp6iWCNXPh(#>!YMN!ewa(J+l^0-Vw&(T+TAQvrVV=g3% ztk`SAyMhu&bBs)FSYtGI?rS%AG!{*2`#1K`OVb)&T!)F33W`QfBtJtLDz}^(CrwOZ zzXTCbWv^SRmr_U@ux+9T+pWAD!hm8Rh8_xlLVLmMhb{vREI}ZvwhO(ign5gS_@uN7#%@JeL#B?AzdGR&0Diz1%kU$ zK!MVgWFAuVFvEb-e&085#%po(0q5?Xl}d)!;b2?vy0#Q8Qp z#W1jup|x8%`a zIH14RE7>lYiW`qhWbp%Ga$S2EC|t<~_YulMSuw!_i&|fxD8O_ZE3#3oFZ$Oqy#?Ne z1`5zc7zZ^~G;q-Dox$Z*<-0jNlEjV}UluC$Q8vrc9bmkIoNK|=h#1mjCDrQhmDF}e z(xTRhnKL#x*}M&VF6)lH%Ns`UbSKCChRM&)!5o`b)zVQt^F!Jnc?eXx|B2>!-(poHL0f&0o{_;@9({cSIo z^UWhG3Z=_~T7j>2c}s13w&IMe%T{yQqCJ?a6eem+5#}72!cf(0I&lFN_YM;k`#vBA z-0N$`C*Y7L+*4YGPBQ5f%M)-i7cRzt0Iq8HmvSShL!fr@eR);3TEm-d>^Afr$yaX3 z6;VeU$v2k1VKVr$b)_*dMvST&Bz~P6q(esv`ofjN{UM(Yjizr5D%sn+E}OeC6Zr8e z^zq1={uMH{mqv~oV_-lbOFqgsHRtF}0PK7~nmW|}7YM{YtH&pZP zjVB{8hJt;kTU$H)?F3igj-lopk+=B(oUzH4#wMKXjUy|w)g5bKc?Jy-3SWmt8ZVb@ zXnWWLvV#_IA>s?qigoZ0Mdv4_=8>vv(j(w?-3e@=v;{6{f;0M~FykLV;o;><<)Al( ze=+h4as=*Zpn;>}U4{={j+~}NYO99Bqtd12y~ut9u|ntiV!i`U=O|pp#G9LW;#$1B zyN&Mz%(MlZK}og2P3*#5IsW@UzhQdro8*N_E%9*@-vejd8C0W}7|G=`9q@uXJ7Lqw z-!#$z)e~wbUU(REzSsE9lWzX3I~;yyXMIv#oxZcs?9oPKUoe5vIcpVlF37yiP%~t! zXqTy%#v@Iqa0o?OnoRO5{IQccvorjAme78lrczz(nhJbBiKr=)b8JEF9RKW~o5-iD z1p_EAGD36v^pL^Cjf?Ed)*GG4P3pX1l6}iW|4GV!HqR-;Jrlj0jdg|@NsvN!fUPVaPKN}N#J3 zFR+Zy2qF&vtGaO4k(bm$XL;M&6|PB=6(+~f=trVMsFNwEUs|d|MH;??nJl?Ee83? zT};Qod8w-~3JZmYIJb~iyan)puQ;kP-;wBRuI{btBRQz{F$X*M+PkC8_5%MXS-wO-pB;#jU#<5K% z1*vhCKk97tI!0G}cS=kjiO=0Xr+LQT-N9^w8FP^+JW=3FW;fiy9RGfJx_gc9sF3)| zvTbd&kGknax|$T_Kbnp6hV*VRf{RG^Ob4$g_?}4RmV&0@I#Q~m05EL|*}h;F7_cwJ z7yNY;)@Irj?tBksK{AZw3tEypRGz{OmMl#$CgHE2t8wD(vGX2uoZ#7ke&|Ch;YjX{|<=m|WEFcVOhbUh;)qVFJ zQ==2ElQt-(v6I3c)%f?EOWTG<>f*hzzPD^u`=O36N~+H$5&yTgbPMr+nr&6kdv7NG znzpy$IqE)K9bHegjRe_l{I>!)eQ*}zQRT6Jl+Q5kGo5Mf*(?5e&s3(fEiJ4pclqA? zh{B|5V@cV~RQHLf`WnyA+B@MQUp7DEFK6#+ZS}pl>6@Ra>Nu!B!&~n$_nooRZQ=;Y z^=EC$Ql8G-*Y8+AZsY%JxiF=}a)2BeuF2SO5$();9u-eb=_fRi%C90t z>BBhAhbJ68Uo7luZ|iIqgOd*W+%0y+*4Eg%@Mbq7SOp%zH!lxrj~kQ3fX@@b$v65^ z3p=XG)>@M2L-F6Yl;r}k0?8*V8t|!6d5>mNW7xAjX1)jB=foFT`yTcplMSXAH((8k z4ACKj-eS4xtgkzj9cs^lkr$==R*(}T1W8|^;^fdBF)K^8iZhm#LTTqlG1-iR6bhMV z&>NEQTPtvmPpqrLeqZ?u$?&owa}jMV9o*AddOqvexN{Uf-LXne4JPdN8+44f_eD>=G9LkPVf2e@&7*a^s%Qm9e?=S2fn@S z+v~sG{q4KHRsYt&w~jn<#}iARnD@lVV~392c5K_RmETodQ8 z>T7p@ZO_-TU+ezb%&(nzblaoNkKS?g)}zZGx$VotUtaj-ga5hbKj;7F!w=p5Q2n9d zhngRn_0awYGY>9!@bs6CeCgx^M;^HCf#C<1K5*jxyY8>wKXCud`yW1X=aKbCx{u5~ zGUp4Y?z{WG{`*q*&Aji};kyp+J$(J)<%j1UK63BAdzxb5HX< z19w06Ip=e?e0tNJ(>`_Rll4RMKXLY758ToG@$P>)cCh(l+dg{oA7}oU%L0?dyl+#_`P%9yJt^*Pye2Id-lI)(|b<+>6zVk@7}+A z_wMU=XLe89z31JB-nH{x*?0B7Yr(tD?7Dl`?YlC&PQ7#6J2$=a_&bigWB46&-m(Af zyWc+Z?WcC$y>rjb@twmvn|Gdh>(RGvdTY;HkKc0lEd#gAyk*Z@>Tj9$mf@Qh-n?+f zshjFI4d1lTdB%j4yh<%dhRl@^w!l}?WDAFq!Oj4!`&){T2_*mlFF8|L0{qHtH? zmcr?+>zxJ8t@$1KY<_P<7> zbZm2Bb7u3AH{Slny>IM)YBSY?%ud?$}&_U4Qr5J!==Qow@eZ)d#NLarOGEw+$>GII`yUHG9|euUW9>%vC$D8o27j z>kq&F;Om{&cfWq_>u>8X^gpxu*y_WpZ&|&5b@S>&SMI!W-j!!o9b2_;Rbf@nss~rz zx-zwL?#i=$cl7P*yS{H`@53vuU$K0};uXhw?&#UwGq30P6+5ojbVbhkhmw z^}1(XyYIF2*IxhHd9OXW{O;w4UbFKx^Imi2@?)3pyS#9D&*jrD-`_RfHM8qP=YyTQ zIyZHuI!||;YQM96W&7gxIqiqrZf)Dv_DuRnI-BlEH>dA-`j)4!e|qK9&8Lq4@Zb;k z{4o2&`9D1UgWG>l|G~5$-0{@jr<|vDf4}hkV^1D_^0p_NpFEyAl-iS;mpa~BZyj!3 z-g@S;BbV*JZ0TiZTXwe;TGqGBYB{#_(9)izbC&MEbmygoOBY^x<_{nI!`-hQe)X~D zyP6L)U*DW+p4GhXlI$gCmKi?&_Vf6>uJ`xm7a&0TbM;T;QiExdl=PJ6(9_?36O^43?bf92v=KJ$v* zuNZ#Ci3Nuj99-Zm=w2{)!EG-uy!`Bik6n28g*z@BxNz}>cf9PDm(6|I>G_Y%-#g!# zzkGi7rAuFW_<{o$?73j&1@kXB{gPW=(*Kgv^B$ge=e%w6R?b^6@A}_w{{2HQ-uL2L zUYvRHtQQ}jJ3hC2?!zy-<3+c=X#I;8zv!74?tbC$3s0T@;Q5EnA3wk6{Q2k4nX~i- zXJ_x9y>oV9_QKg`W<5CT^z-g|-lpeuKX2jl9y{;gdArUVm^pvugEJ1!*f(Qf#=;qA zryrWWbK1bPlhzUI4tU*jxi!z4_2jV=x1Y$K=sq$3#DVYa`re%Ho%!yO@9z6<;k(a# z=fromeW&?5&m2E`{PAB{*4vvP4wr};T;OE@M=r8==%gE0sXHd%Te*QXZVCPH= z?$x!d?a-o&0O-%*|L~_vyNRQr2LB{{u!EzaxEIlG=4hzd5$(+!4Me!Kw{W!c2<;Y* z_B=xSBaZfbLVGJmn?-1E<7l%9Z6`;20nq+0U_rfg5&Vwo_Irf(4vq$~y!*X(aQv=IY{`xB1#2ZZ*g9Bm$GMOgN7vHd|3wvYRsO=w7u^m_{l?StI+77^NCaI}kn_8Gv3^i9hme}rgA-;{>j6QUt~Q`*IZ z_92en5<Y84njkALTR0ZhT5Fcx(E%mFQs)88frI6TSjQ8-6-vH`2BOF-6-ufgofIK(v}k% zvJ*;sEukShp|sZ#8nP2gyMoYA+frH&p&>h=v=xMg?1a*K2@Tl^rS-w@_W)*OCzQ65 z(2$)_+A2arc0y@a5*o4-N?T26Hb?6xw1ph)^@O&Fqg_R4h!^Fz27doM;6rvoX#<3Y z?1a*;CNyLxl(v@8keyK4IzmHsLTT#>4cQ5$Z6GvcCzLiwXvj_|Z3uq97w{oFp|oK_ zLv})G8wm~B38h^_Xvj_|?OH-Zc0y^J2o2c@rCmp8$WAEj4TOg5gwjR`4cQ5$T@SzC z2bhtaP}&;_4cQ5$Z6-8iCzSRkLPK^!X<0%;c0y^Rgof;d(sG1`?1a+tgof;d(j55x z3xE&V38ifzG-M}~Hb!X3PAF|Fpllnh=w6_u(vJ*;s8=)aPp|qWZhU|pW-cD%9PAKgigof;d(%wmE$WAD2 z7ySMJ;6rvoY40L5WG9sN$ApILgwozkXm8?Zy9q7J(f)+cke$%7e@bXMj`kixLv}*H zw+DXz65vC2LTT?MG-M}~_Gg5K?1a+ZM`*}SC~YsHAv>Y8KPNO~CzSSnLPK^!X&)do zWG9ri4}O0T@F6>)v=0&*vJ*=C3qnJ7LTMi&G-M}~b}OMFJE61>6B@D;O8ZMfLv})G zA0aekCzN&@{QeN&Lv})Ge?@4>PAKiK2@Tl^rTq<|Av>Y8{e*_>gwp;Gp&>h=w7(@Z zWG9sNcZ7!QgwhTW8nP2g`+NBP%YYf#38no5p&>h=w0|VDw{f)F32i4w`zWCyJE3L& ziO}A`(LP3K$WG|@4iXx&6H5DM`2AtPhwOyX{)Nzxolx4x2@Tl^rQJbj$WAEjUkMG_ z38noTp&>h=v`-KkvJ*->L}Y8y9o{1 z38mdbXvj_|?em0&?1a+pB{XCwly;cVkeyK4eenAufDhRTrG0_WkeyK47YXfeINA|H z+t1PNCp2UywCn?f_O~4EON55(gnsWqLPK^!X%E5gM*$zQ6H5C}LPK^!X^(8=C&u0v<9=f7 z12OI=#y%9|eq!t+G43bEJ{IGCV(b(8{#A;P`-!nn#qL%1nb>{GJ{RMDV)p$)>;Yw8 zig7R821xnzld=^G4?Bc|2oCT{lwUBV%$%R{VvA+#MmEV+)s@CDaQT8*k5AY zPmKL7#{IAbXR(-c!~`jQfe%cS*4ilr1I3{lsk7SB(3Kv8BbhpBP(4 zjQfePWyQFk80$y&7JYF)F}9o-_Y-5wi*Y|Owt^V<6J!0wxStqXQH=YEv6aNQpBP(N zjQfePRm8ZT7+aO>ZTjMVVr(@r?kC1p7vp|nYz;B)C&tzk<9=dnEivvV#-d`}PmHZC z#{I)mjBQHazfWJ> zPmFCQ#{I89LpBUR! zjQfeP7=8ZuxStqn7vp|nEGfqQ#8`(I_Y-5g)Ayg#7xxom zDKYLR#?oTkPmFbnaX&GZ5#xShtV@jhiLtq2+)s?n6XSkjY`z%x6JvXbaX&G(Cw>1V zeQ`fAwwD;4qO$+v^W5HI+;_}&`_T7a(HHj}WBZE9t`XjMKQZo4X1o3A`yc3w+orJt z#JFu5J5Y?xNRC+AjWOe*ui4lHjN!3#%)NjU6V&ZPVD{V%#>39U;bT z)7X(>+%}CJCB|*j*wJF#HjN!4#%3ogl_-)7Xh(+%}D! zB*tyi*vVqtHjSMk#%3ogv0;)7Y6}+%}D!CB|*j*x6#- zHjSMl#%3T_DD7)7XV#+%}C}B*tyi*u`SpHjP~(#%3T_MJ8)7X__+%}C}CB|*j*wtd(HjP~)#%3-6qCu z)7b4|+%}EfLEryMU)(m0-6_Ux)7V{N+%}EfEyiur*gaz0HjUjY#%3JxJgGMqk`EjXfmBZPVDpV%#>3JtD?!)7Yb8+%}CpCdO^k*yCc{HjO3Juk*>)7T4Q+%}E9 zNZtftCjlChpZPVDBV%#>3 zy+z;uLtorBjlC_#ZPVC0V%#>3y(`9T)7X1r+%}E9FUD=t*au?VHjRBK#%LZ5sPTjN7KMPsO-x8v9I)+orM4#kg%6`$CM{rm-)@xNREyioWkf@p0QU z_O%$dO=I7PaoaTZtr)jWW8aB!+cfsQ7`IJhKZtSLH1?wyw@qU|(f12ceB3sT{Vc|9 z)7UR!+%}Ez_{IBj+cd`G0~@zZW85d%xNREae!#|U)7YP4+%}E+i}}8_O}?f zO=H|fc{^^K#<*RuaoaS;$AXR9rZJ9#joYR%{+YkHZ5rz>#%3^%3K?X>3U`ZkxuI663aMtS=eI!)?>p(qh~;jV&X_ZPVDY zV%#>3^%LW^X>2($ZkxuI7vr{RYy~lHo5uQ+aoup+G`6A`w@qU!iE-OBwz3$vO=GKw zaoaSusu;ITW2=dA+cdVi7`IJhYmo7A;ag2))nJ+X>2|E-n1EG>x*&QG&WF-+k&w{VqE{m28(f-jcp*t`54gywrOk=F>ag2%Eh>C8mkcFwrQ+VjN7KMDlu-G#;V1*Z5peg z?>RPZo5pIzxNRD%6XUjNtX_=Urm-Pn+%}C372~#PY*R6Ao5nU134Hx6KX>5cTw@qUs#kg%68zshV)7WVGo{t%~O=DxkxNRC6 zE5>cp*f=q6o5seAaoaSul^C~8V_S=H+cY*ojN7KMiS#|UA8wn*wh>#ArVcC97q8Dx z665x2wwo-rlG<)tG2YMYJ4KA!wb^&7*eYtfX=1A?n@+}UncKhFcZL|Ze`DK;t)}+f zUX1&M*=`3h?i0p#6kA>GyOS9A6SG}|821xnJJa{vhZd%N*P}14t6ju;E1M~{h_YS9 z7F8A#TTEG_*y75X#FkLjEY?R^oQ(VPlFDX@Ev2kQtgo`!VoNJah%KXRH?d`v%@OOT ztW|6|Wo=|Uwk)r#U2FwqNwNOQI>fl0n!4XzjN7EKlo+>1V`(vNf5tk+xcwQ+h;h3z z)QnrU!RN0pQ_*g$0mhz(M9px9t#2Z?Q{PMMm7ONGg|gGdwp4b8*l=ZMij7cqme@#TXN!$eb`BYzw?`{G zS8R;3^Tfs~J6~*^vJ1q%p3L}izXZKLcmu}R7<7n`i? z3bAdKT`4w2*;Qgwm0c}1P1!YMJa?I{>{_uI%B~aJPTBQh+bg?4YzJjGitVWECb6BA z-7MCi>=rVfNA0ZaR0 zma_ZAT9n-{He1;PVhLpritVQCA+b5i9u{j=_6XV9^wp;9QL%PqkBKFfJucRv>+L7C3c{)x5W-p_72&4^tC|QyJ80` zdr#~TW$%j}s_X-?!<2m}cDS;S#Eww*vDlHyJ|SD5zK&A%so2rVJ`+1e+2>-%D*Hn0 zIAvdo9k1*wu@jViEq0=^Z^#DH*GbC06+2nkcVed~`(Er+Wj~0WrtC+t)0O=sc80Q_ z#m-dri`ZGpekB`3UuP@(P3#<_W?l>I4ozOui>E>QNj*oDge5xYnkU$ksU zezCG%VwWgeNbFK&3yWQ*thd?&o8lWj!tU9D^hv1^p|5xZ8| zl492>TT1MDWqrkNP`0$#jmnl0yGhxyWE)d_H!JHWc8jv*#BNo#yx48ZRuH>gS%0xR zl&vUsr?QpA?ozh0*xkxj5xYm(s$^wUj(e4@CU&2))y3{twuaaP%GMNnP}y2y4=Ia^ zJ*;ePu}72*AlroEdsNvvVvi|XSL|_R>xn&~Y<;mOl?@boO4%T>rm2DyRk+Lnt zK2|nd>=R`p$f_y6PnC@n`%Kv=vCox_7W+ck7_l#vjTQS!**LMUm5mqsM%h+k-zwW$ z>^o%>$ZDt@-z%Fa_Jgu*#C}vZN$e+Olf`~kwyoGN%BG0@s%)y*Z_1{T)lz)FE1NF% zhq4)Be=6Hf>@Q{8i~X%^2eE&Y?I;%Mm0KIxNvxN$2C_PeZy{wni!H2d7qQ;TW{NGM zY*(>GmBqvsQ`RW9xUwd(C6qOj4Wan@D2t0Nsce?mQp#Gy`YM|(wzRT@*fPp?6I)i< z9I<}NTFHh|e9I|o6I)(cyVwfKl4AXpb%?E~YR0R+bi9MOi1=rWD_*$}(cB zDeDqjUD;f*HI&U0TT|J5v9*-#Ar@7(r`X!c_97cb@eNS6x7a$$_7PiG*}h`yDcetM zeP#QL4ODi3*dS#GiVaqF5ZUGw-v-JSh;69sV6lyq9U``|vO~qnlpQ9viL%4R%9R}< zR-x=jvMngSN@YihRVh1KtXkPIVl~Q+6{}TtoLHT*>RPt%FY!V zqwGAfvC7UD8>j37vGK|-6x&MKMPwr>zO9vAEH**eC1MkmT`IPXvdhFKDZ5;3va&10 zwpDhe*c4?~iA_~@HQ8v2d783o#HK5|R&0i{>%_KGcD>m4%5D(bLD`LBJ1V<+P*vOC2ZmE9%Qr0j08u@qmkvU|kh%I+1L zrR+Yj7G?K~%~tk+SVGx@V!J7ONNkR>hsn00_*#`cBG#ttQL%PqkBKFfJucRv>{YRSl)Walud>(0_EYwT*#64i6gxoKTVe+)dt2-vW$%zpq?i{ddspmW zW$%d{qU?RKLzR6Xc9^mc#ST~Yk=PN+J{CJt*(YL0Df^Uc62*M9vd_ehQTDmmvC6&> zJ5Je`V#h1{O6&w>UyGfn>>II@lzmG!nc_QH*>_^6DEnUQRAoPiou=$ZvD20PBzA_f zpT*8p_KVnA%6=u=mf|~G*>7U!DEnRPTxEZVou}+ivGbMvC3b#B6uVB@QexLD>nnDHvZcjtRJM%RP0E%PyIEO3v0IcaM>d1vyH(lpVz(((>>g#Sl5I!v-K%UhvHO&*E_T1NHN+lJwx-yF%GMHl zNLf_uVP$KJJ)&#?+4dCQqsrD1draB7Vvj3ZPwWY0>x(_9Y@pav$_9x&t!%K^Gs-p~ z+mYgXR@sJP&neqT?0IDyi@l(%OzcHvn~1%ntX%A6WffwtD61sfiQ;=zS(Vsp%Bsa) zS5_nThO%0*H}_R3#NJUhl&pc`dso?}V(%&2OzeGS!^A#Nwz=4c%C->u zNZFQRA1fO!_KC6)VxKA-Nwy2c{F$;*VxKD;E%t@7F=AgT8!PsevTJ7p8ZzE?I;><4Ari2bN+lGsnmCX4;7Y+JEkluZ%)RoPUsT`9ibluZ-+ zUD#J9|ZbHw^7Yb9%@pO;hCCbqn?cCi(dCB^zH>kwN}+3sR1DNBj1tSl|Iin30! zIQ_h;vW(bj%DTi>S2kB{4Q2Dh)>JlMY%OJbh((p{DaOx)m^Qf=*(~~bfU>>C)={>P z7(WkT_T5)(J!Sie@qK@@-Tq>Huie-IVtg;#*nwh$l^sOZLO*YyY=IcxXEysDEXMbC zjU6J!_fw4>D#rIFjU6V&_XCX`E>^DW2r<4dXSO?%Y&QMO_ri=FCC2xkj2$h;_k4^U zBgXenj2$b+_biMZC&u>)j2$mluj~XdUavRXok*6TpLvbk*hyl%E^X{&vCWj7BF5{( zX1i0xcum&WX=1z%YV35eEtQ=i#%qseyEDmlqn~-b&)8XFyvAniY_U^w1EzcF^c*f?buh>cfvp%|~Nn0+rIYo(ugJ;T_=V!Vc6>=H4)MmKh;*fz>8 z6XWY*v)$!ld@XA13NgO^Gj^pIUtbx!imZ)(=Ia+@SBp(kc8%C{W!H-FwT0RDIx(Kl z8@pbN=g`J(5Zgi7jbc2PHQU`p)=oe3{L$FWVmxOvc8l1~%5D|od6L=gHZh)?7`t7J z=L5#>5Q{0hQ;g5SX1lw@_`GNAZn7l(%;y?o_lWWMZtPw$9#f6oC&uHLvHQh%>@fC# z8249W4~lUgG4_zy9AyuabA_O2K| zo41PCdt&^2o!RbvF@CPkZ1;f}KL=&<_)zRHwcSTz{Oq9F_h+&%=!>80GkJU>c8J>U zQ!#%2%H;8x7(b_F>~k@Gp34}g&tC_t^tevg_*pQs-B)7#%$Tu%$T-cT$V`0Sh+U?( z`&MiLnJL?MV*IR{N$-2HOO*W}b|jg}<43WJ)pkFLU8HQWMd(=&@`K1szQ54VY<$hM z4mn>#{3>>#+V?jxKISIh-^KVE%*4xoY24 z#JCPjU9Bp1j@oWDF|Gr%-RfezmSM`fhS=F^-!;X~Qnm>hk7HamlU`KpOtszGV!Vc8 z@)#h-8&TWhuUs^vH8mC$#{%DUF|za>@;PA#pbDfHxN5jZMUJ= zT(#XsVqMBM7Rx9r6YEqqoa}9i?-VlA{>sI84a(G2g&40@8LJdKS?yaT#_L>WyJ|6B z4>MLHc9Pn+R*cuu%yxBRyyj+XJQ<%K)2bXp#Q3VCXX$|j#t}lDaP%^nh>&#Pv;iDKOT z%y!#|@ww4#H%W}oTgE1f@j1#^6B*C3+R044OcCR?TvMl0#dyuv*fg=jRC?3Jc)i$c zH$#lqm5psD#^*c}%l2ZtCT+IcL5$a~jm;tBxni4&c_%UMgQi{@#CR>-?7OoVpF>T) zyNGeSH~Y>Mv*cKea>H3-jX%yH`!o29nPi1B?FlW&(;Tx~a3jPKc) z?dFLsPmewZsPkwCcV9AJGKMWc6*C8sr2>{WoW9I)eoodE1aU?%}P8Q3Yn zP6c)vu+xE^0qjg*X8}7K*g3$?1$G{=^MPFe>_T7{0lOI3CBQBPb{VkCfn5RYN?=z3 zyBgRvz^(;$9kA`++?G z>_K1;0ecwOBfuU7_873ofjt52NnlR_dm7j?z@7#69I)qsy#VY*U@rlC8Q3epUIq3V zu-AdT0qjj+ZvlH7*gL@91@<1W_kn!?>_cE50s9!(C%`@h_8G9xfqen&OJH9C`x@9c zz`h0c9kB0#{Q&GoU_Sx-8Q3qteg*a$u-}3G0qjp;e*ya&*gwFse>l`NvFo*{3+Ts% zfGrHHH?T#3EedQgV2cA=0$3klO9ER8SYKdE16u~zvcUQQTMpRrz*Yd(AJ~e(Rsyy% zuvLJq3T!oCs{>mD*qXrB0u}|fHn0J})&aIIu=Rkg4{RW?LBIwB+W^>xz%~N5F|aaV zn*b{ZRspOMSQW5pU^T#Mfz<)42Q~!QP+*$^+YHz+V4DNm0@#+oh65V`Y$UKzz(xZb z18gj?alpm{+X~p$z$O5j2y7c*lYmVIwk@zJz@`G525dU88Njv!wmq;Nfb9ruCtwZ0 zb_TW!u$jPi1r`I=2&@TMGq5Q|0c!`A1l9p;cVH=CX<(he zGQhfk%>_0O*nD7n0NWGTUcmMSwhyp;_lKE0XrGkDZowzb{eqLft>;DOkigLI~&+Jz|IAB z9$JtU>5w(<>>_%WW0lOL4 zEx>LCb{nwUf!zV@PGENdyBpX&!0rWhAF%s@Jpk-MU=IO%7}z7g9tHLou*ZQt0qjX& zPXT)x*fYSM1@;`U=YhQd>_uQN0eczPE5Kd__8PF)fxQ9jO<->UdmGq0z}^M+9^bd7}zJkJ_Ys}u+M>g0qjd)Ujh3X*f+qw1@;}V?}7aQ>_=cf0s9%)FTj2U z_8YL@f&BsOPhfum`y1Flz#@xvU+e1yY$0F^1M3ZJ5nzh~TMXFZz?J~k2iTIpmIBrn z*wVn30k$l#e!!Lkwmh&Efb|EqBCwT!tqg1xV5MfNcz{4A>^X%7Ik?s{~dBtQuGiuv%bs!0Lew0X7ua zroc7>HVoM2z_tLkC9vVZMgSWLY!tB3z{UU@3v3*)@xZnMwl%N`z$OCQ2G}HElYwmu zYznZcz@`D44r~Un?SO3$YzJUF0^12#1F)Te?E-8juw8-0fHeYZ0@e&H4r~^%7GSf1 zC4lV)Y!0wiU~RzKfhB=;0NWi{3RoIgC$J2#E?{$k%>y2(Uwe9R}=hU`GHu64+6|js|uNuw#K82kdxYCjdJU*h#=n z26hUtQ-PfZ>~vsf06P=dS-{Q)b`G#}ft?5Jd|(#~>&x0J{^|UBK=Jb`P+7f!zn} zeqav(dl1+|z#azn2(U+iJqGM?U{3&h64+C~o(A>|uxEii2kd!ZF93TH*h|1(2KEZD zSAo3->~&yo0DBYITfp81_71RjfxQRpePAB|`w-Yiz&-}{39wIreFp4vU|#_H64+P3 zz6SOUuy28V2kd)bKLGm?*iXQI2KEcEUxEDw>~~;)0Q(czU%>tb_7AYg;$Zy`*h0V- z2G$$cBES{}wivL*fh_^753nVHEd{JEu%&@518iAf{eUe8Y@5)Rtc;MST(R3V70*NfYk#V0&FO-O@VC&Y#6Z3fo%b7OJKu+jQ}fK3Fp4X{bTCIj0R*c4z>flUK89oP(D+X34i*bcyU1hx~f24Fh_ z+XdK6V7mf~0c!--1gsfY9M~*iEx=|2O90yq*c@Q3z}kSd14{zy0Jb}@6tFa~PGA{e zUBKo7n+I$@uswk732ZN5djs1C*uKE_1GYb~1ArX}>>ywZfE^6%5MYM_I}F(2z>WZR zB(S4^9S!UlV8;SG4%qR)P5^cyu#>Oa{0y_`b z`M@p!b|J8ffL#pi5@44CyA0Unz^(vxC9tc2T@CCSVAle>4%qd;ZUA;8u$zG04D1$Q zw*tEj*zLgX0Cp#^yMWyd>>gnE0=o~`{lFdo_8_o_fISTC5nzu3dkom)z@7m1B(SG| zJq_#`V9x@34%qX+UI6wYu$O?n4D1zPuL64w*z3UF0QM%Zw}8D3>>Xh50(%eG`@lW` z_93v3fPD>>pr}CBXV0u!Vpv46HY>MSv{|Y%ySq16u-EA7D!YTMAfTU`qpA z2H3K|`T<)G*z&+u0M;MaiojL^wlc6)fUOE_HDId)TLajdz}5m51-3S@0l?M)wl1*s zfUOT~Ah1Ee1_Rpw*oMG10=6-*GGLnkD+g8qtP)riuxem6z-ocj0jmc#1lUkun*!Sm z*f3z51KR@FmcWJs8v$%2uu;H90~-TuEU|*DPU<}oxn1{x`53EHV@c*V0!@D6WCtB_6D{Ouzi8;2W)>} z2LL+|*g?P+06Q4iA;1m=b{Me3fgJ(tNMJ_+I~v$Az>WoW9I)eoodE1aU?%}P8Q3Yn zP6c)vu+xE^0qjg*X8}7K*g3$?1$G{=^MPFe>_T7{0lOI3CBQBPb{VkCfn5RYN?=z3 zyBgRvz^(;$9kA`++?G z>_K1;0ecwOBfuU7_873ofjt52NnlR_dm7j?z@7#69I)qsy#VY*U@rlC8Q3epUIq3V zu-AdT0qjj+ZvlH7*gL@91@<1W_kn!?>_cE50s9!(C%`@h_8G9xfqen&OJH9C`x@9c zz`h0c9kB0#{Q&GoU_Sx-8Q3qteg*a$u-}3G0qjp;e*ya&*gwD`eZcx3u!Vpv46HY> zMSv{|Y%ySq16u-EA7D!YTMAfTU`qpA2H3K|`T<)G*z&+u0M;MaiojL^wlc6)fUOE_ zHDId)TLajdz}5m51-3S@0l?M)wl1*sfUOT~Ah1Ee1_Rpw*oMG10=6-*GGLnkD+g8q ztP)riuxem6z-ocj0jmc#1lUkun*!Sm*f3z51KR@FmcWJs8v$%2uu;H90~-TuEU|*DPU<}oxn1{x`53E zHV@c*V0!@D6WCtB_6D{Ouzi8;2W)>}2LL+|*g?P+06Q4iA;1m=b{Me3fgJ(tNMJ_+ zI~v$Az>WoW9I)eoodE1aU?%}P8Q3YnP6c)vu+xE^0qjg*X8}7K*g3$?1$G{=^MPFe z>_T7{0lOI3CBQBPb{VkCfn5RYN?=z3yBgRvz^(;$9kA`++?G>_K1;0ecwOBfuU7_873ofjt52NnlR_dm7j? zz@7#69I)qsy#VY*U@rlC8Q3epUIq3Vu-AdT0qjj+ZvlH7*gL@91@<1W_kn!?>_cE5 z0s9!(C%`@h_8G9xfqen&OJH9C`x@9cz`h0c9kB0#{Q&GoU_Sx-8Q3qteg*a$u-}3G z0qjp;e*ya&*gwD`OM>-3U<(0T7+7y$ivU{`*kZsI2et&TKERd)wiK|wz?KHK46tQ^ z^#isXu;qcR0IWZ-6@je;Y-M1p09zH7rabUB6wE&w9ECFmcU~_=A z0&4@-4lD_*1K94sQoz!{I)P|4ghu_ zu!Ddt0Cq62Lx3F$>@Z-513LoPk-&}ub~LbKfE^3$IAF&EI|0~@r}N1G@s)mB6k7b~UhT zfL#mhI$+lWy8+mZz-|I|Gq78L-3shBV7CLi1K6Fw?gDl@i@E1A7A4lfa$=_B60(fISQBIbhENdjZ&sz+M9OGO$;Gy$b9#V6Ovv z1K69u-U9YEuy=sH3+z2$?*sb)*oVMA0`@VmPk?<2>@#4W1N#Elm%zRP_BF6?fPD+> zJ7C`f`vKUGzmICX4z!n0wFtFah76G;> zu*HBa4r~cveSj?qY$;%Ufh`Se8DPr->j!K(V9Ntr0a$-vD*{^y*vi0G0k$fz)qt%I zYz<&*0$U4M6xiCp1^`h1GYY}fxrd<8w_j%U>gG42-wEJ%7ASGtQ=Scuu5Q6 zz^Z}O0ILO72dp005MV=rZ3=8NV8eiI4r~ixTLK#nYy_~8z(xTZ4QvdsvB1Uw8xL$N zU|R#50Bj<#ZGcSzHW}Eqz@`A33Tzs%>A+?H+YZ?Fz;*z(Be0!-H2~Wg*e<|k0^1c> z3|J$uCSc9L;=pDBYXLSJSOVB?z~%sJ1=a?v9as`r2e93NrGTY@bpp!(>jE|x*gRnK zf$afoPhfii+Z)(E!1e{UAF%y_9RTb=U}X)e z06P}galnoTb^@>yft>{GWMHQNI~CYzz)lBt2Cy@ModxV{VCMik7ub2g&Ifh@unU1* z1ngp9mjJsI*k!;j2X+OpD}h}F>}p`w0J|30b-=C%b_1{*f!ze`W?ARBGpSg5WNRYc-Wi_~??|RPM<&}lQ_0rWc&et4Z;cL^m~76pCesZjm1uK3+GM5FkW0i{E>^OmTN7=GcFrdn zOEt|-bR|9KG9wY6+mIPQx;fFAOpR`hwj?e@s#Vk#+{AL(gC9+5*9f2r) zok3r{=!*}_k_*v)7Fwt`S8{2~|DP&0%BQr)Q*!9J;|DV6krJ4mhMM3+s}1<+T8=jO zA3F@D5R+5!F6wotEdED{LPgOTmG-bqO>|~rO^IYXXaJ!HK1Y!X4jZIP6N#Y~aLTN|wO$M;0&J~D_z zKDLgf-}8gFJgn1xh;HmVn=psO)p%yM@qr2*eEw9!#F}oJ?Mm3{r!&X5cg{jF_xE@X zuxh+`@}&)aYCP2yPvs5X%B<-5D_`vH)WgJ{8IjmyRJ=1rvsg3x3qN_V0xyzu*r;9Y zMaJ@*1C8amfKjR?j?_AQs8RcB7hJurXjRI=VxHWZX-TwqJ6CpOIYh+8(|sY>xGf21 ztbbkA5kBAo=?1G{>kN`^$V}ldG zcXojC7ivc;*%goTG(@eNn`9@OU(Rd_voaqnj}nw4<6eii3zREtfI%IW$8%mZhg;Da z3%stW;QU-ePfr%jV^*a&V%?fv4;-mtdGts*tdnu!(qxL9BXC3LRvegB2@1s{PO%$Z zb~7whzw)1HsY@#L+p{Hunew=5?|3*<4_evQlBAUf zxUJ&MBxv*Tl}S&RB>(jv%|U8CpKH99No5zVWZip2TfjRlxt41cqEO1=Vpcaq?3QG$ zaRj|-;f~!)4y7-HwT7z7@N~d)g>?W>A>3JnD+IVnVjqxDqmxyDqREGkzFQ+LQP?Lb7fm@_$OUh!*yTVC-*eSlCGe3^NlGN6aSs#$rX2Ys=$zkCJ@_0Fbhhjv z=~C8p?z&e^ReL6Ol|jf7bgOZ$v_f}CXl_5$^O!G3pm-)BOTqc%TSY8I=PjCk3F6Ol zJENpMn9JcQpAwV@juT}UhB^;qxBxKW(gmFB#-(aG-I{+kVJ{K4C0Y})wDaDHWkGJ4 zcuy@7Inv8`-aSG3;Dv>SSE8-5yXGz4Qwvsg+;;5sWfQ08W86Ku{OS3KPu9|`)blRQ zMIskj#{*Yco<#hH;aGXIBJx{3*7_I!m#$|st@J>&O2GnX>5zbt5ScY|OO*~HuJ}Sq)gtrRlcU3^Dr9dkFW3jKwt;A8CL?R~^8iU-I_bMSD;W)2T zrG9)}{Yvc=PRK_@Jj(N>t;EtrKcd>PQpCe^z9f7{As3M*7%PrQWP$fF#|j0d<3AV^ z2B%r*ilKPb*t3RiNqLAWnQDur`4gHQv6iG`s+9fBWYPeWr2wf$9`i5`5?r5yP~@#LdksHv{BKH3b>ntW#S%J#Kp`-6H`QiV?O&It3S6f7n^owdU=W2T(Td`p)!xN9UNT+iA`8GwXL&UaY+OCC#EV@aXUX4vt$tI3+OSXrq>aeMm`md9^a zAr6m~6)J?UiwrvfTx<5PRVAtPL&s0^dXzud_4D`!$`Uv)0)J0xvUy< zT%(1|pftyTUegXJ?zE1x-+Ff?>nqgkMPn`j zKUeL!y{wl;=6=ql;y)I3t(;2`RhN}?zPfT>ce~Q^6<3~XURRQ3k;wjj##wKv1_(44 zm%5HEeleEYO`eL&fl4PpJak!_ORC6qZ{dS#RawFGB6827&^k&k8Y!tGMfc@pfSN0q zUVs|p3)EcD{yRhNLe!OtuUOkE%%1rrMrmRvvPqVr!(&g(>1 zO1@&!muk6m{9Fa*_G&1Wn6JpDcP8isp){+pXS^(FtFrd>Gkz6H$yZ3$6h0Tw%r5WO znYq0h@+T7@8o7cj)uhjgt$3oeR&$kg3_Olsg%S=v!SkGIh?>nm)$%pqIz!E$Xz)mL zO$?1F5qaNfzIlivK37sfV#+1KDHmD|uu?A)SApb$M8`3?`b_9nSS-!JaprF1Zt4VcxT%FJI-?_UF*tOB%)d zamWlJ{fgf+E0RTSg~Qs=E{tmlA#_>1W)%9UWX#7Md%8g0@(EuaIf5RKOr#6kH!Ic% zieypxGFTteEqNPrmjh-Kx->kN*vn$05~+9-|2dJ-H15S)Vpa(D!SXm@6*)k@b1ZEc zU1v0REn8(=)M|I;0?3NMarX67NH1CTL?Ln6tei?(G?-CoOJrrylT8ujuzcuqlB2c5 zdJ26uDxO789E#irsP#+idbTh+r_z?m{_{qt6}SpT^T{>+pO+j*sbF@&N|s$CbvLlw z+O4Y$Rvtx1v?7Uyh*Yf%yMqpKnsF}_!=!^noo9s?=1?Z@!}2-E`pKe43!z>-60F^L zEQ!h|OnKbLK&^0x3BN$H9{!${?CrSTvZ{p^l-)`DUq}y?e3;4x(feOy_Z7W6`7qJ* z;(MNJ9W?C7Jh13EX&u;NiH8l`-D*(8RvtbAhKZIsQtJ@*NW3cPU{TAB0(U()?uW={ zpnQ(!9#Re!vfL$cM;@Y@oi|Nj!oec8MtbYjeePuay}3{Jc8sfDQ;)n>d_5ke&uz@S zwy#_CK0d(|Jndk$&U4OmL$`>#h(k1zVyT9SRqm<;Scr(!d7P75;rqy_1m%G%0HwH? zbri-!E+s3AyHSO1PmcR(F!d6|Zl&w0c)Fguuju^&iO4bRI4U0{U9yOC7u%((=bo+M zT)b+EA8alTDjBBk<=vD;4`RXV@)E>fF#S-i#eF=v+I-$nEKoZ|Qx6q8$LeEJPW^Rb ze`9^I48ljBci}vIf6WG8IQ`J^!!t*&o0X;zUNQ+?604=UNBBF!jPHB^P_iY8wba$@ z?yK2@=RH>XRB}@*e+m=S_Z?d)NZ^}xVR8w3EL=B* zd#EVR0U2i!x+Kz8aq6z~ZF7M!KhNPPn0$$Yw;M!@GI)^P?}3JH?Rjp1>U0CeTlj{aPCii6@Sc3nMXy&X9td&{@Kgwu zONgR4N0vbMJJtAN1)ev}5OL;i7D^Mb{_*pIXfWPd@fJ;+#`DLmgNY%u( zED~sb>}bi(h*jcYYS@`5=NIr6m>T3H>LN*piJEhOtF56MN8yxde*9^Ou{rx!y6}S< zr5g0I@xxnRI)|`zUwnRNHd9EtSuwtmj>(hP_H>7Hn5 z!ZbrlN!quwV`h^q9_5sHQ=*YR45|8gZsoo~ek--<|7KU1)WgP};a5YO3eJ_us_IDb z=h6$uUMTg@kvps19lMo$fw@zW$P1=k;@GXzSZ_MkY*GA7zfm<6Ref1V^ZMzD41%}*#s(0_BMdCYScZDNaSv7obWfA7ECmFnCdQwGveTl#eEk9 zq#Gz+Yi-d=UA>wcBp;}8cu!vbZdIXmZ3#+GaXh83F2#DT5Gs=p2f|tJzV3qLt)0AS zhKQ3^`<=;JqgCF!Aoeo|#YPkBfEG=@l%ZSeoOwgHvI-ctJM9p0XIItLOgQ*hV%0HB zFJyeqHep3b*W~iIvHXqAxhO%Zf#Q_)erIz2?jp#(dI&0-YM5AMwcio$TjSbrad3Y>JHO4h6WuBd(7MgTE;NjOl%)>4Km)-JljL2bf3`%`S} zDx7GDI2}vm&Y)4eR!-icEtYinsGZk9fhG=C#Y(8o^uoty)u+BnD7!Yu9M}}D&l9L>{7?5pOA}_vT52vxN0Ppx>_Bhhla^+Gj3v|>bf6rtbw`91VG!)tCOE?1tx zJ$%=9lqXLvB`ymZ=}TM?l!b@SflA-wNje-}9F^tns3kg~6wjka4o6R&S_&4Y1m_oh zW6AFC>VB0~S!Q}w=JlLXB-wz6AkV!eJMJ(|$Wz(@<1T#jrzGL~$)aaVp_VtwUI})- z@K_j?Q>Y@jN1~v2vvOmeRe%ENhKe_L)5&f+Meb@@*%hCdTXB0xpXLHj2E4Y&n}_=r zRKRnZ=k!Az1N)|weF(w~K32?m(hMD^yB(rPBa!vIj_tW%VZ!0U?S5;&loebo^&X2| z4OO9GT=$vtTOWea}gJ9}BBTbv5r?VkV#x-qXe(KC6V47jeALC0FGciu zt}b2UiTPVD#ap+dYVssriny&-RQl>h>GnXpYFKquwUwFAigrb!l?aN%AC0^X)eR&bOs9_#ao> zD^a*8)$ldzK6oV!*4070MB5tUKh8sc@o{)-V=NV;@6^5M=*H18v8K*UDyEe;r3p7oQW~fvbbOzH^Y0R8+fyaYjE%R)Q?Zm?IaFY)*y^uhTA7=*BhQ^QnLvclKXr>!$X+x7D5l9Bw<4V43%1 zsk^l`F1u7gDGqt@qI-+rKT!v!;c*p6YxvJrLBRkb+gRCU6M)y)eI>efNXH^P-9M_zdB(Y&GX z`PrnN`&cWDUIx8p*)xSSM^mEVl9uvdqCytTGH5CF;OOX@_Aj_|W)Gx{M+Fb46^4iI zX(vxdG)TTZSYA`lc350`b#UoCEbnghb{;mzQs2SNU+N;cm!jNejCZbZnZqn+-qIiD z0NM6jX-zeop!gU|4X8tH&0ZEC3mpLvz9an}j9)*eQg)k%wa9?w(D?)^jy$%K&EAYd&9Tl{ z@b*(M#o#eIKDe#J4H;?SbOVm@)(vCp0UO8t%hCkyJ^4WO?J0S+j320<`pqOnNt|b@ z{Li{9=536(BF~#>h(NQCq39-J^+6)5xPv^{;x%q}+9BfR$4{Kc z(HczX8sf?zW42Y(c~UKDoK__SANuk|s?rS
    w}ZpDtLDXe4*PTIS*grcc>{A_f- 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 %source_path%\Servidor\FactuGES_Server.dpr True - 4 + 6 rcBorland @@ -508,15 +508,15 @@ source_path True @@ -1190,7 +1190,7 @@ Comments= False 0 - False + True 0 1000 False @@ -4636,7 +4636,7 @@ Comments= False 0 - False + True 0 1000 False @@ -5295,7 +5295,7 @@ Comments= False 0 - False + True 0 1000 False @@ -5970,7 +5970,7 @@ Comments= False 0 - False + True 0 1000 False @@ -10416,7 +10416,7 @@ Comments= False 0 - True + False 0 1000 False @@ -10757,6 +10757,412 @@ Comments= + + + False + %modules_dcp_path% + True + + True + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + True + 0 + 1048576 + 16384 + + True + True + %output_path% + False + + False + fa8 + True + False + %search_path% + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + + 0 + + + + True + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + 0 + + True + False + False + True + True + 0 + 1252 + 11 + Release + False + + + True + True + + False + + False + False + False + True + False + False + False + False + False + False + False + False + 3081 + + 0 + 0 + 0 + False + 0 + + + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [] + False + False + + + + False + False + False + True + True + True + False + False + %package_path% + + + + False + %modules_dcp_path% + True + + True + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + True + 0 + 1048576 + 16384 + + True + True + %output_path% + False + + False + fa8 + True + False + %search_path% + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 11 + Release + False + + + True + True + + False + + False + False + False + True + False + False + False + False + False + False + False + False + 3081 + + 0 + 0 + 0 + False + 0 + + + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [] + False + False + + + + False + False + False + True + True + True + False + False + %package_path% + + + + False + %modules_dcp_path% + True + + True + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + True + 0 + 1048576 + 16384 + + True + True + %output_path% + False + + False + fa8 + True + False + %search_path% + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 11 + Release + False + + + True + True + + False + + False + False + False + True + False + False + False + False + False + False + False + False + 3081 + + 0 + 0 + 0 + False + 0 + + + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [] + False + False + + + + False + False + False + True + True + True + False + False + %package_path% + @@ -15234,6 +15640,266 @@ Comments= + + + False + %modules_dcp_path% + True + + True + + False + True + False + False + True + 4194304 + False + False + False + True + + + 0 + True + 0 + 1048576 + 16384 + + True + True + %output_path% + False + + False + fa8 + True + False + + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 11 + Release + False + + + True + True + + False + + False + False + False + True + False + False + False + False + False + False + False + False + 3081 + + 0 + 0 + 0 + False + 0 + + + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [] + False + False + + + + False + False + False + True + True + True + False + False + %package_path% + + + + False + %modules_dcp_path% + True + + True + + False + True + False + False + True + 4194304 + False + False + False + True + + + 0 + True + 0 + 1048576 + 16384 + + True + True + %output_path% + False + + False + fa8 + True + False + + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 11 + Release + False + + + True + True + + False + + False + False + False + True + False + False + False + False + False + False + False + False + 3081 + + 0 + 0 + 0 + False + 0 + + + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [] + False + False + + + + False + False + False + True + True + True + False + False + %package_path% + @@ -15297,7 +15963,7 @@ Comments= False 0 - True + False 0 1000 False @@ -15899,6 +16565,670 @@ Comments= + + + False + %modules_dcp_path% + True + + True + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + True + 0 + 1048576 + 16384 + + True + True + %output_path% + False + + False + fa8 + True + False + %search_path% + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + + 0 + + + + True + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + 0 + + True + False + False + True + True + 0 + 1252 + 11 + Release + False + + + True + True + + False + + False + False + False + True + False + False + False + False + False + False + False + False + 3081 + + 0 + 0 + 0 + False + 0 + + + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [] + False + False + + + + False + False + False + True + True + True + False + False + %package_path% + + + + False + %modules_dcp_path% + True + + True + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + True + 0 + 1048576 + 16384 + + True + True + %output_path% + False + + False + fa8 + True + False + %search_path% + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 11 + Release + False + + + True + True + + False + + False + False + False + True + False + False + False + False + False + False + False + False + 3081 + + 0 + 0 + 0 + False + 0 + + + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [] + False + False + + + + False + False + False + True + True + True + False + False + %package_path% + + + + False + %modules_dcp_path% + True + + True + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + True + 0 + 1048576 + 16384 + + True + True + %output_path% + False + + False + fa8 + True + False + %search_path% + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 11 + Release + False + + + True + True + + False + + False + False + False + True + False + False + False + False + False + False + False + False + 3081 + + 0 + 0 + 0 + False + 0 + + + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [] + False + False + + + + False + False + False + True + True + True + False + False + %package_path% + + + + False + %modules_dcp_path% + True + + True + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + True + 0 + 1048576 + 16384 + + True + True + %output_path% + False + + False + fa8 + True + False + %search_path% + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 11 + Release + False + + + True + True + + False + + False + False + False + True + False + False + False + False + False + False + False + False + 3081 + + 0 + 0 + 0 + False + 0 + + + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [] + False + False + + + + False + False + False + True + True + True + False + False + %package_path% + + + + False + %modules_dcp_path% + True + + True + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + True + 0 + 1048576 + 16384 + + True + True + %output_path% + False + + False + fa8 + True + False + %search_path% + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 11 + Release + False + + + True + True + + False + + False + False + False + True + False + False + False + False + False + False + False + False + 3081 + + 0 + 0 + 0 + False + 0 + + + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [] + False + False + + + + False + False + False + True + True + True + False + False + %package_path% + @@ -16007,7 +17337,7 @@ Comments= 0 %source_path%\Cliente\FactuGES.dpr True - 4 + 6 rcBorland @@ -16022,13 +17352,13 @@ Comments= False diff --git a/Database/VISTAS.SQL b/Database/VISTAS.SQL index 75beccc0..ed1d636b 100644 --- a/Database/VISTAS.SQL +++ b/Database/VISTAS.SQL @@ -1,5 +1,8 @@ DROP VIEW V_REMESAS_PROVEEDOR; + +DROP VIEW V_VENTAS_ARTICULOS; + /* VISTAS RELATIVAS A PEDIDOS Y ALBARANES */ @@ -501,6 +504,8 @@ CREATE VIEW V_RECIBOS_PROVEEDOR( REFERENCIA_PROVEEDOR, SITUACION, ID_FACTURA, + ID_REMESA, + REFERENCIA_REMESA, FECHA_EMISION, FECHA_VENCIMIENTO, DESCRIPCION, @@ -526,6 +531,7 @@ AS SELECT RECIBOS_PROVEEDOR.ID, RECIBOS_PROVEEDOR.REFERENCIA, RECIBOS_PROVEEDOR.REFERENCIA_PROVEEDOR, V_REC_PRO_SITUACION.SITUACION, RECIBOS_PROVEEDOR.ID_FACTURA, + RECIBOS_PROVEEDOR.ID_REMESA, REMESAS_PROVEEDOR.REFERENCIA as REFERENCIA_REMESA, RECIBOS_PROVEEDOR.FECHA_EMISION, RECIBOS_PROVEEDOR.FECHA_VENCIMIENTO, RECIBOS_PROVEEDOR.DESCRIPCION, RECIBOS_PROVEEDOR.OBSERVACIONES, RECIBOS_PROVEEDOR.IMPORTE, RECIBOS_PROVEEDOR.OTROS_GASTOS, RECIBOS_PROVEEDOR.IMPORTE + RECIBOS_PROVEEDOR.OTROS_GASTOS, @@ -550,7 +556,10 @@ ON (FORMAS_PAGO.ID = FACTURAS_PROVEEDOR.ID_FORMA_PAGO) LEFT JOIN CONTACTOS ON (CONTACTOS.ID = FACTURAS_PROVEEDOR.ID_PROVEEDOR) LEFT JOIN CONTACTOS_DATOS_BANCO -ON (CONTACTOS_DATOS_BANCO.ID_CONTACTO = CONTACTOS.ID); +ON (CONTACTOS_DATOS_BANCO.ID_CONTACTO = CONTACTOS.ID) +LEFT JOIN REMESAS_PROVEEDOR +ON (REMESAS_PROVEEDOR.ID = RECIBOS_PROVEEDOR.ID_REMESA); + CREATE VIEW V_RECIBOS_CLIENTE( @@ -2048,8 +2057,6 @@ AND (ARTICULOS.INVENTARIABLE = 1); /* INFORMES *************************************************************/ /* **********************************************************************/ /* Al igual que en Varela tendremos esta vista para hacer todos los informes que queramos de ventas, ya que estará desglosado por artículo */ -DROP VIEW V_VENTAS_ARTICULOS; - CREATE VIEW V_VENTAS_ARTICULOS( ID_FACTURA, ID_EMPRESA, diff --git a/Output/Debug/Servidor/Informes/InfRemesaProveedor.fr3 b/Output/Debug/Servidor/Informes/InfRemesaProveedor.fr3 new file mode 100644 index 00000000..929403c4 --- /dev/null +++ b/Output/Debug/Servidor/Informes/InfRemesaProveedor.fr3 @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Cliente/uPantallaPrincipal.pas b/Source/Cliente/uPantallaPrincipal.pas index 49f54b3b..429b36c8 100644 --- a/Source/Cliente/uPantallaPrincipal.pas +++ b/Source/Cliente/uPantallaPrincipal.pas @@ -459,7 +459,9 @@ begin HostManager.LoadModule('BancaElectronica_plugin.bpl'); HostManager.LoadModule('Comisiones_plugin.bpl'); HostManager.LoadModule('TiendaWeb_plugin.bpl'); - HostManager.LoadModule('HistoricoMovimientos_plugin.bpl'); + + HostManager.LoadModule('HistoricoMovimientos_plugin.bpl'); + HostManager.LoadModule('RemesasProveedor_plugin.bpl'); { HostManager.LoadModule('PedidosMontaje_plugin.bpl'); HostManager.LoadModule('CobrosMontaje_plugin.bpl'); diff --git a/Source/Modulos/Articulos/Views/uEditorArticulos.dfm b/Source/Modulos/Articulos/Views/uEditorArticulos.dfm index 7339c2d8..a84a36c7 100644 --- a/Source/Modulos/Articulos/Views/uEditorArticulos.dfm +++ b/Source/Modulos/Articulos/Views/uEditorArticulos.dfm @@ -2,8 +2,6 @@ inherited fEditorArticulos: TfEditorArticulos Left = 489 Top = 325 Caption = 'Lista de art'#237'culos' - ExplicitWidth = 320 - ExplicitHeight = 240 PixelsPerInch = 96 TextHeight = 13 inherited JvNavPanelHeader: TJvNavPanelHeader diff --git a/Source/Modulos/Articulos/Views/uEditorElegirArticulos.dfm b/Source/Modulos/Articulos/Views/uEditorElegirArticulos.dfm index a054273b..38a0f705 100644 --- a/Source/Modulos/Articulos/Views/uEditorElegirArticulos.dfm +++ b/Source/Modulos/Articulos/Views/uEditorElegirArticulos.dfm @@ -2,7 +2,6 @@ inherited fEditorElegirArticulos: TfEditorElegirArticulos Caption = 'Seleccionar art'#237'culos' ClientWidth = 656 ExplicitWidth = 664 - ExplicitHeight = 478 PixelsPerInch = 96 TextHeight = 13 object JvgWizardHeader1: TJvgWizardHeader [0] diff --git a/Source/Modulos/Recibos de cliente/Views/uRecibosClienteViewRegister.pas b/Source/Modulos/Recibos de cliente/Views/uRecibosClienteViewRegister.pas index 8186156e..24213806 100644 --- a/Source/Modulos/Recibos de cliente/Views/uRecibosClienteViewRegister.pas +++ b/Source/Modulos/Recibos de cliente/Views/uRecibosClienteViewRegister.pas @@ -49,7 +49,7 @@ begin EditorRegistry.UnRegisterClass(TfEditorRecibosCliente); EditorRegistry.UnRegisterClass(TfEditorReciboCliente); EditorRegistry.UnRegisterClass(TfEditorElegirRecibosCliente); -EditorRegistry.UnRegisterClass(TfEditorReciboClientePreview); + EditorRegistry.UnRegisterClass(TfEditorReciboClientePreview); end; end. diff --git a/Source/Modulos/Recibos de proveedor/Controller/RecibosProveedor_controller.dpk b/Source/Modulos/Recibos de proveedor/Controller/RecibosProveedor_controller.dpk index cdfaa973..f812f6e4 100644 --- a/Source/Modulos/Recibos de proveedor/Controller/RecibosProveedor_controller.dpk +++ b/Source/Modulos/Recibos de proveedor/Controller/RecibosProveedor_controller.dpk @@ -69,6 +69,7 @@ contains uPagosProveedorController in 'uPagosProveedorController.pas', uIEditorRecibosProveedorPreview in 'View\uIEditorRecibosProveedorPreview.pas', uRecibosProveedorReportController in 'uRecibosProveedorReportController.pas', - uIEditorFechaPagoProveedor in 'View\uIEditorFechaPagoProveedor.pas'; + uIEditorFechaPagoProveedor in 'View\uIEditorFechaPagoProveedor.pas', + uIEditorElegirRecibosProveedor in 'View\uIEditorElegirRecibosProveedor.pas'; end. diff --git a/Source/Modulos/Recibos de proveedor/Controller/View/uIEditorElegirRecibosProveedor.pas b/Source/Modulos/Recibos de proveedor/Controller/View/uIEditorElegirRecibosProveedor.pas index 141870e5..49e7cade 100644 --- a/Source/Modulos/Recibos de proveedor/Controller/View/uIEditorElegirRecibosProveedor.pas +++ b/Source/Modulos/Recibos de proveedor/Controller/View/uIEditorElegirRecibosProveedor.pas @@ -3,13 +3,13 @@ unit uIEditorElegirRecibosProveedor; interface uses - uIEditorRecibosCliente, uBizRecibosCliente, uGUIBase; + uIEditorRecibosProveedor, uBizRecibosProveedor, uGUIBase; type - IEditorElegirRecibosCliente = interface(IEditorRecibosCliente) - ['{ACCA545C-3D0C-4FD1-9472-A41AD3C2AF9E}'] - function GetRecibosClienteSeleccionados: IBizRecibosCliente; - property RecibosClienteSeleccionados: IBizRecibosCliente read GetRecibosClienteSeleccionados; + IEditorElegirRecibosProveedor = interface(IEditorRecibosProveedor) + ['{7F0AA54E-6F1D-4298-9DB4-0D797069A90C}'] + function GetRecibosProveedorSeleccionados: IBizRecibosProveedor; + property RecibosProveedorSeleccionados: IBizRecibosProveedor read GetRecibosProveedorSeleccionados; procedure SetMultiSelect (AValue : Boolean); function GetMultiSelect : Boolean; diff --git a/Source/Modulos/Recibos de proveedor/Controller/uRecibosProveedorController.pas b/Source/Modulos/Recibos de proveedor/Controller/uRecibosProveedorController.pas index d9febf9b..5133e648 100644 --- a/Source/Modulos/Recibos de proveedor/Controller/uRecibosProveedorController.pas +++ b/Source/Modulos/Recibos de proveedor/Controller/uRecibosProveedorController.pas @@ -50,6 +50,7 @@ type function Nuevo : IBizRecibosProveedor; procedure RecuperarCliente(AReciboProveedor : IBizRecibosProveedor); function Buscar(const ID: Integer): IBizRecibosProveedor; + function BuscarTodosRemesa(const ID_REMESA: Integer): IBizRecibosProveedor; function BuscarTodosFactura(const ID_FACTURA: Integer): IBizRecibosProveedor; function BuscarTodos: IBizRecibosProveedor; function BuscarTodosPendientesDevueltos: IBizRecibosProveedor; @@ -58,7 +59,12 @@ type function Localizar(ARecibosProveedor: IBizRecibosProveedor; ADescripcion:String): Boolean; function DarListaRecibosProveedor: TStringList; function ExtraerSeleccionados(ARecibosProveedor: IBizRecibosProveedor) : IBizRecibosProveedor; + + procedure AsignarRemesa(ARecibos : IBizRecibosProveedor; ID_REMESA: Integer); + procedure QuitarRemesa(ARecibos : IBizRecibosProveedor); procedure SetSituacionCobrados(ARecibos : IBizRecibosProveedor; WithDeltas: Boolean=False); + function ElegirRecibos(ARecibos : IBizRecibosProveedor; AMensaje: String; AMultiSelect: Boolean): IBizRecibosProveedor; + procedure Preview(ARecibosProveedor : IBizRecibosProveedor); procedure Print(ARecibosProveedor : IBizRecibosProveedor); end; @@ -99,6 +105,7 @@ type function Duplicar(ARecibosProveedor: IBizRecibosProveedor): IBizRecibosProveedor; function Nuevo : IBizRecibosProveedor; function Buscar(const ID: Integer): IBizRecibosProveedor; + function BuscarTodosRemesa(const ID_REMESA: Integer): IBizRecibosProveedor; function BuscarTodosFactura(const ID_FACTURA: Integer): IBizRecibosProveedor; function BuscarTodos: IBizRecibosProveedor; function BuscarTodosPendientesDevueltos: IBizRecibosProveedor; @@ -107,7 +114,12 @@ type function Localizar(ARecibosProveedor: IBizRecibosProveedor; ADescripcion:String): Boolean; function DarListaRecibosProveedor: TStringList; function ExtraerSeleccionados(ARecibosProveedor: IBizRecibosProveedor) : IBizRecibosProveedor; + + procedure AsignarRemesa(ARecibos : IBizRecibosProveedor; ID_REMESA: Integer); + procedure QuitarRemesa(ARecibos : IBizRecibosProveedor); procedure SetSituacionCobrados(ARecibos : IBizRecibosProveedor; WithDeltas: Boolean=False); + function ElegirRecibos(ARecibos : IBizRecibosProveedor; AMensaje: String; AMultiSelect: Boolean): IBizRecibosProveedor; + procedure Preview(ARecibosProveedor : IBizRecibosProveedor); procedure Print(ARecibosProveedor : IBizRecibosProveedor); end; @@ -120,7 +132,7 @@ uses uDateUtils, uROTypes, DateUtils, Controls, Windows, Variants, uRecibosProveedorReportController, uBizContactos, schRecibosProveedorClient_Intf, uIEditorRecibosProveedor, uIEditorReciboProveedor, - uDataModuleRecibosProveedor, uIEditorFechaPagoProveedor; + uDataModuleRecibosProveedor, uIEditorFechaPagoProveedor, uIEditorElegirRecibosProveedor; { TRecibosProveedorController } @@ -203,6 +215,30 @@ begin // end; end; +procedure TRecibosProveedorController.AsignarRemesa(ARecibos: IBizRecibosProveedor; ID_REMESA: Integer); +begin + if Assigned(ARecibos) then + begin + With ARecibos.DataTable do + begin + First; + While not EOF do + begin + if (ARecibos.ID_REMESA <> ID_REMESA) then + begin + ARecibos.Edit; + //Añadimos el cobro automatico por la remesa y volvemos a asignar ID + //para que asigne un ID nuevo para el pago, porque aqui si hay maestro-detalle + AnadirPago(ARecibos, DateToStr(Date)); //->Ojo el orden es importante + ARecibos.ID_REMESA := ID_REMESA; + AsignarID(ARecibos, ARecibos.ID); + end; + Next; + end; + end; + end; +end; + function TRecibosProveedorController.BuscarTodos: IBizRecibosProveedor; begin Result := FDataModule.GetItems; @@ -259,6 +295,24 @@ begin end; end; +function TRecibosProveedorController.BuscarTodosRemesa(const ID_REMESA: Integer): IBizRecibosProveedor; +begin + ShowHourglassCursor; + try + Result := BuscarTodos; + with Result.DataTable.Where do + begin + if NotEmpty then + AddOperator(opAND); + OpenBraket; + AddText(fld_RecibosProveedorID_REMESA + ' = ' + IntToStr(ID_REMESA)); + CloseBraket; + end; + finally + HideHourglassCursor; + end; +end; + function TRecibosProveedorController._Vacio: IBizRecibosProveedor; begin Result := Buscar(ID_NULO); @@ -444,6 +498,29 @@ begin end; end; +function TRecibosProveedorController.ElegirRecibos(ARecibos: IBizRecibosProveedor; AMensaje: String; + AMultiSelect: Boolean): IBizRecibosProveedor; +var + AEditor : IEditorElegirRecibosProveedor; +begin + Result := NIL; + CreateEditor('EditorElegirRecibosProveedor', IEditorElegirRecibosProveedor, AEditor); + try + with AEditor do + begin + Controller := Self; + RecibosProveedor := ARecibos; + MultiSelect := AMultiSelect; + Mensaje := AMensaje; + if IsPositiveResult(ShowModal) then + Result := RecibosProveedorSeleccionados; + Release; + end; + finally + AEditor := NIL; + end; +end; + function TRecibosProveedorController.Eliminar(ARecibosProveedor: IBizRecibosProveedor): Boolean; begin Result := False; @@ -669,4 +746,21 @@ begin end; end; +procedure TRecibosProveedorController.QuitarRemesa(ARecibos: IBizRecibosProveedor); +begin + if Assigned(ARecibos) then + begin + if ARecibos.Pagos.DataTable.RecordCount = 0 then + Exit; + + //Eliminamos el cobro generado por la remesa y quitamos el ID_REMESA del recibo + ARecibos.Pagos.DataTable.Last; + ARecibos.Pagos.Delete; + + ARecibos.DataTable.Edit; + ARecibos.ID_REMESA := 0; + ARecibos.DataTable.Post; + end; +end; + end. diff --git a/Source/Modulos/Recibos de proveedor/Data/RecibosProveedor_data.drc b/Source/Modulos/Recibos de proveedor/Data/RecibosProveedor_data.drc index 686f8580..7642ac97 100644 --- a/Source/Modulos/Recibos de proveedor/Data/RecibosProveedor_data.drc +++ b/Source/Modulos/Recibos de proveedor/Data/RecibosProveedor_data.drc @@ -8,3 +8,7 @@ resources were bound to the produced executable. */ +STRINGTABLE +BEGIN +END + diff --git a/Source/Modulos/Recibos de proveedor/Data/uDataModuleRecibosProveedor.dfm b/Source/Modulos/Recibos de proveedor/Data/uDataModuleRecibosProveedor.dfm index 39957f85..e12e8a02 100644 --- a/Source/Modulos/Recibos de proveedor/Data/uDataModuleRecibosProveedor.dfm +++ b/Source/Modulos/Recibos de proveedor/Data/uDataModuleRecibosProveedor.dfm @@ -410,6 +410,29 @@ object DataModuleRecibosProveedor: TDataModuleRecibosProveedor Lookup = False LookupCache = False end + item + Name = 'ID_REMESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA_REMESA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end item Name = 'FECHA_EMISION' DataType = datDateTime diff --git a/Source/Modulos/Recibos de proveedor/Model/schRecibosProveedorClient_Intf.pas b/Source/Modulos/Recibos de proveedor/Model/schRecibosProveedorClient_Intf.pas index db589269..5a5f4530 100644 --- a/Source/Modulos/Recibos de proveedor/Model/schRecibosProveedorClient_Intf.pas +++ b/Source/Modulos/Recibos de proveedor/Model/schRecibosProveedorClient_Intf.pas @@ -9,9 +9,9 @@ const { Data table rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_RecibosProveedor = '{2AAC024E-AC2F-4513-9259-F199B69B6C27}'; - RID_RecibosProveedor_Refresh = '{10C38C0E-151B-401A-B871-ECE4187F375B}'; - RID_PagosProveedor = '{44A1CD96-B800-4F0E-9B70-201D420A465A}'; + RID_RecibosProveedor = '{807B18A0-18B1-4AA2-AD28-EB2C6F7355D4}'; + RID_RecibosProveedor_Refresh = '{1F7D595D-7CE8-4F30-A7AD-8DF53957939D}'; + RID_PagosProveedor = '{97FF686E-BBE3-490B-A127-DA9B5AF05917}'; { Data table names } nme_RecibosProveedor = 'RecibosProveedor'; @@ -24,6 +24,8 @@ const fld_RecibosProveedorREFERENCIA_PROVEEDOR = 'REFERENCIA_PROVEEDOR'; fld_RecibosProveedorSITUACION = 'SITUACION'; fld_RecibosProveedorID_FACTURA = 'ID_FACTURA'; + fld_RecibosProveedorID_REMESA = 'ID_REMESA'; + fld_RecibosProveedorREFERENCIA_REMESA = 'REFERENCIA_REMESA'; fld_RecibosProveedorFECHA_EMISION = 'FECHA_EMISION'; fld_RecibosProveedorFECHA_VENCIMIENTO = 'FECHA_VENCIMIENTO'; fld_RecibosProveedorDESCRIPCION = 'DESCRIPCION'; @@ -52,27 +54,29 @@ const idx_RecibosProveedorREFERENCIA_PROVEEDOR = 2; idx_RecibosProveedorSITUACION = 3; idx_RecibosProveedorID_FACTURA = 4; - idx_RecibosProveedorFECHA_EMISION = 5; - idx_RecibosProveedorFECHA_VENCIMIENTO = 6; - idx_RecibosProveedorDESCRIPCION = 7; - idx_RecibosProveedorOBSERVACIONES = 8; - idx_RecibosProveedorIMPORTE = 9; - idx_RecibosProveedorOTROS_GASTOS = 10; - idx_RecibosProveedorIMPORTE_TOTAL = 11; - idx_RecibosProveedorFECHA_FACTURA = 12; - idx_RecibosProveedorFORMA_PAGO_FACTURA = 13; - idx_RecibosProveedorIMPORTE_FACTURA = 14; - idx_RecibosProveedorID_PROVEEDOR = 15; - idx_RecibosProveedorNOMBRE_PROVEEDOR = 16; - idx_RecibosProveedorNIF_CIF_PROVEEDOR = 17; - idx_RecibosProveedorENTIDAD_PROVEEDOR = 18; - idx_RecibosProveedorSUCURSAL_PROVEEDOR = 19; - idx_RecibosProveedorDC_PROVEEDOR = 20; - idx_RecibosProveedorCUENTA_PROVEEDOR = 21; - idx_RecibosProveedorID_EMPRESA = 22; - idx_RecibosProveedorFECHA_ALTA = 23; - idx_RecibosProveedorFECHA_MODIFICACION = 24; - idx_RecibosProveedorUSUARIO = 25; + idx_RecibosProveedorID_REMESA = 5; + idx_RecibosProveedorREFERENCIA_REMESA = 6; + idx_RecibosProveedorFECHA_EMISION = 7; + idx_RecibosProveedorFECHA_VENCIMIENTO = 8; + idx_RecibosProveedorDESCRIPCION = 9; + idx_RecibosProveedorOBSERVACIONES = 10; + idx_RecibosProveedorIMPORTE = 11; + idx_RecibosProveedorOTROS_GASTOS = 12; + idx_RecibosProveedorIMPORTE_TOTAL = 13; + idx_RecibosProveedorFECHA_FACTURA = 14; + idx_RecibosProveedorFORMA_PAGO_FACTURA = 15; + idx_RecibosProveedorIMPORTE_FACTURA = 16; + idx_RecibosProveedorID_PROVEEDOR = 17; + idx_RecibosProveedorNOMBRE_PROVEEDOR = 18; + idx_RecibosProveedorNIF_CIF_PROVEEDOR = 19; + idx_RecibosProveedorENTIDAD_PROVEEDOR = 20; + idx_RecibosProveedorSUCURSAL_PROVEEDOR = 21; + idx_RecibosProveedorDC_PROVEEDOR = 22; + idx_RecibosProveedorCUENTA_PROVEEDOR = 23; + idx_RecibosProveedorID_EMPRESA = 24; + idx_RecibosProveedorFECHA_ALTA = 25; + idx_RecibosProveedorFECHA_MODIFICACION = 26; + idx_RecibosProveedorUSUARIO = 27; { RecibosProveedor_Refresh fields } fld_RecibosProveedor_RefreshID = 'ID'; @@ -80,6 +84,8 @@ const fld_RecibosProveedor_RefreshREFERENCIA_PROVEEDOR = 'REFERENCIA_PROVEEDOR'; fld_RecibosProveedor_RefreshSITUACION = 'SITUACION'; fld_RecibosProveedor_RefreshID_FACTURA = 'ID_FACTURA'; + fld_RecibosProveedor_RefreshID_REMESA = 'ID_REMESA'; + fld_RecibosProveedor_RefreshREFERENCIA_REMESA = 'REFERENCIA_REMESA'; fld_RecibosProveedor_RefreshFECHA_EMISION = 'FECHA_EMISION'; fld_RecibosProveedor_RefreshFECHA_VENCIMIENTO = 'FECHA_VENCIMIENTO'; fld_RecibosProveedor_RefreshDESCRIPCION = 'DESCRIPCION'; @@ -108,27 +114,29 @@ const idx_RecibosProveedor_RefreshREFERENCIA_PROVEEDOR = 2; idx_RecibosProveedor_RefreshSITUACION = 3; idx_RecibosProveedor_RefreshID_FACTURA = 4; - idx_RecibosProveedor_RefreshFECHA_EMISION = 5; - idx_RecibosProveedor_RefreshFECHA_VENCIMIENTO = 6; - idx_RecibosProveedor_RefreshDESCRIPCION = 7; - idx_RecibosProveedor_RefreshOBSERVACIONES = 8; - idx_RecibosProveedor_RefreshIMPORTE = 9; - idx_RecibosProveedor_RefreshOTROS_GASTOS = 10; - idx_RecibosProveedor_RefreshIMPORTE_TOTAL = 11; - idx_RecibosProveedor_RefreshFECHA_FACTURA = 12; - idx_RecibosProveedor_RefreshFORMA_PAGO_FACTURA = 13; - idx_RecibosProveedor_RefreshIMPORTE_FACTURA = 14; - idx_RecibosProveedor_RefreshID_PROVEEDOR = 15; - idx_RecibosProveedor_RefreshNOMBRE_PROVEEDOR = 16; - idx_RecibosProveedor_RefreshNIF_CIF_PROVEEDOR = 17; - idx_RecibosProveedor_RefreshENTIDAD_PROVEEDOR = 18; - idx_RecibosProveedor_RefreshSUCURSAL_PROVEEDOR = 19; - idx_RecibosProveedor_RefreshDC_PROVEEDOR = 20; - idx_RecibosProveedor_RefreshCUENTA_PROVEEDOR = 21; - idx_RecibosProveedor_RefreshID_EMPRESA = 22; - idx_RecibosProveedor_RefreshFECHA_ALTA = 23; - idx_RecibosProveedor_RefreshFECHA_MODIFICACION = 24; - idx_RecibosProveedor_RefreshUSUARIO = 25; + idx_RecibosProveedor_RefreshID_REMESA = 5; + idx_RecibosProveedor_RefreshREFERENCIA_REMESA = 6; + idx_RecibosProveedor_RefreshFECHA_EMISION = 7; + idx_RecibosProveedor_RefreshFECHA_VENCIMIENTO = 8; + idx_RecibosProveedor_RefreshDESCRIPCION = 9; + idx_RecibosProveedor_RefreshOBSERVACIONES = 10; + idx_RecibosProveedor_RefreshIMPORTE = 11; + idx_RecibosProveedor_RefreshOTROS_GASTOS = 12; + idx_RecibosProveedor_RefreshIMPORTE_TOTAL = 13; + idx_RecibosProveedor_RefreshFECHA_FACTURA = 14; + idx_RecibosProveedor_RefreshFORMA_PAGO_FACTURA = 15; + idx_RecibosProveedor_RefreshIMPORTE_FACTURA = 16; + idx_RecibosProveedor_RefreshID_PROVEEDOR = 17; + idx_RecibosProveedor_RefreshNOMBRE_PROVEEDOR = 18; + idx_RecibosProveedor_RefreshNIF_CIF_PROVEEDOR = 19; + idx_RecibosProveedor_RefreshENTIDAD_PROVEEDOR = 20; + idx_RecibosProveedor_RefreshSUCURSAL_PROVEEDOR = 21; + idx_RecibosProveedor_RefreshDC_PROVEEDOR = 22; + idx_RecibosProveedor_RefreshCUENTA_PROVEEDOR = 23; + idx_RecibosProveedor_RefreshID_EMPRESA = 24; + idx_RecibosProveedor_RefreshFECHA_ALTA = 25; + idx_RecibosProveedor_RefreshFECHA_MODIFICACION = 26; + idx_RecibosProveedor_RefreshUSUARIO = 27; { PagosProveedor fields } fld_PagosProveedorID = 'ID'; @@ -161,7 +169,7 @@ const type { IRecibosProveedor } IRecibosProveedor = interface(IDAStronglyTypedDataTable) - ['{D680E4E8-463A-4030-B467-473A335896DA}'] + ['{99BA6D6E-1ADC-4073-88CF-3F2D36511AA8}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -173,6 +181,10 @@ type procedure SetSITUACIONValue(const aValue: String); function GetID_FACTURAValue: Integer; procedure SetID_FACTURAValue(const aValue: Integer); + function GetID_REMESAValue: Integer; + procedure SetID_REMESAValue(const aValue: Integer); + function GetREFERENCIA_REMESAValue: String; + procedure SetREFERENCIA_REMESAValue(const aValue: String); function GetFECHA_EMISIONValue: DateTime; procedure SetFECHA_EMISIONValue(const aValue: DateTime); function GetFECHA_VENCIMIENTOValue: DateTime; @@ -223,6 +235,8 @@ type property REFERENCIA_PROVEEDOR: String read GetREFERENCIA_PROVEEDORValue write SetREFERENCIA_PROVEEDORValue; property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; property ID_FACTURA: Integer read GetID_FACTURAValue write SetID_FACTURAValue; + property ID_REMESA: Integer read GetID_REMESAValue write SetID_REMESAValue; + property REFERENCIA_REMESA: String read GetREFERENCIA_REMESAValue write SetREFERENCIA_REMESAValue; property FECHA_EMISION: DateTime read GetFECHA_EMISIONValue write SetFECHA_EMISIONValue; property FECHA_VENCIMIENTO: DateTime read GetFECHA_VENCIMIENTOValue write SetFECHA_VENCIMIENTOValue; property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; @@ -261,6 +275,10 @@ type procedure SetSITUACIONValue(const aValue: String); virtual; function GetID_FACTURAValue: Integer; virtual; procedure SetID_FACTURAValue(const aValue: Integer); virtual; + function GetID_REMESAValue: Integer; virtual; + procedure SetID_REMESAValue(const aValue: Integer); virtual; + function GetREFERENCIA_REMESAValue: String; virtual; + procedure SetREFERENCIA_REMESAValue(const aValue: String); virtual; function GetFECHA_EMISIONValue: DateTime; virtual; procedure SetFECHA_EMISIONValue(const aValue: DateTime); virtual; function GetFECHA_VENCIMIENTOValue: DateTime; virtual; @@ -310,6 +328,8 @@ type property REFERENCIA_PROVEEDOR: String read GetREFERENCIA_PROVEEDORValue write SetREFERENCIA_PROVEEDORValue; property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; property ID_FACTURA: Integer read GetID_FACTURAValue write SetID_FACTURAValue; + property ID_REMESA: Integer read GetID_REMESAValue write SetID_REMESAValue; + property REFERENCIA_REMESA: String read GetREFERENCIA_REMESAValue write SetREFERENCIA_REMESAValue; property FECHA_EMISION: DateTime read GetFECHA_EMISIONValue write SetFECHA_EMISIONValue; property FECHA_VENCIMIENTO: DateTime read GetFECHA_VENCIMIENTOValue write SetFECHA_VENCIMIENTOValue; property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; @@ -340,7 +360,7 @@ type { IRecibosProveedor_Refresh } IRecibosProveedor_Refresh = interface(IDAStronglyTypedDataTable) - ['{0150150A-ED6F-4288-A985-D7032B970E45}'] + ['{EDBDE565-F79D-4A6A-8D70-60F31438BCAD}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -352,6 +372,10 @@ type procedure SetSITUACIONValue(const aValue: String); function GetID_FACTURAValue: Integer; procedure SetID_FACTURAValue(const aValue: Integer); + function GetID_REMESAValue: Integer; + procedure SetID_REMESAValue(const aValue: Integer); + function GetREFERENCIA_REMESAValue: String; + procedure SetREFERENCIA_REMESAValue(const aValue: String); function GetFECHA_EMISIONValue: DateTime; procedure SetFECHA_EMISIONValue(const aValue: DateTime); function GetFECHA_VENCIMIENTOValue: DateTime; @@ -402,6 +426,8 @@ type property REFERENCIA_PROVEEDOR: String read GetREFERENCIA_PROVEEDORValue write SetREFERENCIA_PROVEEDORValue; property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; property ID_FACTURA: Integer read GetID_FACTURAValue write SetID_FACTURAValue; + property ID_REMESA: Integer read GetID_REMESAValue write SetID_REMESAValue; + property REFERENCIA_REMESA: String read GetREFERENCIA_REMESAValue write SetREFERENCIA_REMESAValue; property FECHA_EMISION: DateTime read GetFECHA_EMISIONValue write SetFECHA_EMISIONValue; property FECHA_VENCIMIENTO: DateTime read GetFECHA_VENCIMIENTOValue write SetFECHA_VENCIMIENTOValue; property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; @@ -440,6 +466,10 @@ type procedure SetSITUACIONValue(const aValue: String); virtual; function GetID_FACTURAValue: Integer; virtual; procedure SetID_FACTURAValue(const aValue: Integer); virtual; + function GetID_REMESAValue: Integer; virtual; + procedure SetID_REMESAValue(const aValue: Integer); virtual; + function GetREFERENCIA_REMESAValue: String; virtual; + procedure SetREFERENCIA_REMESAValue(const aValue: String); virtual; function GetFECHA_EMISIONValue: DateTime; virtual; procedure SetFECHA_EMISIONValue(const aValue: DateTime); virtual; function GetFECHA_VENCIMIENTOValue: DateTime; virtual; @@ -489,6 +519,8 @@ type property REFERENCIA_PROVEEDOR: String read GetREFERENCIA_PROVEEDORValue write SetREFERENCIA_PROVEEDORValue; property SITUACION: String read GetSITUACIONValue write SetSITUACIONValue; property ID_FACTURA: Integer read GetID_FACTURAValue write SetID_FACTURAValue; + property ID_REMESA: Integer read GetID_REMESAValue write SetID_REMESAValue; + property REFERENCIA_REMESA: String read GetREFERENCIA_REMESAValue write SetREFERENCIA_REMESAValue; property FECHA_EMISION: DateTime read GetFECHA_EMISIONValue write SetFECHA_EMISIONValue; property FECHA_VENCIMIENTO: DateTime read GetFECHA_VENCIMIENTOValue write SetFECHA_VENCIMIENTOValue; property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; @@ -519,7 +551,7 @@ type { IPagosProveedor } IPagosProveedor = interface(IDAStronglyTypedDataTable) - ['{836B8864-48D5-43BD-A70E-36E829553871}'] + ['{C80BF63F-80D2-4314-813F-8B4B676327C0}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -677,6 +709,26 @@ begin DataTable.Fields[idx_RecibosProveedorID_FACTURA].AsInteger := aValue; end; +function TRecibosProveedorDataTableRules.GetID_REMESAValue: Integer; +begin + result := DataTable.Fields[idx_RecibosProveedorID_REMESA].AsInteger; +end; + +procedure TRecibosProveedorDataTableRules.SetID_REMESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_RecibosProveedorID_REMESA].AsInteger := aValue; +end; + +function TRecibosProveedorDataTableRules.GetREFERENCIA_REMESAValue: String; +begin + result := DataTable.Fields[idx_RecibosProveedorREFERENCIA_REMESA].AsString; +end; + +procedure TRecibosProveedorDataTableRules.SetREFERENCIA_REMESAValue(const aValue: String); +begin + DataTable.Fields[idx_RecibosProveedorREFERENCIA_REMESA].AsString := aValue; +end; + function TRecibosProveedorDataTableRules.GetFECHA_EMISIONValue: DateTime; begin result := DataTable.Fields[idx_RecibosProveedorFECHA_EMISION].AsDateTime; @@ -949,6 +1001,26 @@ begin DataTable.Fields[idx_RecibosProveedor_RefreshID_FACTURA].AsInteger := aValue; end; +function TRecibosProveedor_RefreshDataTableRules.GetID_REMESAValue: Integer; +begin + result := DataTable.Fields[idx_RecibosProveedor_RefreshID_REMESA].AsInteger; +end; + +procedure TRecibosProveedor_RefreshDataTableRules.SetID_REMESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_RecibosProveedor_RefreshID_REMESA].AsInteger := aValue; +end; + +function TRecibosProveedor_RefreshDataTableRules.GetREFERENCIA_REMESAValue: String; +begin + result := DataTable.Fields[idx_RecibosProveedor_RefreshREFERENCIA_REMESA].AsString; +end; + +procedure TRecibosProveedor_RefreshDataTableRules.SetREFERENCIA_REMESAValue(const aValue: String); +begin + DataTable.Fields[idx_RecibosProveedor_RefreshREFERENCIA_REMESA].AsString := aValue; +end; + function TRecibosProveedor_RefreshDataTableRules.GetFECHA_EMISIONValue: DateTime; begin result := DataTable.Fields[idx_RecibosProveedor_RefreshFECHA_EMISION].AsDateTime; diff --git a/Source/Modulos/Recibos de proveedor/Model/schRecibosProveedorServer_Intf.pas b/Source/Modulos/Recibos de proveedor/Model/schRecibosProveedorServer_Intf.pas index 086e6bd3..d679d2bf 100644 --- a/Source/Modulos/Recibos de proveedor/Model/schRecibosProveedorServer_Intf.pas +++ b/Source/Modulos/Recibos de proveedor/Model/schRecibosProveedorServer_Intf.pas @@ -9,20 +9,22 @@ const { Delta rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_RecibosProveedorDelta = '{BCC0F8EA-2780-4D83-973A-E894BB0EF2AF}'; - RID_RecibosProveedor_RefreshDelta = '{19184AE3-ED2E-48EF-8CA9-422567CE161B}'; - RID_PagosProveedorDelta = '{7D84B7A6-CE5E-427D-BF11-E7A74B003876}'; + RID_RecibosProveedorDelta = '{D18482E7-4712-405B-949D-50EF9971E826}'; + RID_RecibosProveedor_RefreshDelta = '{E5A7D96D-DD67-458C-89D6-A82C366301D4}'; + RID_PagosProveedorDelta = '{A03A2B25-848C-486D-AA8E-476068191539}'; type { IRecibosProveedorDelta } IRecibosProveedorDelta = interface(IRecibosProveedor) - ['{BCC0F8EA-2780-4D83-973A-E894BB0EF2AF}'] + ['{D18482E7-4712-405B-949D-50EF9971E826}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldREFERENCIAValue : String; function GetOldREFERENCIA_PROVEEDORValue : String; function GetOldSITUACIONValue : String; function GetOldID_FACTURAValue : Integer; + function GetOldID_REMESAValue : Integer; + function GetOldREFERENCIA_REMESAValue : String; function GetOldFECHA_EMISIONValue : DateTime; function GetOldFECHA_VENCIMIENTOValue : DateTime; function GetOldDESCRIPCIONValue : String; @@ -51,6 +53,8 @@ type property OldREFERENCIA_PROVEEDOR : String read GetOldREFERENCIA_PROVEEDORValue; property OldSITUACION : String read GetOldSITUACIONValue; property OldID_FACTURA : Integer read GetOldID_FACTURAValue; + property OldID_REMESA : Integer read GetOldID_REMESAValue; + property OldREFERENCIA_REMESA : String read GetOldREFERENCIA_REMESAValue; property OldFECHA_EMISION : DateTime read GetOldFECHA_EMISIONValue; property OldFECHA_VENCIMIENTO : DateTime read GetOldFECHA_VENCIMIENTOValue; property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; @@ -94,6 +98,12 @@ type function GetID_FACTURAValue: Integer; virtual; function GetOldID_FACTURAValue: Integer; virtual; procedure SetID_FACTURAValue(const aValue: Integer); virtual; + function GetID_REMESAValue: Integer; virtual; + function GetOldID_REMESAValue: Integer; virtual; + procedure SetID_REMESAValue(const aValue: Integer); virtual; + function GetREFERENCIA_REMESAValue: String; virtual; + function GetOldREFERENCIA_REMESAValue: String; virtual; + procedure SetREFERENCIA_REMESAValue(const aValue: String); virtual; function GetFECHA_EMISIONValue: DateTime; virtual; function GetOldFECHA_EMISIONValue: DateTime; virtual; procedure SetFECHA_EMISIONValue(const aValue: DateTime); virtual; @@ -169,6 +179,10 @@ type property OldSITUACION : String read GetOldSITUACIONValue; property ID_FACTURA : Integer read GetID_FACTURAValue write SetID_FACTURAValue; property OldID_FACTURA : Integer read GetOldID_FACTURAValue; + property ID_REMESA : Integer read GetID_REMESAValue write SetID_REMESAValue; + property OldID_REMESA : Integer read GetOldID_REMESAValue; + property REFERENCIA_REMESA : String read GetREFERENCIA_REMESAValue write SetREFERENCIA_REMESAValue; + property OldREFERENCIA_REMESA : String read GetOldREFERENCIA_REMESAValue; property FECHA_EMISION : DateTime read GetFECHA_EMISIONValue write SetFECHA_EMISIONValue; property OldFECHA_EMISION : DateTime read GetOldFECHA_EMISIONValue; property FECHA_VENCIMIENTO : DateTime read GetFECHA_VENCIMIENTOValue write SetFECHA_VENCIMIENTOValue; @@ -220,13 +234,15 @@ type { IRecibosProveedor_RefreshDelta } IRecibosProveedor_RefreshDelta = interface(IRecibosProveedor_Refresh) - ['{19184AE3-ED2E-48EF-8CA9-422567CE161B}'] + ['{E5A7D96D-DD67-458C-89D6-A82C366301D4}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldREFERENCIAValue : String; function GetOldREFERENCIA_PROVEEDORValue : String; function GetOldSITUACIONValue : String; function GetOldID_FACTURAValue : Integer; + function GetOldID_REMESAValue : Integer; + function GetOldREFERENCIA_REMESAValue : String; function GetOldFECHA_EMISIONValue : DateTime; function GetOldFECHA_VENCIMIENTOValue : DateTime; function GetOldDESCRIPCIONValue : String; @@ -255,6 +271,8 @@ type property OldREFERENCIA_PROVEEDOR : String read GetOldREFERENCIA_PROVEEDORValue; property OldSITUACION : String read GetOldSITUACIONValue; property OldID_FACTURA : Integer read GetOldID_FACTURAValue; + property OldID_REMESA : Integer read GetOldID_REMESAValue; + property OldREFERENCIA_REMESA : String read GetOldREFERENCIA_REMESAValue; property OldFECHA_EMISION : DateTime read GetOldFECHA_EMISIONValue; property OldFECHA_VENCIMIENTO : DateTime read GetOldFECHA_VENCIMIENTOValue; property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; @@ -298,6 +316,12 @@ type function GetID_FACTURAValue: Integer; virtual; function GetOldID_FACTURAValue: Integer; virtual; procedure SetID_FACTURAValue(const aValue: Integer); virtual; + function GetID_REMESAValue: Integer; virtual; + function GetOldID_REMESAValue: Integer; virtual; + procedure SetID_REMESAValue(const aValue: Integer); virtual; + function GetREFERENCIA_REMESAValue: String; virtual; + function GetOldREFERENCIA_REMESAValue: String; virtual; + procedure SetREFERENCIA_REMESAValue(const aValue: String); virtual; function GetFECHA_EMISIONValue: DateTime; virtual; function GetOldFECHA_EMISIONValue: DateTime; virtual; procedure SetFECHA_EMISIONValue(const aValue: DateTime); virtual; @@ -373,6 +397,10 @@ type property OldSITUACION : String read GetOldSITUACIONValue; property ID_FACTURA : Integer read GetID_FACTURAValue write SetID_FACTURAValue; property OldID_FACTURA : Integer read GetOldID_FACTURAValue; + property ID_REMESA : Integer read GetID_REMESAValue write SetID_REMESAValue; + property OldID_REMESA : Integer read GetOldID_REMESAValue; + property REFERENCIA_REMESA : String read GetREFERENCIA_REMESAValue write SetREFERENCIA_REMESAValue; + property OldREFERENCIA_REMESA : String read GetOldREFERENCIA_REMESAValue; property FECHA_EMISION : DateTime read GetFECHA_EMISIONValue write SetFECHA_EMISIONValue; property OldFECHA_EMISION : DateTime read GetOldFECHA_EMISIONValue; property FECHA_VENCIMIENTO : DateTime read GetFECHA_VENCIMIENTOValue write SetFECHA_VENCIMIENTOValue; @@ -424,7 +452,7 @@ type { IPagosProveedorDelta } IPagosProveedorDelta = interface(IPagosProveedor) - ['{7D84B7A6-CE5E-427D-BF11-E7A74B003876}'] + ['{A03A2B25-848C-486D-AA8E-476068191539}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_RECIBOValue : Integer; @@ -619,6 +647,36 @@ begin BusinessProcessor.CurrentChange.NewValueByName[fld_RecibosProveedorID_FACTURA] := aValue; end; +function TRecibosProveedorBusinessProcessorRules.GetID_REMESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RecibosProveedorID_REMESA]; +end; + +function TRecibosProveedorBusinessProcessorRules.GetOldID_REMESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RecibosProveedorID_REMESA]; +end; + +procedure TRecibosProveedorBusinessProcessorRules.SetID_REMESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RecibosProveedorID_REMESA] := aValue; +end; + +function TRecibosProveedorBusinessProcessorRules.GetREFERENCIA_REMESAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RecibosProveedorREFERENCIA_REMESA]; +end; + +function TRecibosProveedorBusinessProcessorRules.GetOldREFERENCIA_REMESAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RecibosProveedorREFERENCIA_REMESA]; +end; + +procedure TRecibosProveedorBusinessProcessorRules.SetREFERENCIA_REMESAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RecibosProveedorREFERENCIA_REMESA] := aValue; +end; + function TRecibosProveedorBusinessProcessorRules.GetFECHA_EMISIONValue: DateTime; begin result := BusinessProcessor.CurrentChange.NewValueByName[fld_RecibosProveedorFECHA_EMISION]; @@ -1021,6 +1079,36 @@ begin BusinessProcessor.CurrentChange.NewValueByName[fld_RecibosProveedor_RefreshID_FACTURA] := aValue; end; +function TRecibosProveedor_RefreshBusinessProcessorRules.GetID_REMESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RecibosProveedor_RefreshID_REMESA]; +end; + +function TRecibosProveedor_RefreshBusinessProcessorRules.GetOldID_REMESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RecibosProveedor_RefreshID_REMESA]; +end; + +procedure TRecibosProveedor_RefreshBusinessProcessorRules.SetID_REMESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RecibosProveedor_RefreshID_REMESA] := aValue; +end; + +function TRecibosProveedor_RefreshBusinessProcessorRules.GetREFERENCIA_REMESAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RecibosProveedor_RefreshREFERENCIA_REMESA]; +end; + +function TRecibosProveedor_RefreshBusinessProcessorRules.GetOldREFERENCIA_REMESAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RecibosProveedor_RefreshREFERENCIA_REMESA]; +end; + +procedure TRecibosProveedor_RefreshBusinessProcessorRules.SetREFERENCIA_REMESAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RecibosProveedor_RefreshREFERENCIA_REMESA] := aValue; +end; + function TRecibosProveedor_RefreshBusinessProcessorRules.GetFECHA_EMISIONValue: DateTime; begin result := BusinessProcessor.CurrentChange.NewValueByName[fld_RecibosProveedor_RefreshFECHA_EMISION]; diff --git a/Source/Modulos/Recibos de proveedor/Model/uBizRecibosProveedor.pas b/Source/Modulos/Recibos de proveedor/Model/uBizRecibosProveedor.pas index 2518230c..b36e93a4 100644 --- a/Source/Modulos/Recibos de proveedor/Model/uBizRecibosProveedor.pas +++ b/Source/Modulos/Recibos de proveedor/Model/uBizRecibosProveedor.pas @@ -77,6 +77,8 @@ type function GetPagos : IBizPagosProveedor; procedure OnNewRecord(Sender: TDADataTable); override; + procedure SetID_REMESAValue(const aValue: Integer); override; + public property Pagos : IBizPagosProveedor read GetPagos write SetPagos; property SeleccionableInterface : ISeleccionable read FSeleccionableInterface @@ -106,6 +108,14 @@ begin Result := FPagos; end; +procedure TBizRecibosProveedor.SetID_REMESAValue(const aValue: Integer); +begin + if (aValue = 0) then + SetFieldNull(DataTable, fld_RecibosProveedorID_REMESA) + else + inherited; +end; + procedure TBizRecibosProveedor.SetPagos(AValue: IBizPagosProveedor); begin FPagos := AValue; diff --git a/Source/Modulos/Recibos de proveedor/Servidor/srvRecibosProveedor_Impl.dfm b/Source/Modulos/Recibos de proveedor/Servidor/srvRecibosProveedor_Impl.dfm index b906d3db..217e93c3 100644 --- a/Source/Modulos/Recibos de proveedor/Servidor/srvRecibosProveedor_Impl.dfm +++ b/Source/Modulos/Recibos de proveedor/Servidor/srvRecibosProveedor_Impl.dfm @@ -23,15 +23,15 @@ object srvRecibosProveedor: TsrvRecibosProveedor TargetTable = 'V_RECIBOS_PROVEEDOR' SQL = 'SELECT ID,'#10' REFERENCIA,'#10' REFERENCIA_PROVEEDOR,'#10' ' + - ' SITUACION,'#10' ID_FACTURA,'#10' FECHA_EMISION,'#10' FEC' + - 'HA_VENCIMIENTO,'#10' DESCRIPCION,'#10' OBSERVACIONES,'#10' ' + - ' IMPORTE,'#10' OTROS_GASTOS,'#10' IMPORTE_TOTAL,'#10' FECH' + - 'A_FACTURA,'#10' FORMA_PAGO_FACTURA,'#10' IMPORTE_FACTURA,'#10' ' + - ' ID_PROVEEDOR,'#10' NOMBRE_PROVEEDOR,'#10' NIF_CIF_PROVE' + - 'EDOR,'#10' ENTIDAD_PROVEEDOR,'#10' SUCURSAL_PROVEEDOR,'#10' ' + - ' DC_PROVEEDOR,'#10' CUENTA_PROVEEDOR,'#10' ID_EMPRESA,'#10' ' + - ' FECHA_ALTA,'#10' FECHA_MODIFICACION,'#10' USUARIO'#10#10'FROM V' + - '_RECIBOS_PROVEEDOR' + ' SITUACION,'#10' ID_FACTURA,'#10' ID_REMESA,'#10' REFEREN' + + 'CIA_REMESA,'#10' FECHA_EMISION,'#10' FECHA_VENCIMIENTO,'#10' ' + + ' DESCRIPCION,'#10' OBSERVACIONES,'#10' IMPORTE,'#10' OTR' + + 'OS_GASTOS,'#10' IMPORTE_TOTAL,'#10' FECHA_FACTURA,'#10' FO' + + 'RMA_PAGO_FACTURA,'#10' IMPORTE_FACTURA,'#10' ID_PROVEEDOR,'#10' ' + + ' NOMBRE_PROVEEDOR,'#10' NIF_CIF_PROVEEDOR,'#10' ENTIDAD' + + '_PROVEEDOR,'#10' SUCURSAL_PROVEEDOR,'#10' DC_PROVEEDOR,'#10' ' + + ' CUENTA_PROVEEDOR,'#10' ID_EMPRESA,'#10' FECHA_ALTA,'#10' ' + + ' FECHA_MODIFICACION,'#10' USUARIO'#10#10'FROM V_RECIBOS_PROVEEDOR' StatementType = stSQL ColumnMappings = < item @@ -137,6 +137,14 @@ object srvRecibosProveedor: TsrvRecibosProveedor item DatasetField = 'REFERENCIA_PROVEEDOR' TableField = 'REFERENCIA_PROVEEDOR' + end + item + DatasetField = 'ID_REMESA' + TableField = 'ID_REMESA' + end + item + DatasetField = 'REFERENCIA_REMESA' + TableField = 'REFERENCIA_REMESA' end> end> Name = 'RecibosProveedor' @@ -195,6 +203,29 @@ object srvRecibosProveedor: TsrvRecibosProveedor Lookup = False LookupCache = False end + item + Name = 'ID_REMESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA_REMESA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end item Name = 'FECHA_EMISION' DataType = datDateTime @@ -433,15 +464,16 @@ object srvRecibosProveedor: TsrvRecibosProveedor TargetTable = 'V_RECIBOS_PROVEEDOR' SQL = 'SELECT ID,'#10' REFERENCIA,'#10' REFERENCIA_PROVEEDOR,'#10' ' + - ' SITUACION,'#10' ID_FACTURA,'#10' FECHA_EMISION,'#10' FEC' + - 'HA_VENCIMIENTO,'#10' DESCRIPCION,'#10' OBSERVACIONES,'#10' ' + - ' IMPORTE,'#10' OTROS_GASTOS,'#10' IMPORTE_TOTAL,'#10' FECH' + - 'A_FACTURA,'#10' FORMA_PAGO_FACTURA,'#10' IMPORTE_FACTURA,'#10' ' + - ' ID_PROVEEDOR,'#10' NOMBRE_PROVEEDOR,'#10' NIF_CIF_PROVE' + - 'EDOR,'#10' ENTIDAD_PROVEEDOR,'#10' SUCURSAL_PROVEEDOR,'#10' ' + - ' DC_PROVEEDOR,'#10' CUENTA_PROVEEDOR,'#10' ID_EMPRESA,'#10' ' + - ' FECHA_ALTA,'#10' FECHA_MODIFICACION,'#10' USUARIO'#10#10'FROM V' + - '_RECIBOS_PROVEEDOR'#10'WHERE'#10' ID = :ID' + ' SITUACION,'#10' ID_FACTURA,'#10' ID_REMESA,'#10' REFEREN' + + 'CIA_REMESA,'#10' FECHA_EMISION,'#10' FECHA_VENCIMIENTO,'#10' ' + + ' DESCRIPCION,'#10' OBSERVACIONES,'#10' IMPORTE,'#10' OTR' + + 'OS_GASTOS,'#10' IMPORTE_TOTAL,'#10' FECHA_FACTURA,'#10' FO' + + 'RMA_PAGO_FACTURA,'#10' IMPORTE_FACTURA,'#10' ID_PROVEEDOR,'#10' ' + + ' NOMBRE_PROVEEDOR,'#10' NIF_CIF_PROVEEDOR,'#10' ENTIDAD' + + '_PROVEEDOR,'#10' SUCURSAL_PROVEEDOR,'#10' DC_PROVEEDOR,'#10' ' + + ' CUENTA_PROVEEDOR,'#10' ID_EMPRESA,'#10' FECHA_ALTA,'#10' ' + + ' FECHA_MODIFICACION,'#10' USUARIO'#10#10'FROM V_RECIBOS_PROVEEDOR'#10'W' + + 'HERE'#10' ID = :ID' StatementType = stSQL ColumnMappings = < item @@ -547,6 +579,14 @@ object srvRecibosProveedor: TsrvRecibosProveedor item DatasetField = 'REFERENCIA_PROVEEDOR' TableField = 'REFERENCIA_PROVEEDOR' + end + item + DatasetField = 'ID_REMESA' + TableField = 'ID_REMESA' + end + item + DatasetField = 'REFERENCIA_REMESA' + TableField = 'REFERENCIA_REMESA' end> end> Name = 'RecibosProveedor_Refresh' @@ -605,6 +645,29 @@ object srvRecibosProveedor: TsrvRecibosProveedor Lookup = False LookupCache = False end + item + Name = 'ID_REMESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA_REMESA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end item Name = 'FECHA_EMISION' DataType = datDateTime @@ -1189,6 +1252,13 @@ object srvRecibosProveedor: TsrvRecibosProveedor Value = '' ParamType = daptInput end + item + Name = 'ID_REMESA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end item Name = 'IMPORTE' DataType = datFloat @@ -1226,9 +1296,9 @@ object srvRecibosProveedor: TsrvRecibosProveedor 'UPDATE RECIBOS_PROVEEDOR'#10' SET '#10' REFERENCIA_PROVEEDOR = :REFE' + 'RENCIA_PROVEEDOR,'#10' FECHA_EMISION = :FECHA_EMISION,'#10' FECHA_' + 'VENCIMIENTO = :FECHA_VENCIMIENTO,'#10' DESCRIPCION = :DESCRIPCION' + - ','#10' OBSERVACIONES = :OBSERVACIONES,'#10' IMPORTE = :IMPORTE,'#10' ' + - ' OTROS_GASTOS = :OTROS_GASTOS,'#10' USUARIO = :USUARIO'#10' WHERE'#10' ' + - ' (ID = :OLD_ID)' + ','#10' OBSERVACIONES = :OBSERVACIONES,'#10' ID_REMESA = :ID_REMESA' + + ','#10' IMPORTE = :IMPORTE,'#10' OTROS_GASTOS = :OTROS_GASTOS,'#10' ' + + 'USUARIO = :USUARIO'#10' WHERE'#10' (ID = :OLD_ID)' StatementType = stSQL ColumnMappings = <> end> diff --git a/Source/Modulos/Recibos de proveedor/Views/RecibosProveedor_view.dpk b/Source/Modulos/Recibos de proveedor/Views/RecibosProveedor_view.dpk index 757912f8..77e5e3f1 100644 --- a/Source/Modulos/Recibos de proveedor/Views/RecibosProveedor_view.dpk +++ b/Source/Modulos/Recibos de proveedor/Views/RecibosProveedor_view.dpk @@ -84,16 +84,18 @@ requires teedb, RecibosProveedor_controller, RecibosProveedor_data, - RecibosProveedor_model; + RecibosProveedor_model, + JSDialog100; contains - uRecibosProveedorViewRegister in 'uRecibosProveedorViewRegister.pas', uEditorRecibosProveedor in 'uEditorRecibosProveedor.pas' {fEditorRecibosProveedor: TfEditorRecibosCliente}, uViewRecibosProveedor in 'uViewRecibosProveedor.pas' {frViewRecibosProveedor: TFrame}, uViewReciboProveedor in 'uViewReciboProveedor.pas' {frViewReciboProveedor: TFrame}, uEditorReciboProveedor in 'uEditorReciboProveedor.pas' {fEditorReciboProveedor: TfEditorReciboCliente}, uViewPagosProveedor in 'uViewPagosProveedor.pas' {frViewPagosProveedor: TFrame}, uEditorFechaPagoProveedor in 'uEditorFechaPagoProveedor.pas' {fEditorFechaPagoProveedor}, - uEditorReciboProveedorReport in 'uEditorReciboProveedorReport.pas' {fEditorReciboProveedorPreview: TfEditorReciboClienteReport}; + uEditorReciboProveedorReport in 'uEditorReciboProveedorReport.pas' {fEditorReciboProveedorPreview: TfEditorReciboClienteReport}, + uEditorElegirRecibosProveedor in 'uEditorElegirRecibosProveedor.pas' {fEditorElegirRecibosProveedor: TfEditorElegirRecibosProveedor}, + uRecibosProveedorViewRegister in 'uRecibosProveedorViewRegister.pas'; end. diff --git a/Source/Modulos/Recibos de proveedor/Views/uEditorElegirRecibosProveedor.dfm b/Source/Modulos/Recibos de proveedor/Views/uEditorElegirRecibosProveedor.dfm new file mode 100644 index 00000000..0090a65e --- /dev/null +++ b/Source/Modulos/Recibos de proveedor/Views/uEditorElegirRecibosProveedor.dfm @@ -0,0 +1,408 @@ +inherited fEditorElegirRecibosProveedor: TfEditorElegirRecibosProveedor + Caption = 'Seleccionar recibos de cliente' + ClientWidth = 654 + ExplicitWidth = 662 + ExplicitHeight = 240 + PixelsPerInch = 96 + TextHeight = 13 + object JvgWizardHeader1: TJvgWizardHeader [0] + Left = 0 + Top = 0 + Width = 654 + Height = 60 + CaptionFont.Charset = DEFAULT_CHARSET + CaptionFont.Color = clWindowText + CaptionFont.Height = -11 + CaptionFont.Name = 'Tahoma' + CaptionFont.Style = [fsBold] + CommentFont.Charset = DEFAULT_CHARSET + CommentFont.Color = clWindowText + CommentFont.Height = -11 + CommentFont.Name = 'Tahoma' + CommentFont.Style = [] + SymbolFont.Charset = DEFAULT_CHARSET + SymbolFont.Color = clHighlightText + SymbolFont.Height = -35 + SymbolFont.Name = 'Wingdings' + SymbolFont.Style = [fsBold] + Captions.Strings = ( + 'Seleccione recibos de cliente') + Comments.Strings = ( + ' ') + Gradient.FromColor = clHighlight + Gradient.ToColor = clWindow + Gradient.Active = False + Gradient.Orientation = fgdVertical + BufferedDraw = False + ExplicitLeft = -8 + ExplicitTop = -21 + ExplicitWidth = 656 + end + inherited JvNavPanelHeader: TJvNavPanelHeader + Top = 144 + Width = 654 + Visible = False + ExplicitTop = 144 + ExplicitWidth = 654 + inherited Image1: TImage + Left = 627 + ExplicitLeft = 629 + end + end + inherited TBXDock: TTBXDock + Top = 171 + Width = 654 + Height = 49 + ExplicitTop = 171 + ExplicitWidth = 654 + ExplicitHeight = 49 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 117 + inherited TBXItem5: TTBXItem + Visible = False + end + inherited TBXItem6: TTBXItem + Visible = False + end + inherited TBXItem36: TTBXItem + Action = actAnchoAuto2 + end + end + inherited tbxFiltro: TTBXToolbar + Left = 117 + Top = 23 + DockPos = 104 + DockRow = 1 + Visible = False + ExplicitLeft = 117 + ExplicitTop = 23 + inherited TBXItem34: TTBXItem + Action = actQuitarFiltro2 + end + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 654 + end + end + inherited StatusBar: TJvStatusBar + Top = 609 + Width = 654 + ExplicitTop = 506 + ExplicitWidth = 654 + end + inline frViewBarraSeleccion1: TfrViewBarraSeleccion [4] + Left = 0 + Top = 628 + Width = 654 + Height = 36 + Align = alBottom + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 4 + ReadOnly = False + ExplicitTop = 628 + ExplicitWidth = 654 + ExplicitHeight = 36 + inherited JvFooter1: TJvFooter + Width = 654 + Height = 36 + ExplicitWidth = 654 + ExplicitHeight = 36 + inherited bSeleccionar: TJvFooterBtn + Left = 442 + Top = 3 + ExplicitLeft = 444 + ExplicitTop = 3 + end + inherited bCancelar: TJvFooterBtn + Left = 546 + Top = 4 + ExplicitLeft = 546 + ExplicitTop = 4 + end + end + inherited BarraSeleccionActionList: TActionList + inherited actSeleccionar: TAction + OnExecute = frViewBarraSeleccion1actSeleccionarExecute + OnUpdate = frViewBarraSeleccion1actSeleccionarUpdate + end + inherited actCancelar: TAction + OnExecute = frViewBarraSeleccion1actCancelarExecute + end + end + end + inherited frViewRecibosProveedor1: TfrViewRecibosProveedor [5] + Top = 220 + Width = 654 + Height = 389 + ExplicitTop = 220 + ExplicitWidth = 654 + ExplicitHeight = 389 + inherited cxGrid: TcxGrid + Width = 654 + Height = 261 + RootLevelOptions.DetailTabsPosition = dtpNone + ExplicitWidth = 654 + ExplicitHeight = 389 + inherited cxGridView: TcxGridDBTableView + DataController.Summary.DefaultGroupSummaryItems = < + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + Position = spFooter + Column = frViewRecibosProveedor1.cxGridViewIMPORTE_TOTAL + end> + DataController.Summary.FooterSummaryItems = < + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = '0 recibos' + Kind = skCount + Column = frViewRecibosProveedor1.cxGridViewFECHA_EMISION + end> + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + Width = 654 + ExplicitWidth = 654 + inherited TBXDock1: TTBXDock + Width = 654 + ExplicitWidth = 654 + inherited TBXDockablePanel1: TTBXDockablePanel + ExplicitWidth = 654 + inherited dxLayoutControl1: TdxLayoutControl + Width = 650 + inherited txtFiltroTodo: TcxTextEdit + ExplicitWidth = 273 + Width = 273 + end + inherited edtFechaIniFiltro: TcxDateEdit + ExplicitWidth = 121 + Width = 121 + end + inherited edtFechaFinFiltro: TcxDateEdit + ExplicitWidth = 337 + Width = 337 + end + end + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 650 + ExplicitWidth = 650 + end + end + end + end + inherited pnlAgrupaciones: TTBXDockablePanel + Top = 363 + ExplicitTop = 260 + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + BuiltInReportLink = True + end + end + inherited cxViewGridPopupMenu: TcxGridPopupMenu + PopupMenus = < + item + GridView = frViewRecibosProveedor1.cxGridView + HitTypes = [gvhtCell] + Index = 0 + end> + end + inherited dxPrintStyleManager1: TdxPrintStyleManager + inherited dxPrintStyleManager1Style1: TdxPSPrintStyle + BuiltInStyle = True + end + end + end + object pnlFiltrar: TTBXDockablePanel [6] + Left = 0 + Top = 60 + Align = alTop + Caption = 'Filtrar' + CaptionRotation = dpcrAlwaysVert + DockedHeight = 84 + DockMode = dmCannotFloat + DockPos = 88 + DockRow = 2 + FloatingWidth = 128 + FloatingHeight = 84 + ShowCaptionWhenDocked = False + SupportedDocks = [dkStandardDock, dkMultiDock] + TabOrder = 5 + ExplicitWidth = 128 + object Label1: TLabel + Left = 296 + Top = 50 + Width = 17 + Height = 13 + Caption = 'y el' + end + object txtFiltroTodo: TcxTextEdit + Left = 168 + Top = 16 + Properties.OnChange = txtFiltroTodoPropertiesChange + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 273 + end + object edtFechaFiltro1: TcxDateEdit + Left = 168 + Top = 46 + Enabled = False + Properties.OnEditValueChanged = edtFechaFiltro1PropertiesEditValueChanged + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 121 + end + object edtFechaFiltro2: TcxDateEdit + Left = 320 + Top = 46 + Enabled = False + Properties.OnEditValueChanged = edtFechaFiltro1PropertiesEditValueChanged + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 121 + end + object rbTodo: TcxRadioButton + Left = 16 + Top = 18 + Width = 145 + Height = 17 + Caption = 'Recibos que contengan:' + Checked = True + TabOrder = 3 + TabStop = True + OnClick = rbTodoClick + LookAndFeel.Kind = lfStandard + LookAndFeel.NativeStyle = True + end + object rbFechas: TcxRadioButton + Left = 16 + Top = 48 + Width = 145 + Height = 17 + Caption = 'Recibos con fechas entre:' + TabOrder = 4 + OnClick = rbTodoClick + LookAndFeel.Kind = lfStandard + LookAndFeel.NativeStyle = True + end + object Button1: TBitBtn + Left = 470 + Top = 43 + Width = 163 + Height = 25 + Action = actQuitarFiltro2 + Caption = 'Quitar filtro y ver todo' + TabOrder = 5 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000000000000000000000000000000000000FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00A505 + E1007204CA00FE00FF00FF00FF00FF00FF00E800F5003E09C100FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00AB17 + F900161DC600C400E700FF00FF00FF00FF00520DC9000F30D600D71BCF00942A + 8A004D493C004D493C00942A8A00D71BCF00FF00FF00FF00FF00D71BCF008B2C + 92002843B900141B980070208D004615BA000F30D600C20BF80069605800F8D5 + AD00F8C89000F8C89000E7AB63004D493C00FF00FF00FF00FF0069605800F8D5 + AD00C8ACA6001036E4002125A6000F30D600B20EF600FF00FF0069605800FFD8 + C000F8D5AD00F8C89000F8C890004D493C004D493C004D493C0069605800FFD8 + C000EFCDAD005F65C6000A38ED002637A300927C6C00FF00FF0069605800F0F0 + F000FFD8C000F8D5AD00F8C8900069605800696058006960580069605800FFF8 + FF008372B1000F30D6002750F7000F30D60025256F00FF00FF00942A8A006960 + 58006960580069605800942A8A00D71BCF00FF00FF00FF00FF00D71BCF004F24 + 9E000F30D600434D8A00605D6C004D69E3000F30D6006D05CC00FF00FF006648 + 54004D493C00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000F30 + D6008F1FF300FF00FF00FF00FF00C811FD003154EB000024D300FF00FF00FF00 + FF00664854004D493C00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF004D493C004D493C00FF00FF00FF00FF00FF00 + FF00FF00FF0066485400696058004D493C00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00696058004D493C00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF0066485400D419D000FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00A8658D0069605800FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00} + end + end + inherited EditorActionList: TActionList [9] + Left = 112 + Top = 192 + inherited actPrevisualizar: TAction + Visible = False + end + inherited actImprimir: TAction + Visible = False + end + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [10] + end + inherited dsDataTable: TDADataSource [11] + Left = 8 + Top = 192 + end + inherited JvFormStorage: TJvFormStorage [13] + end + inherited GridPopupMenu: TPopupMenu + Left = 80 + Top = 192 + end + object EditorSeleccionActionList: TActionList + Images = SmallImages + Left = 152 + Top = 192 + object actBuscar2: TAction + Category = 'Buscar' + Caption = 'Buscar' + ImageIndex = 10 + ShortCut = 114 + end + object actQuitarFiltro2: TAction + Category = 'Buscar' + Caption = 'Quitar filtro y ver todo' + ImageIndex = 19 + OnExecute = actQuitarFiltro2Execute + end + object actAnchoAuto2: TAction + Category = 'Ver' + Caption = 'Ancho autom'#225'tico' + ImageIndex = 21 + OnExecute = actAnchoAuto2Execute + end + end +end diff --git a/Source/Modulos/Recibos de proveedor/Views/uEditorElegirRecibosProveedor.pas b/Source/Modulos/Recibos de proveedor/Views/uEditorElegirRecibosProveedor.pas new file mode 100644 index 00000000..7e187ad7 --- /dev/null +++ b/Source/Modulos/Recibos de proveedor/Views/uEditorElegirRecibosProveedor.pas @@ -0,0 +1,211 @@ +{ +=============================================================================== + Copyright (©) 2007. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los términos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versión: + Versión actual: 1.0.0 + Fecha versión actual: +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uEditorElegirRecibosProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, DB, uDADataTable, Menus, JvAppStorage, JvAppRegistryStorage, + JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns, + ActnList, uCustomView, uViewBase, uViewGridBase, uViewGrid, + JvExComCtrls, JvStatusBar, + ComCtrls, TB2ExtItems, TBXExtItems, TBX, + TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent, + JvNavigationPane, uViewBarraSeleccion, JvgWizardHeader, StdCtrls, + + uViewRecibosProveedor, uEditorRecibosProveedor, uBizRecibosProveedor, uIEditorElegirRecibosProveedor, + Buttons, cxRadioGroup, cxMaskEdit, cxDropDownEdit, cxCalendar, cxControls, + cxContainer, cxEdit, cxTextEdit, TBXDkPanels, JSDialog; + + +type + TfEditorElegirRecibosProveedor = class(TfEditorRecibosProveedor, IEditorElegirRecibosProveedor) + frViewBarraSeleccion1: TfrViewBarraSeleccion; + JvgWizardHeader1: TJvgWizardHeader; + EditorSeleccionActionList: TActionList; + actBuscar2: TAction; + actQuitarFiltro2: TAction; + actAnchoAuto2: TAction; + pnlFiltrar: TTBXDockablePanel; + Label1: TLabel; + txtFiltroTodo: TcxTextEdit; + edtFechaFiltro1: TcxDateEdit; + edtFechaFiltro2: TcxDateEdit; + rbTodo: TcxRadioButton; + rbFechas: TcxRadioButton; + Button1: TBitBtn; + procedure frViewBarraSeleccion1actSeleccionarUpdate(Sender: TObject); + procedure frViewBarraSeleccion1actCancelarExecute(Sender: TObject); + procedure frViewBarraSeleccion1actSeleccionarExecute(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure actAnchoAuto2Execute(Sender: TObject); + procedure actQuitarFiltro2Execute(Sender: TObject); + procedure txtFiltroTodoPropertiesChange(Sender: TObject); + procedure edtFechaFiltro1PropertiesEditValueChanged(Sender: TObject); + procedure rbTodoClick(Sender: TObject); + protected + procedure SetMultiSelect (AValue : Boolean); + function GetMultiSelect : Boolean; + function GetRecibosProveedorSeleccionados: IBizRecibosProveedor; + procedure SetViewGrid(const Value: IViewGridBase); override; + procedure SetMensaje (const AValue: String); + function GetMensaje: String; + public + property Mensaje : String read GetMensaje write SetMensaje; + property RecibosProveedorSeleccionados: IBizRecibosProveedor read GetRecibosProveedorSeleccionados; + property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect; + end; + +implementation + +uses + uEditorGridBase, cxGridCustomTableView, uIntegerListUtils, uDBSelectionListUtils, + uGridUtils, uDialogUtils, uEditorBase, uRecibosProveedorController; + +{$R *.dfm} + +{ TfEditorElegirRecibosProveedor } + +procedure TfEditorElegirRecibosProveedor.actAnchoAuto2Execute(Sender: TObject); +begin + inherited; + actAnchoAuto.Execute; +end; + +procedure TfEditorElegirRecibosProveedor.actQuitarFiltro2Execute(Sender: TObject); +begin +// inherited; + + if Assigned(ViewGrid) then + begin + txtFiltroTodo.Clear; + edtFechaFiltro1.Clear; + edtFechaFiltro2.Clear; + (ViewGrid as IViewRecibosProveedor).FiltrarPorFechas(null, null); + inherited; + end; + +// actQuitarFiltro.Execute; +end; + +procedure TfEditorElegirRecibosProveedor.edtFechaFiltro1PropertiesEditValueChanged(Sender: TObject); +begin + if not VarIsNull(edtFechaFiltro1.EditValue) and not VarIsNull(edtFechaFiltro2.EditValue) then + begin + if (edtFechaFiltro1.EditValue > edtFechaFiltro2.EditValue) then + begin + ShowWarningMessage('La fecha de inicio debe ser anterior a la fecha final'); + edtFechaFiltro1.SetFocus; + end + else + (ViewGrid as IViewRecibosProveedor).FiltrarPorFechas(edtFechaFiltro1.EditValue, edtFechaFiltro2.EditValue); + end; +end; + +procedure TfEditorElegirRecibosProveedor.FormShow(Sender: TObject); +begin + inherited; + EditorActionList.State := asSuspended; + frViewRecibosProveedor1.cxViewGridPopupMenu.PopupMenus.Items[0].HitTypes := []; +end; + +procedure TfEditorElegirRecibosProveedor.frViewBarraSeleccion1actCancelarExecute( + Sender: TObject); +begin + inherited; + Close; +end; + +procedure TfEditorElegirRecibosProveedor.frViewBarraSeleccion1actSeleccionarExecute( + Sender: TObject); +begin + inherited; + ModalResult := mrOk; +end; + +procedure TfEditorElegirRecibosProveedor.frViewBarraSeleccion1actSeleccionarUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (ViewGrid._FocusedView.Controller.SelectedRowCount > 0) +end; + +function TfEditorElegirRecibosProveedor.GetRecibosProveedorSeleccionados: IBizRecibosProveedor; +begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (RecibosProveedor as ISeleccionable).SelectedRecords); + // En SelectedRecords tengo los ID de las filas seleccionadas del grid + Result := (Controller as IRecibosProveedorController).ExtraerSeleccionados(RecibosProveedor) as IBizRecibosProveedor; +end; + +procedure TfEditorElegirRecibosProveedor.rbTodoClick(Sender: TObject); +begin + actQuitarFiltro.Execute; + + if rbTodo.Checked then + begin + edtFechaFiltro1.Enabled := False; + edtFechaFiltro2.Enabled := False; + txtFiltroTodo.Enabled := True; + end + else begin + edtFechaFiltro1.Enabled := True; + edtFechaFiltro2.Enabled := True; + txtFiltroTodo.Enabled := False; + end; +end; + +function TfEditorElegirRecibosProveedor.GetMensaje: String; +begin + Result := JvgWizardHeader1.Comments.Text; +end; + +function TfEditorElegirRecibosProveedor.GetMultiSelect: Boolean; +begin + Result := ViewGrid.MultiSelect; +end; + +procedure TfEditorElegirRecibosProveedor.SetMensaje(const AValue: String); +begin + JvgWizardHeader1.Comments.Text := AValue; +end; + +procedure TfEditorElegirRecibosProveedor.SetMultiSelect(AValue: Boolean); +begin + ViewGrid.MultiSelect := AValue; +end; + +procedure TfEditorElegirRecibosProveedor.SetViewGrid(const Value: IViewGridBase); +begin + inherited; + ViewGrid.OnDblClick := frViewBarraSeleccion1.actSeleccionar.OnExecute; +end; + +procedure TfEditorElegirRecibosProveedor.txtFiltroTodoPropertiesChange(Sender: TObject); +begin + if Assigned(ViewGrid) then + ViewGrid.Filter := txtFiltroTodo.Text; +end; + +end. diff --git a/Source/Modulos/Recibos de proveedor/Views/uRecibosProveedorViewRegister.pas b/Source/Modulos/Recibos de proveedor/Views/uRecibosProveedorViewRegister.pas index a5cdaed4..439f82d0 100644 --- a/Source/Modulos/Recibos de proveedor/Views/uRecibosProveedorViewRegister.pas +++ b/Source/Modulos/Recibos de proveedor/Views/uRecibosProveedorViewRegister.pas @@ -31,7 +31,7 @@ procedure UnregisterViews; implementation uses - uEditorRegistryUtils, uEditorRecibosProveedor, uEditorReciboProveedor, + uEditorRegistryUtils, uEditorRecibosProveedor, uEditorReciboProveedor, uEditorElegirRecibosProveedor, uEditorReciboProveedorReport, uEditorFechaPagoProveedor; procedure RegisterViews; @@ -39,6 +39,7 @@ begin EditorRegistry.RegisterClass(TfEditorFechaPagoProveedor, 'EditorFechaPagoProveedor'); EditorRegistry.RegisterClass(TfEditorRecibosProveedor, 'EditorRecibosProveedor'); EditorRegistry.RegisterClass(TfEditorReciboProveedor, 'EditorReciboProveedor'); + EditorRegistry.RegisterClass(TfEditorElegirRecibosProveedor, 'EditorElegirRecibosProveedor'); EditorRegistry.RegisterClass(TfEditorReciboProveedorPreview, 'EditorRecibosProveedorPreview'); end; @@ -48,6 +49,7 @@ begin EditorRegistry.UnRegisterClass(TfEditorRecibosProveedor); EditorRegistry.UnRegisterClass(TfEditorReciboProveedor); EditorRegistry.UnRegisterClass(TfEditorReciboProveedorPreview); + EditorRegistry.UnRegisterClass(TfEditorElegirRecibosProveedor); end; end. diff --git a/Source/Modulos/Remesas de cliente/Controller/uRemesasClienteController.pas b/Source/Modulos/Remesas de cliente/Controller/uRemesasClienteController.pas index 72cc0817..9cc68380 100644 --- a/Source/Modulos/Remesas de cliente/Controller/uRemesasClienteController.pas +++ b/Source/Modulos/Remesas de cliente/Controller/uRemesasClienteController.pas @@ -425,7 +425,8 @@ begin //Es necesario ya que no se refrescan bien los deltas y despues del applyupdates siguen //existiendo deltas, de esta forma los limpiamos -// ARemesaCliente.Recibos.DataTable.Refresh; + if ARemesaCliente.Recibos.DataTable.HasDelta then + ARemesaCliente.Recibos.DataTable.Refresh; ARemesaCliente.DataTable.ApplyUpdates; diff --git a/Source/Modulos/Remesas de cliente/Views/uEditorRemesaCliente.dfm b/Source/Modulos/Remesas de cliente/Views/uEditorRemesaCliente.dfm index c1959473..99b43cdf 100644 --- a/Source/Modulos/Remesas de cliente/Views/uEditorRemesaCliente.dfm +++ b/Source/Modulos/Remesas de cliente/Views/uEditorRemesaCliente.dfm @@ -8,6 +8,7 @@ inherited fEditorRemesaCliente: TfEditorRemesaCliente ClientWidth = 676 Scaled = False OnClose = CustomEditorClose + ExplicitLeft = -19 ExplicitWidth = 684 ExplicitHeight = 572 PixelsPerInch = 96 @@ -194,10 +195,6 @@ inherited fEditorRemesaCliente: TfEditorRemesaCliente ExplicitHeight = 208 inherited cxGridView: TcxGridDBTableView DataController.Summary.FooterSummaryItems = < - item - Kind = skSum - Column = frViewRecibosRemesaCliente1.cxGridViewUSUARIO - end item Format = ',0.00 '#8364';-,0.00 '#8364 Kind = skSum diff --git a/Source/Modulos/Remesas de cliente/Views/uEditorRemesaCliente.pas b/Source/Modulos/Remesas de cliente/Views/uEditorRemesaCliente.pas index 58dd66bc..23399ce2 100644 --- a/Source/Modulos/Remesas de cliente/Views/uEditorRemesaCliente.pas +++ b/Source/Modulos/Remesas de cliente/Views/uEditorRemesaCliente.pas @@ -247,10 +247,10 @@ Var begin inherited; - if VarIsNull(ASender.FooterSummaryValues[1]) then + if VarIsNull(ASender.FooterSummaryValues[0]) then AImporteTotal := 0 else - AImporteTotal := ASender.FooterSummaryValues[1]; + AImporteTotal := ASender.FooterSummaryValues[0]; if Assigned(RemesaCliente) then begin diff --git a/Source/Modulos/Remesas de proveedor/Controller/RemesasProveedor_controller.bdsproj b/Source/Modulos/Remesas de proveedor/Controller/RemesasProveedor_controller.bdsproj new file mode 100644 index 00000000..af9f7da3 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Controller/RemesasProveedor_controller.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + RemesasProveedor_controller.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + True + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Modulos/Remesas de proveedor/Controller/RemesasProveedor_controller.dpk b/Source/Modulos/Remesas de proveedor/Controller/RemesasProveedor_controller.dpk new file mode 100644 index 00000000..8fac816c --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Controller/RemesasProveedor_controller.dpk @@ -0,0 +1,62 @@ +package RemesasProveedor_controller; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + cxLibraryD10, + dxThemeD10, + dsnap, + vcldb, + adortl, + GUISDK_D10, + ccpack10, + designide, + xmlrtl, + vclactnband, + vclx, + cfpack_d10, + JvAppFrmD10R, + vcljpg, + JclVcl, + Jcl, + JvSystemD10R, + JvCoreD10R, + Contactos_model, + Contactos_controller, + RemesasProveedor_model, + RecibosProveedor_controller, + RemesasProveedor_data; + +contains + uIEditorRemesasProveedor in 'View\uIEditorRemesasProveedor.pas', + uIEditorRemesaProveedor in 'View\uIEditorRemesaProveedor.pas', + uRemesasProveedorController in 'uRemesasProveedorController.pas', + uRemesasProveedorReportController in 'uRemesasProveedorReportController.pas', + uIEditorRemesasProveedorPreview in 'View\uIEditorRemesasProveedorPreview.pas'; + +end. diff --git a/Source/Modulos/Remesas de proveedor/Controller/RemesasProveedor_controller.rc b/Source/Modulos/Remesas de proveedor/Controller/RemesasProveedor_controller.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Remesas de proveedor/Controller/RemesasProveedor_controller.res b/Source/Modulos/Remesas de proveedor/Controller/RemesasProveedor_controller.res new file mode 100644 index 0000000000000000000000000000000000000000..36f26e234a8ac66a47e95cec6d496cf2f1442471 GIT binary patch literal 32 UcmZQzU|>)H;{X347|28c09i@|9RL6T literal 0 HcmV?d00001 diff --git a/Source/Modulos/Remesas de proveedor/Controller/View/uIEditorRemesaProveedor.pas b/Source/Modulos/Remesas de proveedor/Controller/View/uIEditorRemesaProveedor.pas new file mode 100644 index 00000000..51a46390 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Controller/View/uIEditorRemesaProveedor.pas @@ -0,0 +1,22 @@ +unit uIEditorRemesaProveedor; + +interface + +uses + uEditorDBItem, uBizRemesasProveedor, uRemesasProveedorController; + +type + IEditorRemesaProveedor = interface(IEditorDBItem) + ['{EAAC2686-ED1C-4308-86EA-78E5EBFB0D59}'] + function GetController : IRemesasProveedorController; + procedure SetController (const Value : IRemesasProveedorController); + property Controller : IRemesasProveedorController read GetController write SetController; + + function GetRemesaProveedor: IBizRemesaProveedor; + procedure SetRemesaProveedor(const Value: IBizRemesaProveedor); + property RemesaProveedor: IBizRemesaProveedor read GetRemesaProveedor write SetRemesaProveedor; + end; + +implementation + +end. diff --git a/Source/Modulos/Remesas de proveedor/Controller/View/uIEditorRemesasProveedor.pas b/Source/Modulos/Remesas de proveedor/Controller/View/uIEditorRemesasProveedor.pas new file mode 100644 index 00000000..2037d65f --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Controller/View/uIEditorRemesasProveedor.pas @@ -0,0 +1,23 @@ +unit uIEditorRemesasProveedor; + +interface + +uses + uEditorGridBase, uBizRemesasProveedor, uRemesasProveedorController; + +type + IEditorRemesasProveedor = interface(IEditorGridBase) + ['{4D261032-199B-4B0F-93BF-AF397A76FAE3}'] + function GetRemesasProveedor: IBizRemesaProveedor; + procedure SetRemesasProveedor(const Value: IBizRemesaProveedor); + property RemesasProveedor: IBizRemesaProveedor read GetRemesasProveedor write SetRemesasProveedor; + + function GetController : IRemesasProveedorController; + procedure SetController (const Value : IRemesasProveedorController); + property Controller : IRemesasProveedorController read GetController write SetController; + end; + + +implementation + +end. diff --git a/Source/Modulos/Remesas de proveedor/Controller/View/uIEditorRemesasProveedorPreview.pas b/Source/Modulos/Remesas de proveedor/Controller/View/uIEditorRemesasProveedorPreview.pas new file mode 100644 index 00000000..9d901e88 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Controller/View/uIEditorRemesasProveedorPreview.pas @@ -0,0 +1,16 @@ +unit uIEditorRemesasProveedorPreview; + +interface + +uses + uEditorPreview; + +type + IEditorRemesasProveedorPreview = interface(IEditorPreview) + ['{5A8DD1FA-B7C8-480E-AA4B-1412316A0E83}'] + end; + + +implementation + +end. diff --git a/Source/Modulos/Remesas de proveedor/Controller/uRemesasProveedorController.pas b/Source/Modulos/Remesas de proveedor/Controller/uRemesasProveedorController.pas new file mode 100644 index 00000000..1bbee6b5 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Controller/uRemesasProveedorController.pas @@ -0,0 +1,475 @@ +unit uRemesasProveedorController; + +interface + + +uses + Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem, + uIDataModuleRemesasProveedor, uBizRemesasProveedor, uProveedoresController, + uBizContactos, uRecibosProveedorController; + +type + IRemesasProveedorController = interface(IObservador) + ['{C14143FE-0806-4E64-93E2-A2C0170BBD41}'] + function Buscar(const ID: Integer): IBizRemesaProveedor; + function BuscarTodos: IBizRemesaProveedor; overload; + procedure Ver(ARemesaProveedor : IBizRemesaProveedor); + procedure VerTodos(ARemesasProveedor: IBizRemesaProveedor); + function Nuevo : IBizRemesaProveedor; + procedure Anadir(ARemesaProveedor : IBizRemesaProveedor); + function Eliminar(const ID : Integer): Boolean; overload; + function Eliminar(ARemesaProveedor : IBizRemesaProveedor): Boolean; overload; + function Guardar(ARemesaProveedor : IBizRemesaProveedor): Boolean; + procedure DescartarCambios(ARemesaProveedor : IBizRemesaProveedor); + function Existe(const ID: Integer) : Boolean; + procedure Preview(ARemesaProveedor : IBizRemesaProveedor); + procedure Print(ARemesaProveedor : IBizRemesaProveedor); + + function ElegirRecibosProveedor(ARemesaProveedor : IBizRemesaProveedor): Boolean; + procedure EliminarReciboProveedor(ARemesaProveedor : IBizRemesaProveedor); + function GetRecibosProveedorController: IRecibosProveedorController; + property RecibosProveedorController: IRecibosProveedorController read GetRecibosProveedorController; + + procedure RecuperarRecibos(ARemesaProveedor: IBizRemesaProveedor); + function ExtraerSeleccionados(ARemesasProveedor: IBizRemesaProveedor) : IBizRemesaProveedor; + end; + + TRemesasProveedorController = class(TObservador, IRemesasProveedorController) + protected + FDataModule : IDataModuleRemesasProveedor; + FRecibosProveedorController: IRecibosProveedorController; + function GetRecibosProveedorController: IRecibosProveedorController; + + procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override; + procedure AsignarID(ARemesaProveedor: IBizRemesaProveedor; const IDNuevo: Integer); virtual; + function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean; + function _Vacio : IBizRemesaProveedor; + + procedure FiltrarEmpresa(ARemesaProveedor: IBizRemesaProveedor); + function ValidarRemesaProveedor(ARemesaProveedor: IBizRemesaProveedor): Boolean; virtual; + + procedure RecuperarRecibos(ARemesaProveedor: IBizRemesaProveedor); + procedure RecuperarObjetos(ARemesaProveedor: IBizRemesaProveedor); virtual; + procedure AsignarDataModule; virtual; + + public + property RecibosProveedorController: IRecibosProveedorController read GetRecibosProveedorController; + + constructor Create; virtual; + destructor Destroy; override; + + function Eliminar(const ID : Integer): Boolean; overload; + function Eliminar(ARemesaProveedor : IBizRemesaProveedor): Boolean; overload; + function Guardar(ARemesaProveedor : IBizRemesaProveedor): Boolean; + procedure DescartarCambios(ARemesaProveedor : IBizRemesaProveedor); virtual; + function Existe(const ID: Integer) : Boolean; virtual; + procedure Anadir(ARemesaProveedor : IBizRemesaProveedor); virtual; + function Buscar(const ID: Integer): IBizRemesaProveedor; virtual; + function BuscarTodos: IBizRemesaProveedor; overload; + function Nuevo : IBizRemesaProveedor; virtual; + procedure Ver(ARemesaProveedor : IBizRemesaProveedor); virtual; + procedure VerTodos(ARemesasProveedor: IBizRemesaProveedor); virtual; + procedure Preview(ARemesaProveedor : IBizRemesaProveedor); virtual; + procedure Print(ARemesaProveedor : IBizRemesaProveedor); virtual; + + function ExtraerSeleccionados(ARemesasProveedor: IBizRemesaProveedor) : IBizRemesaProveedor; virtual; + function ElegirRecibosProveedor(ARemesaProveedor : IBizRemesaProveedor): Boolean; + procedure EliminarReciboProveedor(ARemesaProveedor : IBizRemesaProveedor); + end; + +implementation + +uses + cxControls, DB, uEditorRegistryUtils, schRemesasProveedorClient_Intf, + schRecibosProveedorClient_Intf, uIEditorRemesasProveedor, uIEditorRemesaProveedor, + Dialogs, uDataModuleRemesasProveedor, uDataModuleUsuarios, uDAInterfaces, + uDataTableUtils, uDateUtils, uROTypes, DateUtils, Controls, Windows, + uBizRecibosProveedor, Variants, uRemesasProveedorReportController; + +{ TRemesasProveedorController } + +procedure TRemesasProveedorController.Anadir(ARemesaProveedor: IBizRemesaProveedor); +begin + ARemesaProveedor.Insert; +end; + +procedure TRemesasProveedorController.EliminarReciboProveedor(ARemesaProveedor: IBizRemesaProveedor); +var + ARecibosRemesa : IBizRecibosProveedor; +begin + inherited; + ARecibosRemesa := ARemesaProveedor.Recibos; + RecibosProveedorController.QuitarRemesa(ARecibosRemesa); + //Quitamos el recibo de la remesa sin que el servidor se entere para que no elimine el recibo + DesconectarTabla(ARecibosRemesa.DataTable); + ARecibosRemesa.DataTable.Delete; + ConectarTabla(ARecibosRemesa.DataTable); + ARecibosRemesa := Nil; +end; + +procedure TRemesasProveedorController.AsignarDataModule; +begin + FDataModule := TDataModuleRemesasProveedor.Create(Nil); + FRecibosProveedorController := TRecibosProveedorController.Create; +end; + +procedure TRemesasProveedorController.AsignarID(ARemesaProveedor: IBizRemesaProveedor; const IDNuevo: Integer); +begin + if not Assigned(ARemesaProveedor) then + raise Exception.Create ('RemesaProveedor no asignado'); + + ARemesaProveedor.Edit; + ARemesaProveedor.ID := IDNuevo; + ARemesaProveedor.Post; +end; + +function TRemesasProveedorController.Buscar(const ID: Integer): IBizRemesaProveedor; +begin + Result := (FDataModule as IDataModuleRemesasProveedor).GetItem(ID); + FiltrarEmpresa(Result); +end; + +function TRemesasProveedorController.BuscarTodos: IBizRemesaProveedor; +begin + Result := FDataModule.GetItems; + FiltrarEmpresa(Result); +end; + +constructor TRemesasProveedorController.Create; +begin + AsignarDataModule; +end; + +function TRemesasProveedorController.CreateEditor(const AName: String; + const IID: TGUID; out Intf): Boolean; +begin + Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); +end; + +procedure TRemesasProveedorController.DescartarCambios(ARemesaProveedor: IBizRemesaProveedor); +begin + if not Assigned(ARemesaProveedor) then + raise Exception.Create ('RemesaProveedor no asignado'); + + ShowHourglassCursor; + try + if (ARemesaProveedor.State in dsEditModes) then + ARemesaProveedor.Cancel; + + ARemesaProveedor.DataTable.CancelUpdates; + finally + HideHourglassCursor; + end; +end; + +destructor TRemesasProveedorController.Destroy; +begin + FDataModule := Nil; + FRecibosProveedorController := Nil; + inherited; +end; + +function TRemesasProveedorController.ValidarRemesaProveedor(ARemesaProveedor: IBizRemesaProveedor): Boolean; +begin + Result := False; + + if not Assigned(ARemesaProveedor) then + raise Exception.Create ('Remesa no asignada'); + + if (ARemesaProveedor.DataTable.State in dsEditModes) then + ARemesaProveedor.DataTable.Post; + + if ARemesaProveedor.DataTable.FieldByName(fld_RemesasProveedorFECHA_REMESA).IsNull then + raise Exception.Create('Debe indicar la fecha de esta remesa.'); + + if ARemesaProveedor.ID_DATOS_BANCO < 1 then + raise Exception.Create('Debe la cuenta bancaria sobre la que realizará la remesa.'); + + // Asegurarse de valores en campos "automáticos" + ARemesaProveedor.Edit; + try + ARemesaProveedor.USUARIO := dmUsuarios.LoginInfo.Usuario; + + Result := True; + finally + ARemesaProveedor.Post; + end; +end; + +procedure TRemesasProveedorController.Ver(ARemesaProveedor: IBizRemesaProveedor); +var + AEditor : IEditorRemesaProveedor; +begin + AEditor := NIL; + ShowHourglassCursor; + try + RecuperarObjetos(ARemesaProveedor); + + CreateEditor('EditorRemesaProveedor', IEditorRemesaProveedor, AEditor); + with (AEditor as IEditorRemesaProveedor) do + begin + Controller := Self; //OJO ORDEN MUY IMPORTANTE + RemesaProveedor := ARemesaProveedor; + end; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + try + AEditor.ShowModal; + AEditor.Release; + finally + AEditor := NIL; + end; +end; + +procedure TRemesasProveedorController.VerTodos(ARemesasProveedor: IBizRemesaProveedor); +var + AEditor : IEditorRemesasProveedor; +begin + AEditor := NIL; + ShowHourglassCursor; + try + CreateEditor('EditorRemesasProveedor', IEditorRemesasProveedor, AEditor); + with (AEditor as IEditorRemesasProveedor) do + begin + Controller := Self; //OJO ORDEN MUY IMPORTANTE + RemesasProveedor := ARemesasProveedor; + end; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + AEditor.ShowEmbedded; +end; + +function TRemesasProveedorController._Vacio: IBizRemesaProveedor; +begin + Result := Buscar(ID_NULO); +end; + +function TRemesasProveedorController.Eliminar(const ID: Integer): Boolean; +var + ARemesaProveedor : IBizRemesaProveedor; +begin + ARemesaProveedor := Buscar(ID); + + if not Assigned(ARemesaProveedor) then + raise Exception.Create(Format('No se ha encontrado la remesa con ID = %d', [ID])); + + Result := Eliminar(ARemesaProveedor); + ARemesaProveedor := NIL; +end; + +function TRemesasProveedorController.ElegirRecibosProveedor(ARemesaProveedor: IBizRemesaProveedor): Boolean; +var + ARecibosRemesa : IBizRecibosProveedor; + ARecibosSeleccionados : IBizRecibosProveedor; +begin + Result := False; + + ARecibosSeleccionados := (FRecibosProveedorController.ElegirRecibos(FRecibosProveedorController.BuscarTodosPendientesDevueltos, 'Elija uno o más recibos para incluirlos en esta remesa', True) as IBizRecibosProveedor); + if Assigned(ARecibosSeleccionados) then + begin + ShowHourglassCursor; + try + ARecibosRemesa := ARemesaProveedor.Recibos; + //Copia los recibos seleccionados a los recibos de la remesa sin que el servidor se entere de + //las inserciones + DuplicarRegistros(ARecibosSeleccionados.DataTable,ARecibosRemesa.DataTable, mdrTodos, False, False, True); + FRecibosProveedorController.SetSituacionCobrados(ARecibosRemesa); + Result := True; + finally + HideHourglassCursor; + end; + end; + + ARecibosRemesa := Nil; + ARecibosSeleccionados := Nil; +end; + +function TRemesasProveedorController.Eliminar(ARemesaProveedor: IBizRemesaProveedor): Boolean; +begin + Result := False; + + if not Assigned(ARemesaProveedor) then + raise Exception.Create ('RemesaProveedor no asignada'); + + ShowHourglassCursor; + try + if (ARemesaProveedor.State in dsEditModes) then + ARemesaProveedor.Cancel; + + //Si la llamada a eliminar es por el editor RemesasProveedor, debo recuperar los recibos + //de la remesa a eliminar, en caso de venir por el editor RemesaProveedor ya los tengo + if not Assigned(ARemesaProveedor.Recibos) then + RecuperarRecibos(ARemesaProveedor); + //Eliminaremos la remesa de los recibos asociados + With ARemesaProveedor.Recibos.DataTable do + begin + First; + While not Eof do + begin + RecibosProveedorController.QuitarRemesa(ARemesaProveedor.Recibos); + Next; + end; + end; + + //Como no están declarados como maestro-detalles debemos hacer el applyupdates nosotros + ARemesaProveedor.Recibos.DataTable.ApplyUpdates; + + //Si todo ha ido bien podremos eliminar la remesa + ARemesaProveedor.Delete; + ARemesaProveedor.DataTable.ApplyUpdates; + + HideHourglassCursor; + Result := True; + except + //Hay algun recibo de la remesa que tiene movimientos (Cobros/Devoluciones) posteriores al cobro inicial de la remesa + on E: Exception do + begin + ARemesaProveedor.Recibos.DataTable.CancelUpdates; + ARemesaProveedor.DataTable.CancelUpdates; + HideHourglassCursor; + MessageBox(0, 'Exiten movimientos (Cobros/Devoluciones) en los recibos posteriores al cobro inicial de la remesa', 'Atención', MB_ICONWARNING or MB_OK); + end; + end; +end; + +procedure TRemesasProveedorController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); +begin + inherited; +// +end; + +procedure TRemesasProveedorController.RecuperarObjetos(ARemesaProveedor: IBizRemesaProveedor); +begin + RecuperarRecibos(ARemesaProveedor); +end; + +procedure TRemesasProveedorController.RecuperarRecibos(ARemesaProveedor: IBizRemesaProveedor); +begin + ARemesaProveedor.Recibos := RecibosProveedorController.BuscarTodosRemesa(ARemesaProveedor.ID); +end; + +function TRemesasProveedorController.Existe(const ID: Integer): Boolean; +var + ARemesaProveedor : IBizRemesaProveedor; +begin + try + ARemesaProveedor := Buscar(ID); + Result := Assigned(ARemesaProveedor) and (ARemesaProveedor.ID = ID); + finally + ARemesaProveedor := NIL; + end; +end; + +function TRemesasProveedorController.ExtraerSeleccionados(ARemesasProveedor: IBizRemesaProveedor): IBizRemesaProveedor; +var + ASeleccionados : IBizRemesaProveedor; +begin + ASeleccionados := (Self.Buscar(ID_NULO) as IBizRemesaProveedor); + CopyDataTable(ARemesasProveedor.DataTable, ASeleccionados.DataTable, True); + Result := ASeleccionados; +end; + +procedure TRemesasProveedorController.FiltrarEmpresa(ARemesaProveedor: IBizRemesaProveedor); +begin + if ARemesaProveedor.DataTable.Active then + ARemesaProveedor.DataTable.Active := False; + + // Filtrar los contactos actuales por empresa + with ARemesaProveedor.DataTable.Where do + begin + if NotEmpty then + AddOperator(opAND); + // Para evitar ambigüedades en la SQL del servidor + AddText(fld_RemesasProveedorID_EMPRESA + ' = ' + IntToStr(dmUsuarios.IDEmpresaActual)); +// AddCondition('##' + fld_RemesasProveedorID_EMPRESA, cEqual, dmUsuarios.IDEmpresaActual); + end; +end; + +function TRemesasProveedorController.GetRecibosProveedorController: IRecibosProveedorController; +begin + Result := FRecibosProveedorController; +end; + +function TRemesasProveedorController.Guardar(ARemesaProveedor: IBizRemesaProveedor): Boolean; +var + NuevoID: Integer; + bEsNuevo: Boolean; +begin + Result := False; + + if ValidarRemesaProveedor(ARemesaProveedor) then + begin + ShowHourglassCursor; + try + bEsNuevo := ARemesaProveedor.EsNuevo; + if (bEsNuevo) then + NuevoID := FDataModule.GetNextID(ARemesaProveedor.DataTable.LogicalName) + else + NuevoID := ARemesaProveedor.ID; + + AsignarID(ARemesaProveedor, NuevoID); + //Si es nuevo debemos hacer el applyupdates por la integridad referencial de BD + if bEsNuevo then + ARemesaProveedor.DataTable.ApplyUpdates; + + //Si todo ha ido bien, asignamos la remesa a los recibos asociados + //Como no están declarados como maestro-detalles debemos hacer el applyupdates nosotros + RecibosProveedorController.AsignarRemesa(ARemesaProveedor.Recibos, NuevoID); + ARemesaProveedor.Recibos.DataTable.ApplyUpdates; //En este applyupdates tambien se realizarán todos los cambios acumulados sobre los recibos asociados (EliminarReciboProveedor/ ElegirRecibosProveedor) + + //Es necesario ya que no se refrescan bien los deltas y despues del applyupdates siguen + //existiendo deltas, de esta forma los limpiamos + if ARemesaProveedor.Recibos.DataTable.HasDelta then + ARemesaProveedor.Recibos.DataTable.Refresh; + + ARemesaProveedor.DataTable.ApplyUpdates; + + Result := True; + finally + HideHourglassCursor; + end; + end; +end; + +function TRemesasProveedorController.Nuevo: IBizRemesaProveedor; +var + ARemesaProveedor : IBizRemesaProveedor; +begin + ARemesaProveedor := FDataModule.NewItem; + FiltrarEmpresa(ARemesaProveedor); + ARemesaProveedor.DataTable.Active := True; + ARemesaProveedor.Insert; + Result := ARemesaProveedor; +end; + +procedure TRemesasProveedorController.Preview(ARemesaProveedor: IBizRemesaProveedor); +var + AReportController : IRemesasProveedorReportController; +begin + AReportController := TRemesasProveedorReportController.Create; + try + AReportController.Preview(ARemesaProveedor.ID); + finally + AReportController := NIL; + end; +end; + +procedure TRemesasProveedorController.Print(ARemesaProveedor: IBizRemesaProveedor); +var + AReportController : IRemesasProveedorReportController; +begin + AReportController := TRemesasProveedorReportController.Create; + try + AReportController.Print(ARemesaProveedor.ID); + finally + AReportController := NIL; + end; +end; + +end. diff --git a/Source/Modulos/Remesas de proveedor/Controller/uRemesasProveedorReportController.pas b/Source/Modulos/Remesas de proveedor/Controller/uRemesasProveedorReportController.pas new file mode 100644 index 00000000..3614d0ff --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Controller/uRemesasProveedorReportController.pas @@ -0,0 +1,103 @@ +unit uRemesasProveedorReportController; + +interface + +uses + Classes, SysUtils, uDADataTable, uControllerBase, uIDataModuleRemesasProveedorReport, + uBizRemesasProveedor; + +type + IRemesasProveedorReportController = interface + ['{A89AAA05-19AD-4455-BAF6-8A5373D15FE7}'] + procedure Preview(const ID : integer); + procedure Print(const ID : integer); + end; + + TRemesasProveedorReportController = class(TInterfacedObject, IRemesasProveedorReportController) + private + FDataModule : IDataModuleRemesasProveedorReport; + function CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; + public + constructor Create; + destructor Destroy; override; + + procedure Preview(const ID : integer); + procedure Print(const ID : integer); + end; + + +implementation + +uses + uROTypes, uEditorRegistryUtils, uIEditorRemesasProveedorPreview, + uEditorPreview, uDataModuleRemesasProveedor, uEditorBase, cxControls; + +{ TRemesasProveedorReportController } + +constructor TRemesasProveedorReportController.Create; +begin + FDataModule := TDataModuleRemesasProveedor.Create(Nil); +end; + +function TRemesasProveedorReportController.CreateEditor(const AName: String; + const IID: TGUID; out Intf): Boolean; +begin + Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); +end; + + +destructor TRemesasProveedorReportController.Destroy; +begin + FDataModule := NIL; + inherited; +end; + +procedure TRemesasProveedorReportController.Preview(const ID : integer); +var + AStream: Binary; + AEditor : IEditorRemesasProveedorPreview; +begin + AEditor := NIL; + + ShowHourglassCursor; + try + AStream := FDataModule.GetReport(ID); + try + CreateEditor('EditorRemesasProveedorPreview', IEditorRemesasProveedorPreview, AEditor); + AEditor.LoadFromStream(AStream); + finally + AStream.Free; + end; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + AEditor.Preview; +end; + +procedure TRemesasProveedorReportController.Print(const ID : integer); +var + AStream: Binary; + AEditor : IEditorRemesasProveedorPreview; +begin + AEditor := NIL; + + ShowHourglassCursor; + try + AStream := FDataModule.GetReport(ID); + try + CreateEditor('EditorRemesasProveedorPreview', IEditorRemesasProveedorPreview, AEditor); + AEditor.LoadFromStream(AStream); + finally + AStream.Free; + end; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + AEditor.Print +end; + +end. diff --git a/Source/Modulos/Remesas de proveedor/Data/RemesasProveedor_data.bdsproj b/Source/Modulos/Remesas de proveedor/Data/RemesasProveedor_data.bdsproj new file mode 100644 index 00000000..f595294e --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Data/RemesasProveedor_data.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + RemesasProveedor_data.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + True + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Modulos/Remesas de proveedor/Data/RemesasProveedor_data.dpk b/Source/Modulos/Remesas de proveedor/Data/RemesasProveedor_data.dpk new file mode 100644 index 00000000..61b6d2f9 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Data/RemesasProveedor_data.dpk @@ -0,0 +1,41 @@ +package RemesasProveedor_data; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + dbrtl, + cxLibraryD10, + dxThemeD10, + vcl, + dsnap, + vcldb, + adortl, + RemesasProveedor_model; + +contains + uDataModuleRemesasProveedor in 'uDataModuleRemesasProveedor.pas' {DataModuleRemesasProveedor}; + +end. diff --git a/Source/Modulos/Remesas de proveedor/Data/RemesasProveedor_data.rc b/Source/Modulos/Remesas de proveedor/Data/RemesasProveedor_data.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Remesas de proveedor/Data/RemesasProveedor_data.res b/Source/Modulos/Remesas de proveedor/Data/RemesasProveedor_data.res new file mode 100644 index 0000000000000000000000000000000000000000..36f26e234a8ac66a47e95cec6d496cf2f1442471 GIT binary patch literal 32 UcmZQzU|>)H;{X347|28c09i@|9RL6T literal 0 HcmV?d00001 diff --git a/Source/Modulos/Remesas de proveedor/Data/uDataModuleRemesasProveedor.dfm b/Source/Modulos/Remesas de proveedor/Data/uDataModuleRemesasProveedor.dfm new file mode 100644 index 00000000..434d941c --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Data/uDataModuleRemesasProveedor.dfm @@ -0,0 +1,399 @@ +object DataModuleRemesasProveedor: TDataModuleRemesasProveedor + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + RemoteService = RORemoteService + Adapter = DABinAdapter + SchemaCall.MethodName = 'GetSchemaAsXML' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + end> + Height = 414 + Width = 518 + object RORemoteService: TRORemoteService + ServiceName = 'srvRemesasProveedor' + Message = ROBinMessage1 + Channel = ROWinInetHTTPChannel1 + Left = 48 + Top = 24 + end + object DABinAdapter: TDABINAdapter + Left = 48 + Top = 80 + end + object DADesigntimeCall1: TDADesigntimeCall + RemoteRequest.MethodName = 'Login' + RemoteRequest.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBoolean + end + item + Name = 'User' + ParamType = fIn + DataType = rtString + Value = 'Administrador' + end + item + Name = 'Password' + ParamType = fIn + DataType = rtString + Value = '1' + end + item + Name = 'LoginInfo' + ParamType = fOut + DataType = rtUserDefined + UserClassName = 'TRdxLoginInfo' + end> + RemoteService = LoginRemoteService + Left = 48 + Top = 160 + end + object LoginRemoteService: TRORemoteService + ServiceName = 'srvLogin' + Message = ROBinMessage1 + Channel = ROWinInetHTTPChannel1 + Left = 48 + Top = 216 + end + object ROWinInetHTTPChannel1: TROWinInetHTTPChannel + ServerLocators = <> + DispatchOptions = [] + ProbeServers = False + ProbeFrequency = 60000 + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/bin' + Left = 48 + Top = 272 + end + object ROBinMessage1: TROBinMessage + Left = 48 + Top = 324 + end + object tbl_RemesasProveedor: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datAutoInc + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'RemesasCliente_ID' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'RemesasCliente_ID_EMPRESA' + Alignment = taLeftJustify + DictionaryEntry = 'RemesasCliente_ID_EMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + ServerAutoRefresh = True + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_REMESA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'RemesasCliente_FECHA_REMESA' + Alignment = taLeftJustify + DictionaryEntry = 'RemesasCliente_FECHA_REMESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'RemesasCliente_DESCRIPCION' + Alignment = taLeftJustify + DictionaryEntry = 'RemesasCliente_DESCRIPCION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'RemesasCliente_USUARIO' + Alignment = taLeftJustify + DictionaryEntry = 'RemesasCliente_USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ID_DATOS_BANCO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'RemesasCliente_ID_DATOS_BANCO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_ALTA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'RemesasCliente_FECHA_ALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_MODIFICACION' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'RemesasCliente_FECHA_MODIFICACION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTE_TOTAL' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taRightJustify + ServerAutoRefresh = True + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Banco' + Alignment = taLeftJustify + DictionaryEntry = 'RemesasCliente_NOMBRE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ENTIDAD' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cod. entidad' + Alignment = taLeftJustify + DictionaryEntry = 'RemesasCliente_ENTIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SUCURSAL' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cod. sucursal' + Alignment = taLeftJustify + DictionaryEntry = 'RemesasCliente_SUCURSAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DC' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'RemesasCliente_DC' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CUENTA' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cuenta' + Alignment = taLeftJustify + DictionaryEntry = 'RemesasCliente_CUENTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SUFIJO_N19' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Sufijo N19' + Alignment = taLeftJustify + DictionaryEntry = 'RemesasCliente_SUFIJO_N19' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SUFIJO_N58' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Sufijo N58' + Alignment = taLeftJustify + DictionaryEntry = 'RemesasCliente_SUFIJO_N58' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'RemesasProveedor' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'RemesasProveedor' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'RemesasProveedor' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABinAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'RemesasProveedor' + IndexDefs = <> + Left = 272 + Top = 160 + end + object ds_RemesasProveedor: TDADataSource + DataTable = tbl_RemesasProveedor + Left = 272 + Top = 96 + end +end diff --git a/Source/Modulos/Remesas de proveedor/Data/uDataModuleRemesasProveedor.pas b/Source/Modulos/Remesas de proveedor/Data/uDataModuleRemesasProveedor.pas new file mode 100644 index 00000000..c5f3a295 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Data/uDataModuleRemesasProveedor.pas @@ -0,0 +1,131 @@ +unit uDataModuleRemesasProveedor; + +interface + +uses + SysUtils, Classes, DB, uDAClientDataModule, uDADataTable, uDABINAdapter, + uDAScriptingProvider, uDACDSDataTable, uROWinInetHttpChannel, uROTypes, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uDADesigntimeCall, + uIDataModuleRemesasProveedor, uIDataModuleRemesasProveedorReport, uBizRemesasProveedor; + +type + TDataModuleRemesasProveedor = class(TDAClientDataModule, IDataModuleRemesasProveedor, IDataModuleRemesasProveedorReport) + RORemoteService: TRORemoteService; + DABinAdapter: TDABINAdapter; + DADesigntimeCall1: TDADesigntimeCall; + LoginRemoteService: TRORemoteService; + ROWinInetHTTPChannel1: TROWinInetHTTPChannel; + ROBinMessage1: TROBinMessage; + tbl_RemesasProveedor: TDACDSDataTable; + ds_RemesasProveedor: TDADataSource; + procedure DAClientDataModuleCreate(Sender: TObject); + + protected + function _CloneDataTable (const ADataTable : TDACDSDataTable): TDACDSDataTable; overload; + procedure AsignarClaseNegocio(var ARemesaProveedor: TDACDSDataTable); virtual; + function darNombreGenerador(DataSetName: String): String; virtual; + public + function GetItems : IBizRemesaProveedor; overload; + function GetItem(const ID : Integer) : IBizRemesaProveedor; + function GetNextID(const DataSetName : String) : Integer; + function NewItem : IBizRemesaProveedor; + + // Report + function GetReport(const ID: Integer): Binary; + end; + +implementation + +{$R *.DFM} + +uses + FactuGES_Intf, uDataModuleConexion, uDataTableUtils, cxControls, uDAInterfaces, + schRemesasProveedorClient_Intf, Dialogs; + +{ TdmRemesasProveedor } + +procedure TDataModuleRemesasProveedor.AsignarClaseNegocio(var ARemesaProveedor: TDACDSDataTable); +begin + ARemesaProveedor.BusinessRulesID := BIZ_CLIENT_REMESAPROVEEDOR; +end; + +procedure TDataModuleRemesasProveedor.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmConexion.Channel; + RORemoteService.Message := dmConexion.Message; +end; + +function TDataModuleRemesasProveedor.DarNombreGenerador(DataSetName: String): String; +begin + if DataSetName = nme_RemesasProveedor then + Result := 'GEN_REMESAS_Proveedor_ID'; +end; + +function TDataModuleRemesasProveedor.GetNextID(const DataSetName: String): Integer; +var + aGeneratorName : String; +begin + aGeneratorName := DarNombreGenerador(DataSetName); + Result := (RORemoteService as IsrvRemesasProveedor).GetNextAutoInc(aGeneratorName) +end; + +function TDataModuleRemesasProveedor.GetReport(const ID: Integer): Binary; +begin + Result := (RORemoteService as IsrvRemesasProveedor).GenerateReport(ID); +end; + +function TDataModuleRemesasProveedor.NewItem: IBizRemesaProveedor; +begin + Result := GetItem(ID_NULO) +end; + +function TDataModuleRemesasProveedor._CloneDataTable(const ADataTable : TDACDSDataTable): TDACDSDataTable; +begin + Result := NIL; + + if not Assigned(ADataTable) then + raise Exception.Create ('No se ha asignado la tabla de origen (CloneDataTable)'); + + Result := TDACDSDataTable.Create(NIL); + CloneDataTable(ADataTable, Result); +end; + +function TDataModuleRemesasProveedor.GetItem(const ID: Integer): IBizRemesaProveedor; +begin + ShowHourglassCursor; + try + Result := Self.GetItems; + with Result.DataTable.Where do + begin + if NotEmpty then + AddOperator(opAND); + OpenBraket; + AddText(fld_RemesasProveedorID + ' = ' + IntToStr(ID)); + CloseBraket; + end; + finally + HideHourglassCursor; + end; +end; + +function TDataModuleRemesasProveedor.GetItems: IBizRemesaProveedor; +var + ARemesaProveedor : TDACDSDataTable; +begin + ShowHourglassCursor; + try + ARemesaProveedor := _CloneDataTable(tbl_RemesasProveedor); + // EL CAMPO REFERENCIA TIENE QUE SER AUTOREFRESH!!!!! + ARemesaProveedor.FieldByName(fld_RemesasProveedorREFERENCIA).ServerAutoRefresh := TRUE; + ARemesaProveedor.FieldByName(fld_RemesasProveedorIMPORTE_TOTAL).ServerAutoRefresh := TRUE; + + AsignarClaseNegocio(ARemesaProveedor); + Result := (ARemesaProveedor as IBizRemesaProveedor); + finally + HideHourglassCursor; + end; +end; + + +end. diff --git a/Source/Modulos/Remesas de proveedor/Model/Data/uIDataModuleRemesasProveedor.pas b/Source/Modulos/Remesas de proveedor/Model/Data/uIDataModuleRemesasProveedor.pas new file mode 100644 index 00000000..c21c96fc --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Model/Data/uIDataModuleRemesasProveedor.pas @@ -0,0 +1,19 @@ +unit uIDataModuleRemesasProveedor; + +interface + +uses + uBizRemesasProveedor; + +type + IDataModuleRemesasProveedor = interface + ['{6073E44A-0B61-4D26-BCDE-33150D88C91B}'] + function GetItems: IBizRemesaProveedor; + function GetItem(const ID : Integer) : IBizRemesaProveedor; + function GetNextID(const DataSetName : String) : Integer; + function NewItem : IBizRemesaProveedor; + end; + +implementation + +end. diff --git a/Source/Modulos/Remesas de proveedor/Model/Data/uIDataModuleRemesasProveedorReport.pas b/Source/Modulos/Remesas de proveedor/Model/Data/uIDataModuleRemesasProveedorReport.pas new file mode 100644 index 00000000..220c6124 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Model/Data/uIDataModuleRemesasProveedorReport.pas @@ -0,0 +1,16 @@ +unit uIDataModuleRemesasProveedorReport; + +interface + +uses + SysUtils, Classes, uROTypes; + +type + IDataModuleRemesasProveedorReport = interface + ['{7A2C1A03-51EB-4F7F-937F-660B31EE18B2}'] + function GetReport(const ID: Integer): Binary; + end; + +implementation + +end. diff --git a/Source/Modulos/Remesas de proveedor/Model/RemesasProveedor_model.bdsproj b/Source/Modulos/Remesas de proveedor/Model/RemesasProveedor_model.bdsproj new file mode 100644 index 00000000..2d877da2 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Model/RemesasProveedor_model.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + RemesasProveedor_model.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + True + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Modulos/Remesas de proveedor/Model/RemesasProveedor_model.dpk b/Source/Modulos/Remesas de proveedor/Model/RemesasProveedor_model.dpk new file mode 100644 index 00000000..7ffb06c3 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Model/RemesasProveedor_model.dpk @@ -0,0 +1,46 @@ +package RemesasProveedor_model; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + dsnap, + dbrtl, + vcldb, + vcl, + adortl, + Usuarios, + DataAbstract_D10, + RecibosProveedor_model; + + +contains + uBizRemesasProveedor in 'uBizRemesasProveedor.pas', + uIDataModuleRemesasProveedor in 'Data\uIDataModuleRemesasProveedor.pas', + uIDataModuleRemesasProveedorReport in 'Data\uIDataModuleRemesasProveedorReport.pas', + schRemesasProveedorClient_Intf in 'schRemesasProveedorClient_Intf.pas', + schRemesasProveedorServer_Intf in 'schRemesasProveedorServer_Intf.pas'; + +end. diff --git a/Source/Modulos/Remesas de proveedor/Model/RemesasProveedor_model.rc b/Source/Modulos/Remesas de proveedor/Model/RemesasProveedor_model.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Remesas de proveedor/Model/RemesasProveedor_model.res b/Source/Modulos/Remesas de proveedor/Model/RemesasProveedor_model.res new file mode 100644 index 0000000000000000000000000000000000000000..36f26e234a8ac66a47e95cec6d496cf2f1442471 GIT binary patch literal 32 UcmZQzU|>)H;{X347|28c09i@|9RL6T literal 0 HcmV?d00001 diff --git a/Source/Modulos/Remesas de proveedor/Model/schRemesasProveedorClient_Intf.pas b/Source/Modulos/Remesas de proveedor/Model/schRemesasProveedorClient_Intf.pas new file mode 100644 index 00000000..01251ed4 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Model/schRemesasProveedorClient_Intf.pas @@ -0,0 +1,778 @@ +unit schRemesasProveedorClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +const + { Data table rules ids + Feel free to change them to something more human readable + but make sure they are unique in the context of your application } + RID_darReferencia = '{3D6FDF20-0A49-4834-AD39-B9CEC05728BC}'; + RID_RemesasProveedor = '{9F4452B5-ED06-43F7-AFE9-21A4BF5A3D2D}'; + RID_RemesasProveedor_Refresh = '{DB725E06-D3E1-4820-9256-20F5FA83DDF0}'; + + { Data table names } + nme_darReferencia = 'darReferencia'; + nme_RemesasProveedor = 'RemesasProveedor'; + nme_RemesasProveedor_Refresh = 'RemesasProveedor_Refresh'; + + { darReferencia fields } + fld_darReferenciaVALOR = 'VALOR'; + + { darReferencia field indexes } + idx_darReferenciaVALOR = 0; + + { RemesasProveedor fields } + fld_RemesasProveedorID = 'ID'; + fld_RemesasProveedorID_EMPRESA = 'ID_EMPRESA'; + fld_RemesasProveedorREFERENCIA = 'REFERENCIA'; + fld_RemesasProveedorFECHA_REMESA = 'FECHA_REMESA'; + fld_RemesasProveedorDESCRIPCION = 'DESCRIPCION'; + fld_RemesasProveedorUSUARIO = 'USUARIO'; + fld_RemesasProveedorID_DATOS_BANCO = 'ID_DATOS_BANCO'; + fld_RemesasProveedorFECHA_ALTA = 'FECHA_ALTA'; + fld_RemesasProveedorFECHA_MODIFICACION = 'FECHA_MODIFICACION'; + fld_RemesasProveedorIMPORTE_TOTAL = 'IMPORTE_TOTAL'; + fld_RemesasProveedorNOMBRE = 'NOMBRE'; + fld_RemesasProveedorENTIDAD = 'ENTIDAD'; + fld_RemesasProveedorSUCURSAL = 'SUCURSAL'; + fld_RemesasProveedorDC = 'DC'; + fld_RemesasProveedorCUENTA = 'CUENTA'; + fld_RemesasProveedorSUFIJO_N19 = 'SUFIJO_N19'; + fld_RemesasProveedorSUFIJO_N58 = 'SUFIJO_N58'; + + { RemesasProveedor field indexes } + idx_RemesasProveedorID = 0; + idx_RemesasProveedorID_EMPRESA = 1; + idx_RemesasProveedorREFERENCIA = 2; + idx_RemesasProveedorFECHA_REMESA = 3; + idx_RemesasProveedorDESCRIPCION = 4; + idx_RemesasProveedorUSUARIO = 5; + idx_RemesasProveedorID_DATOS_BANCO = 6; + idx_RemesasProveedorFECHA_ALTA = 7; + idx_RemesasProveedorFECHA_MODIFICACION = 8; + idx_RemesasProveedorIMPORTE_TOTAL = 9; + idx_RemesasProveedorNOMBRE = 10; + idx_RemesasProveedorENTIDAD = 11; + idx_RemesasProveedorSUCURSAL = 12; + idx_RemesasProveedorDC = 13; + idx_RemesasProveedorCUENTA = 14; + idx_RemesasProveedorSUFIJO_N19 = 15; + idx_RemesasProveedorSUFIJO_N58 = 16; + + { RemesasProveedor_Refresh fields } + fld_RemesasProveedor_RefreshID = 'ID'; + fld_RemesasProveedor_RefreshID_EMPRESA = 'ID_EMPRESA'; + fld_RemesasProveedor_RefreshREFERENCIA = 'REFERENCIA'; + fld_RemesasProveedor_RefreshFECHA_REMESA = 'FECHA_REMESA'; + fld_RemesasProveedor_RefreshDESCRIPCION = 'DESCRIPCION'; + fld_RemesasProveedor_RefreshUSUARIO = 'USUARIO'; + fld_RemesasProveedor_RefreshID_DATOS_BANCO = 'ID_DATOS_BANCO'; + fld_RemesasProveedor_RefreshFECHA_ALTA = 'FECHA_ALTA'; + fld_RemesasProveedor_RefreshFECHA_MODIFICACION = 'FECHA_MODIFICACION'; + fld_RemesasProveedor_RefreshIMPORTE_TOTAL = 'IMPORTE_TOTAL'; + fld_RemesasProveedor_RefreshNOMBRE = 'NOMBRE'; + fld_RemesasProveedor_RefreshENTIDAD = 'ENTIDAD'; + fld_RemesasProveedor_RefreshSUCURSAL = 'SUCURSAL'; + fld_RemesasProveedor_RefreshDC = 'DC'; + fld_RemesasProveedor_RefreshCUENTA = 'CUENTA'; + fld_RemesasProveedor_RefreshSUFIJO_N19 = 'SUFIJO_N19'; + fld_RemesasProveedor_RefreshSUFIJO_N58 = 'SUFIJO_N58'; + + { RemesasProveedor_Refresh field indexes } + idx_RemesasProveedor_RefreshID = 0; + idx_RemesasProveedor_RefreshID_EMPRESA = 1; + idx_RemesasProveedor_RefreshREFERENCIA = 2; + idx_RemesasProveedor_RefreshFECHA_REMESA = 3; + idx_RemesasProveedor_RefreshDESCRIPCION = 4; + idx_RemesasProveedor_RefreshUSUARIO = 5; + idx_RemesasProveedor_RefreshID_DATOS_BANCO = 6; + idx_RemesasProveedor_RefreshFECHA_ALTA = 7; + idx_RemesasProveedor_RefreshFECHA_MODIFICACION = 8; + idx_RemesasProveedor_RefreshIMPORTE_TOTAL = 9; + idx_RemesasProveedor_RefreshNOMBRE = 10; + idx_RemesasProveedor_RefreshENTIDAD = 11; + idx_RemesasProveedor_RefreshSUCURSAL = 12; + idx_RemesasProveedor_RefreshDC = 13; + idx_RemesasProveedor_RefreshCUENTA = 14; + idx_RemesasProveedor_RefreshSUFIJO_N19 = 15; + idx_RemesasProveedor_RefreshSUFIJO_N58 = 16; + +type + { IdarReferencia } + IdarReferencia = interface(IDAStronglyTypedDataTable) + ['{419EF698-F812-4BB2-AF2E-4BDCAF09060F}'] + { Property getters and setters } + function GetVALORValue: String; + procedure SetVALORValue(const aValue: String); + + + { Properties } + property VALOR: String read GetVALORValue write SetVALORValue; + end; + + { TdarReferenciaDataTableRules } + TdarReferenciaDataTableRules = class(TDADataTableRules, IdarReferencia) + private + protected + { Property getters and setters } + function GetVALORValue: String; virtual; + procedure SetVALORValue(const aValue: String); virtual; + + { Properties } + property VALOR: String read GetVALORValue write SetVALORValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IRemesasProveedor } + IRemesasProveedor = interface(IDAStronglyTypedDataTable) + ['{88EC9B27-C7D8-4C82-8E83-29E8F70DBB66}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetID_EMPRESAValue: Integer; + procedure SetID_EMPRESAValue(const aValue: Integer); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetFECHA_REMESAValue: DateTime; + procedure SetFECHA_REMESAValue(const aValue: DateTime); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetID_DATOS_BANCOValue: Integer; + procedure SetID_DATOS_BANCOValue(const aValue: Integer); + function GetFECHA_ALTAValue: DateTime; + procedure SetFECHA_ALTAValue(const aValue: DateTime); + function GetFECHA_MODIFICACIONValue: DateTime; + procedure SetFECHA_MODIFICACIONValue(const aValue: DateTime); + function GetIMPORTE_TOTALValue: Float; + procedure SetIMPORTE_TOTALValue(const aValue: Float); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetENTIDADValue: String; + procedure SetENTIDADValue(const aValue: String); + function GetSUCURSALValue: String; + procedure SetSUCURSALValue(const aValue: String); + function GetDCValue: String; + procedure SetDCValue(const aValue: String); + function GetCUENTAValue: String; + procedure SetCUENTAValue(const aValue: String); + function GetSUFIJO_N19Value: String; + procedure SetSUFIJO_N19Value(const aValue: String); + function GetSUFIJO_N58Value: String; + procedure SetSUFIJO_N58Value(const aValue: String); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property FECHA_REMESA: DateTime read GetFECHA_REMESAValue write SetFECHA_REMESAValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property ID_DATOS_BANCO: Integer read GetID_DATOS_BANCOValue write SetID_DATOS_BANCOValue; + property FECHA_ALTA: DateTime read GetFECHA_ALTAValue write SetFECHA_ALTAValue; + property FECHA_MODIFICACION: DateTime read GetFECHA_MODIFICACIONValue write SetFECHA_MODIFICACIONValue; + property IMPORTE_TOTAL: Float read GetIMPORTE_TOTALValue write SetIMPORTE_TOTALValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property ENTIDAD: String read GetENTIDADValue write SetENTIDADValue; + property SUCURSAL: String read GetSUCURSALValue write SetSUCURSALValue; + property DC: String read GetDCValue write SetDCValue; + property CUENTA: String read GetCUENTAValue write SetCUENTAValue; + property SUFIJO_N19: String read GetSUFIJO_N19Value write SetSUFIJO_N19Value; + property SUFIJO_N58: String read GetSUFIJO_N58Value write SetSUFIJO_N58Value; + end; + + { TRemesasProveedorDataTableRules } + TRemesasProveedorDataTableRules = class(TDADataTableRules, IRemesasProveedor) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_EMPRESAValue: Integer; virtual; + procedure SetID_EMPRESAValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetFECHA_REMESAValue: DateTime; virtual; + procedure SetFECHA_REMESAValue(const aValue: DateTime); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetID_DATOS_BANCOValue: Integer; virtual; + procedure SetID_DATOS_BANCOValue(const aValue: Integer); virtual; + function GetFECHA_ALTAValue: DateTime; virtual; + procedure SetFECHA_ALTAValue(const aValue: DateTime); virtual; + function GetFECHA_MODIFICACIONValue: DateTime; virtual; + procedure SetFECHA_MODIFICACIONValue(const aValue: DateTime); virtual; + function GetIMPORTE_TOTALValue: Float; virtual; + procedure SetIMPORTE_TOTALValue(const aValue: Float); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetENTIDADValue: String; virtual; + procedure SetENTIDADValue(const aValue: String); virtual; + function GetSUCURSALValue: String; virtual; + procedure SetSUCURSALValue(const aValue: String); virtual; + function GetDCValue: String; virtual; + procedure SetDCValue(const aValue: String); virtual; + function GetCUENTAValue: String; virtual; + procedure SetCUENTAValue(const aValue: String); virtual; + function GetSUFIJO_N19Value: String; virtual; + procedure SetSUFIJO_N19Value(const aValue: String); virtual; + function GetSUFIJO_N58Value: String; virtual; + procedure SetSUFIJO_N58Value(const aValue: String); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property FECHA_REMESA: DateTime read GetFECHA_REMESAValue write SetFECHA_REMESAValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property ID_DATOS_BANCO: Integer read GetID_DATOS_BANCOValue write SetID_DATOS_BANCOValue; + property FECHA_ALTA: DateTime read GetFECHA_ALTAValue write SetFECHA_ALTAValue; + property FECHA_MODIFICACION: DateTime read GetFECHA_MODIFICACIONValue write SetFECHA_MODIFICACIONValue; + property IMPORTE_TOTAL: Float read GetIMPORTE_TOTALValue write SetIMPORTE_TOTALValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property ENTIDAD: String read GetENTIDADValue write SetENTIDADValue; + property SUCURSAL: String read GetSUCURSALValue write SetSUCURSALValue; + property DC: String read GetDCValue write SetDCValue; + property CUENTA: String read GetCUENTAValue write SetCUENTAValue; + property SUFIJO_N19: String read GetSUFIJO_N19Value write SetSUFIJO_N19Value; + property SUFIJO_N58: String read GetSUFIJO_N58Value write SetSUFIJO_N58Value; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IRemesasProveedor_Refresh } + IRemesasProveedor_Refresh = interface(IDAStronglyTypedDataTable) + ['{53C9C363-9E14-448C-9201-52DB64D0B000}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetID_EMPRESAValue: Integer; + procedure SetID_EMPRESAValue(const aValue: Integer); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetFECHA_REMESAValue: DateTime; + procedure SetFECHA_REMESAValue(const aValue: DateTime); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetID_DATOS_BANCOValue: Integer; + procedure SetID_DATOS_BANCOValue(const aValue: Integer); + function GetFECHA_ALTAValue: DateTime; + procedure SetFECHA_ALTAValue(const aValue: DateTime); + function GetFECHA_MODIFICACIONValue: DateTime; + procedure SetFECHA_MODIFICACIONValue(const aValue: DateTime); + function GetIMPORTE_TOTALValue: Float; + procedure SetIMPORTE_TOTALValue(const aValue: Float); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetENTIDADValue: String; + procedure SetENTIDADValue(const aValue: String); + function GetSUCURSALValue: String; + procedure SetSUCURSALValue(const aValue: String); + function GetDCValue: String; + procedure SetDCValue(const aValue: String); + function GetCUENTAValue: String; + procedure SetCUENTAValue(const aValue: String); + function GetSUFIJO_N19Value: String; + procedure SetSUFIJO_N19Value(const aValue: String); + function GetSUFIJO_N58Value: String; + procedure SetSUFIJO_N58Value(const aValue: String); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property FECHA_REMESA: DateTime read GetFECHA_REMESAValue write SetFECHA_REMESAValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property ID_DATOS_BANCO: Integer read GetID_DATOS_BANCOValue write SetID_DATOS_BANCOValue; + property FECHA_ALTA: DateTime read GetFECHA_ALTAValue write SetFECHA_ALTAValue; + property FECHA_MODIFICACION: DateTime read GetFECHA_MODIFICACIONValue write SetFECHA_MODIFICACIONValue; + property IMPORTE_TOTAL: Float read GetIMPORTE_TOTALValue write SetIMPORTE_TOTALValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property ENTIDAD: String read GetENTIDADValue write SetENTIDADValue; + property SUCURSAL: String read GetSUCURSALValue write SetSUCURSALValue; + property DC: String read GetDCValue write SetDCValue; + property CUENTA: String read GetCUENTAValue write SetCUENTAValue; + property SUFIJO_N19: String read GetSUFIJO_N19Value write SetSUFIJO_N19Value; + property SUFIJO_N58: String read GetSUFIJO_N58Value write SetSUFIJO_N58Value; + end; + + { TRemesasProveedor_RefreshDataTableRules } + TRemesasProveedor_RefreshDataTableRules = class(TDADataTableRules, IRemesasProveedor_Refresh) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_EMPRESAValue: Integer; virtual; + procedure SetID_EMPRESAValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetFECHA_REMESAValue: DateTime; virtual; + procedure SetFECHA_REMESAValue(const aValue: DateTime); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetID_DATOS_BANCOValue: Integer; virtual; + procedure SetID_DATOS_BANCOValue(const aValue: Integer); virtual; + function GetFECHA_ALTAValue: DateTime; virtual; + procedure SetFECHA_ALTAValue(const aValue: DateTime); virtual; + function GetFECHA_MODIFICACIONValue: DateTime; virtual; + procedure SetFECHA_MODIFICACIONValue(const aValue: DateTime); virtual; + function GetIMPORTE_TOTALValue: Float; virtual; + procedure SetIMPORTE_TOTALValue(const aValue: Float); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetENTIDADValue: String; virtual; + procedure SetENTIDADValue(const aValue: String); virtual; + function GetSUCURSALValue: String; virtual; + procedure SetSUCURSALValue(const aValue: String); virtual; + function GetDCValue: String; virtual; + procedure SetDCValue(const aValue: String); virtual; + function GetCUENTAValue: String; virtual; + procedure SetCUENTAValue(const aValue: String); virtual; + function GetSUFIJO_N19Value: String; virtual; + procedure SetSUFIJO_N19Value(const aValue: String); virtual; + function GetSUFIJO_N58Value: String; virtual; + procedure SetSUFIJO_N58Value(const aValue: String); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property FECHA_REMESA: DateTime read GetFECHA_REMESAValue write SetFECHA_REMESAValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property ID_DATOS_BANCO: Integer read GetID_DATOS_BANCOValue write SetID_DATOS_BANCOValue; + property FECHA_ALTA: DateTime read GetFECHA_ALTAValue write SetFECHA_ALTAValue; + property FECHA_MODIFICACION: DateTime read GetFECHA_MODIFICACIONValue write SetFECHA_MODIFICACIONValue; + property IMPORTE_TOTAL: Float read GetIMPORTE_TOTALValue write SetIMPORTE_TOTALValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property ENTIDAD: String read GetENTIDADValue write SetENTIDADValue; + property SUCURSAL: String read GetSUCURSALValue write SetSUCURSALValue; + property DC: String read GetDCValue write SetDCValue; + property CUENTA: String read GetCUENTAValue write SetCUENTAValue; + property SUFIJO_N19: String read GetSUFIJO_N19Value write SetSUFIJO_N19Value; + property SUFIJO_N58: String read GetSUFIJO_N58Value write SetSUFIJO_N58Value; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TdarReferenciaDataTableRules } +constructor TdarReferenciaDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TdarReferenciaDataTableRules.Destroy; +begin + inherited; +end; + +function TdarReferenciaDataTableRules.GetVALORValue: String; +begin + result := DataTable.Fields[idx_darReferenciaVALOR].AsString; +end; + +procedure TdarReferenciaDataTableRules.SetVALORValue(const aValue: String); +begin + DataTable.Fields[idx_darReferenciaVALOR].AsString := aValue; +end; + + +{ TRemesasProveedorDataTableRules } +constructor TRemesasProveedorDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TRemesasProveedorDataTableRules.Destroy; +begin + inherited; +end; + +function TRemesasProveedorDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_RemesasProveedorID].AsInteger; +end; + +procedure TRemesasProveedorDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_RemesasProveedorID].AsInteger := aValue; +end; + +function TRemesasProveedorDataTableRules.GetID_EMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_RemesasProveedorID_EMPRESA].AsInteger; +end; + +procedure TRemesasProveedorDataTableRules.SetID_EMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_RemesasProveedorID_EMPRESA].AsInteger := aValue; +end; + +function TRemesasProveedorDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_RemesasProveedorREFERENCIA].AsString; +end; + +procedure TRemesasProveedorDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_RemesasProveedorREFERENCIA].AsString := aValue; +end; + +function TRemesasProveedorDataTableRules.GetFECHA_REMESAValue: DateTime; +begin + result := DataTable.Fields[idx_RemesasProveedorFECHA_REMESA].AsDateTime; +end; + +procedure TRemesasProveedorDataTableRules.SetFECHA_REMESAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RemesasProveedorFECHA_REMESA].AsDateTime := aValue; +end; + +function TRemesasProveedorDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_RemesasProveedorDESCRIPCION].AsString; +end; + +procedure TRemesasProveedorDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_RemesasProveedorDESCRIPCION].AsString := aValue; +end; + +function TRemesasProveedorDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_RemesasProveedorUSUARIO].AsString; +end; + +procedure TRemesasProveedorDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_RemesasProveedorUSUARIO].AsString := aValue; +end; + +function TRemesasProveedorDataTableRules.GetID_DATOS_BANCOValue: Integer; +begin + result := DataTable.Fields[idx_RemesasProveedorID_DATOS_BANCO].AsInteger; +end; + +procedure TRemesasProveedorDataTableRules.SetID_DATOS_BANCOValue(const aValue: Integer); +begin + DataTable.Fields[idx_RemesasProveedorID_DATOS_BANCO].AsInteger := aValue; +end; + +function TRemesasProveedorDataTableRules.GetFECHA_ALTAValue: DateTime; +begin + result := DataTable.Fields[idx_RemesasProveedorFECHA_ALTA].AsDateTime; +end; + +procedure TRemesasProveedorDataTableRules.SetFECHA_ALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RemesasProveedorFECHA_ALTA].AsDateTime := aValue; +end; + +function TRemesasProveedorDataTableRules.GetFECHA_MODIFICACIONValue: DateTime; +begin + result := DataTable.Fields[idx_RemesasProveedorFECHA_MODIFICACION].AsDateTime; +end; + +procedure TRemesasProveedorDataTableRules.SetFECHA_MODIFICACIONValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RemesasProveedorFECHA_MODIFICACION].AsDateTime := aValue; +end; + +function TRemesasProveedorDataTableRules.GetIMPORTE_TOTALValue: Float; +begin + result := DataTable.Fields[idx_RemesasProveedorIMPORTE_TOTAL].AsFloat; +end; + +procedure TRemesasProveedorDataTableRules.SetIMPORTE_TOTALValue(const aValue: Float); +begin + DataTable.Fields[idx_RemesasProveedorIMPORTE_TOTAL].AsFloat := aValue; +end; + +function TRemesasProveedorDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_RemesasProveedorNOMBRE].AsString; +end; + +procedure TRemesasProveedorDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_RemesasProveedorNOMBRE].AsString := aValue; +end; + +function TRemesasProveedorDataTableRules.GetENTIDADValue: String; +begin + result := DataTable.Fields[idx_RemesasProveedorENTIDAD].AsString; +end; + +procedure TRemesasProveedorDataTableRules.SetENTIDADValue(const aValue: String); +begin + DataTable.Fields[idx_RemesasProveedorENTIDAD].AsString := aValue; +end; + +function TRemesasProveedorDataTableRules.GetSUCURSALValue: String; +begin + result := DataTable.Fields[idx_RemesasProveedorSUCURSAL].AsString; +end; + +procedure TRemesasProveedorDataTableRules.SetSUCURSALValue(const aValue: String); +begin + DataTable.Fields[idx_RemesasProveedorSUCURSAL].AsString := aValue; +end; + +function TRemesasProveedorDataTableRules.GetDCValue: String; +begin + result := DataTable.Fields[idx_RemesasProveedorDC].AsString; +end; + +procedure TRemesasProveedorDataTableRules.SetDCValue(const aValue: String); +begin + DataTable.Fields[idx_RemesasProveedorDC].AsString := aValue; +end; + +function TRemesasProveedorDataTableRules.GetCUENTAValue: String; +begin + result := DataTable.Fields[idx_RemesasProveedorCUENTA].AsString; +end; + +procedure TRemesasProveedorDataTableRules.SetCUENTAValue(const aValue: String); +begin + DataTable.Fields[idx_RemesasProveedorCUENTA].AsString := aValue; +end; + +function TRemesasProveedorDataTableRules.GetSUFIJO_N19Value: String; +begin + result := DataTable.Fields[idx_RemesasProveedorSUFIJO_N19].AsString; +end; + +procedure TRemesasProveedorDataTableRules.SetSUFIJO_N19Value(const aValue: String); +begin + DataTable.Fields[idx_RemesasProveedorSUFIJO_N19].AsString := aValue; +end; + +function TRemesasProveedorDataTableRules.GetSUFIJO_N58Value: String; +begin + result := DataTable.Fields[idx_RemesasProveedorSUFIJO_N58].AsString; +end; + +procedure TRemesasProveedorDataTableRules.SetSUFIJO_N58Value(const aValue: String); +begin + DataTable.Fields[idx_RemesasProveedorSUFIJO_N58].AsString := aValue; +end; + + +{ TRemesasProveedor_RefreshDataTableRules } +constructor TRemesasProveedor_RefreshDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TRemesasProveedor_RefreshDataTableRules.Destroy; +begin + inherited; +end; + +function TRemesasProveedor_RefreshDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_RemesasProveedor_RefreshID].AsInteger; +end; + +procedure TRemesasProveedor_RefreshDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_RemesasProveedor_RefreshID].AsInteger := aValue; +end; + +function TRemesasProveedor_RefreshDataTableRules.GetID_EMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_RemesasProveedor_RefreshID_EMPRESA].AsInteger; +end; + +procedure TRemesasProveedor_RefreshDataTableRules.SetID_EMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_RemesasProveedor_RefreshID_EMPRESA].AsInteger := aValue; +end; + +function TRemesasProveedor_RefreshDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_RemesasProveedor_RefreshREFERENCIA].AsString; +end; + +procedure TRemesasProveedor_RefreshDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_RemesasProveedor_RefreshREFERENCIA].AsString := aValue; +end; + +function TRemesasProveedor_RefreshDataTableRules.GetFECHA_REMESAValue: DateTime; +begin + result := DataTable.Fields[idx_RemesasProveedor_RefreshFECHA_REMESA].AsDateTime; +end; + +procedure TRemesasProveedor_RefreshDataTableRules.SetFECHA_REMESAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RemesasProveedor_RefreshFECHA_REMESA].AsDateTime := aValue; +end; + +function TRemesasProveedor_RefreshDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_RemesasProveedor_RefreshDESCRIPCION].AsString; +end; + +procedure TRemesasProveedor_RefreshDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_RemesasProveedor_RefreshDESCRIPCION].AsString := aValue; +end; + +function TRemesasProveedor_RefreshDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_RemesasProveedor_RefreshUSUARIO].AsString; +end; + +procedure TRemesasProveedor_RefreshDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_RemesasProveedor_RefreshUSUARIO].AsString := aValue; +end; + +function TRemesasProveedor_RefreshDataTableRules.GetID_DATOS_BANCOValue: Integer; +begin + result := DataTable.Fields[idx_RemesasProveedor_RefreshID_DATOS_BANCO].AsInteger; +end; + +procedure TRemesasProveedor_RefreshDataTableRules.SetID_DATOS_BANCOValue(const aValue: Integer); +begin + DataTable.Fields[idx_RemesasProveedor_RefreshID_DATOS_BANCO].AsInteger := aValue; +end; + +function TRemesasProveedor_RefreshDataTableRules.GetFECHA_ALTAValue: DateTime; +begin + result := DataTable.Fields[idx_RemesasProveedor_RefreshFECHA_ALTA].AsDateTime; +end; + +procedure TRemesasProveedor_RefreshDataTableRules.SetFECHA_ALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RemesasProveedor_RefreshFECHA_ALTA].AsDateTime := aValue; +end; + +function TRemesasProveedor_RefreshDataTableRules.GetFECHA_MODIFICACIONValue: DateTime; +begin + result := DataTable.Fields[idx_RemesasProveedor_RefreshFECHA_MODIFICACION].AsDateTime; +end; + +procedure TRemesasProveedor_RefreshDataTableRules.SetFECHA_MODIFICACIONValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RemesasProveedor_RefreshFECHA_MODIFICACION].AsDateTime := aValue; +end; + +function TRemesasProveedor_RefreshDataTableRules.GetIMPORTE_TOTALValue: Float; +begin + result := DataTable.Fields[idx_RemesasProveedor_RefreshIMPORTE_TOTAL].AsFloat; +end; + +procedure TRemesasProveedor_RefreshDataTableRules.SetIMPORTE_TOTALValue(const aValue: Float); +begin + DataTable.Fields[idx_RemesasProveedor_RefreshIMPORTE_TOTAL].AsFloat := aValue; +end; + +function TRemesasProveedor_RefreshDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_RemesasProveedor_RefreshNOMBRE].AsString; +end; + +procedure TRemesasProveedor_RefreshDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_RemesasProveedor_RefreshNOMBRE].AsString := aValue; +end; + +function TRemesasProveedor_RefreshDataTableRules.GetENTIDADValue: String; +begin + result := DataTable.Fields[idx_RemesasProveedor_RefreshENTIDAD].AsString; +end; + +procedure TRemesasProveedor_RefreshDataTableRules.SetENTIDADValue(const aValue: String); +begin + DataTable.Fields[idx_RemesasProveedor_RefreshENTIDAD].AsString := aValue; +end; + +function TRemesasProveedor_RefreshDataTableRules.GetSUCURSALValue: String; +begin + result := DataTable.Fields[idx_RemesasProveedor_RefreshSUCURSAL].AsString; +end; + +procedure TRemesasProveedor_RefreshDataTableRules.SetSUCURSALValue(const aValue: String); +begin + DataTable.Fields[idx_RemesasProveedor_RefreshSUCURSAL].AsString := aValue; +end; + +function TRemesasProveedor_RefreshDataTableRules.GetDCValue: String; +begin + result := DataTable.Fields[idx_RemesasProveedor_RefreshDC].AsString; +end; + +procedure TRemesasProveedor_RefreshDataTableRules.SetDCValue(const aValue: String); +begin + DataTable.Fields[idx_RemesasProveedor_RefreshDC].AsString := aValue; +end; + +function TRemesasProveedor_RefreshDataTableRules.GetCUENTAValue: String; +begin + result := DataTable.Fields[idx_RemesasProveedor_RefreshCUENTA].AsString; +end; + +procedure TRemesasProveedor_RefreshDataTableRules.SetCUENTAValue(const aValue: String); +begin + DataTable.Fields[idx_RemesasProveedor_RefreshCUENTA].AsString := aValue; +end; + +function TRemesasProveedor_RefreshDataTableRules.GetSUFIJO_N19Value: String; +begin + result := DataTable.Fields[idx_RemesasProveedor_RefreshSUFIJO_N19].AsString; +end; + +procedure TRemesasProveedor_RefreshDataTableRules.SetSUFIJO_N19Value(const aValue: String); +begin + DataTable.Fields[idx_RemesasProveedor_RefreshSUFIJO_N19].AsString := aValue; +end; + +function TRemesasProveedor_RefreshDataTableRules.GetSUFIJO_N58Value: String; +begin + result := DataTable.Fields[idx_RemesasProveedor_RefreshSUFIJO_N58].AsString; +end; + +procedure TRemesasProveedor_RefreshDataTableRules.SetSUFIJO_N58Value(const aValue: String); +begin + DataTable.Fields[idx_RemesasProveedor_RefreshSUFIJO_N58].AsString := aValue; +end; + + +initialization + RegisterDataTableRules(RID_darReferencia, TdarReferenciaDataTableRules); + RegisterDataTableRules(RID_RemesasProveedor, TRemesasProveedorDataTableRules); + RegisterDataTableRules(RID_RemesasProveedor_Refresh, TRemesasProveedor_RefreshDataTableRules); + +end. diff --git a/Source/Modulos/Remesas de proveedor/Model/schRemesasProveedorServer_Intf.pas b/Source/Modulos/Remesas de proveedor/Model/schRemesasProveedorServer_Intf.pas new file mode 100644 index 00000000..78f94c43 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Model/schRemesasProveedorServer_Intf.pas @@ -0,0 +1,899 @@ +unit schRemesasProveedorServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schRemesasProveedorClient_Intf; + +const + { Delta rules ids + Feel free to change them to something more human readable + but make sure they are unique in the context of your application } + RID_darReferenciaDelta = '{137F6E55-880D-4E7A-9E63-2B70A858EB7E}'; + RID_RemesasProveedorDelta = '{13DBC096-29B3-43C6-8174-3776F2A23352}'; + RID_RemesasProveedor_RefreshDelta = '{357339B7-C872-48D4-A472-875E190B5EE5}'; + +type + { IdarReferenciaDelta } + IdarReferenciaDelta = interface(IdarReferencia) + ['{137F6E55-880D-4E7A-9E63-2B70A858EB7E}'] + { Property getters and setters } + function GetOldVALORValue : String; + + { Properties } + property OldVALOR : String read GetOldVALORValue; + end; + + { TdarReferenciaBusinessProcessorRules } + TdarReferenciaBusinessProcessorRules = class(TDABusinessProcessorRules, IdarReferencia, IdarReferenciaDelta) + private + protected + { Property getters and setters } + function GetVALORValue: String; virtual; + function GetOldVALORValue: String; virtual; + procedure SetVALORValue(const aValue: String); virtual; + + { Properties } + property VALOR : String read GetVALORValue write SetVALORValue; + property OldVALOR : String read GetOldVALORValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IRemesasProveedorDelta } + IRemesasProveedorDelta = interface(IRemesasProveedor) + ['{13DBC096-29B3-43C6-8174-3776F2A23352}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldID_EMPRESAValue : Integer; + function GetOldREFERENCIAValue : String; + function GetOldFECHA_REMESAValue : DateTime; + function GetOldDESCRIPCIONValue : String; + function GetOldUSUARIOValue : String; + function GetOldID_DATOS_BANCOValue : Integer; + function GetOldFECHA_ALTAValue : DateTime; + function GetOldFECHA_MODIFICACIONValue : DateTime; + function GetOldIMPORTE_TOTALValue : Float; + function GetOldNOMBREValue : String; + function GetOldENTIDADValue : String; + function GetOldSUCURSALValue : String; + function GetOldDCValue : String; + function GetOldCUENTAValue : String; + function GetOldSUFIJO_N19Value : String; + function GetOldSUFIJO_N58Value : String; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldFECHA_REMESA : DateTime read GetOldFECHA_REMESAValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldID_DATOS_BANCO : Integer read GetOldID_DATOS_BANCOValue; + property OldFECHA_ALTA : DateTime read GetOldFECHA_ALTAValue; + property OldFECHA_MODIFICACION : DateTime read GetOldFECHA_MODIFICACIONValue; + property OldIMPORTE_TOTAL : Float read GetOldIMPORTE_TOTALValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldENTIDAD : String read GetOldENTIDADValue; + property OldSUCURSAL : String read GetOldSUCURSALValue; + property OldDC : String read GetOldDCValue; + property OldCUENTA : String read GetOldCUENTAValue; + property OldSUFIJO_N19 : String read GetOldSUFIJO_N19Value; + property OldSUFIJO_N58 : String read GetOldSUFIJO_N58Value; + end; + + { TRemesasProveedorBusinessProcessorRules } + TRemesasProveedorBusinessProcessorRules = class(TDABusinessProcessorRules, IRemesasProveedor, IRemesasProveedorDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetOldIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_EMPRESAValue: Integer; virtual; + function GetOldID_EMPRESAValue: Integer; virtual; + procedure SetID_EMPRESAValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetFECHA_REMESAValue: DateTime; virtual; + function GetOldFECHA_REMESAValue: DateTime; virtual; + procedure SetFECHA_REMESAValue(const aValue: DateTime); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetID_DATOS_BANCOValue: Integer; virtual; + function GetOldID_DATOS_BANCOValue: Integer; virtual; + procedure SetID_DATOS_BANCOValue(const aValue: Integer); virtual; + function GetFECHA_ALTAValue: DateTime; virtual; + function GetOldFECHA_ALTAValue: DateTime; virtual; + procedure SetFECHA_ALTAValue(const aValue: DateTime); virtual; + function GetFECHA_MODIFICACIONValue: DateTime; virtual; + function GetOldFECHA_MODIFICACIONValue: DateTime; virtual; + procedure SetFECHA_MODIFICACIONValue(const aValue: DateTime); virtual; + function GetIMPORTE_TOTALValue: Float; virtual; + function GetOldIMPORTE_TOTALValue: Float; virtual; + procedure SetIMPORTE_TOTALValue(const aValue: Float); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetENTIDADValue: String; virtual; + function GetOldENTIDADValue: String; virtual; + procedure SetENTIDADValue(const aValue: String); virtual; + function GetSUCURSALValue: String; virtual; + function GetOldSUCURSALValue: String; virtual; + procedure SetSUCURSALValue(const aValue: String); virtual; + function GetDCValue: String; virtual; + function GetOldDCValue: String; virtual; + procedure SetDCValue(const aValue: String); virtual; + function GetCUENTAValue: String; virtual; + function GetOldCUENTAValue: String; virtual; + procedure SetCUENTAValue(const aValue: String); virtual; + function GetSUFIJO_N19Value: String; virtual; + function GetOldSUFIJO_N19Value: String; virtual; + procedure SetSUFIJO_N19Value(const aValue: String); virtual; + function GetSUFIJO_N58Value: String; virtual; + function GetOldSUFIJO_N58Value: String; virtual; + procedure SetSUFIJO_N58Value(const aValue: String); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property OldID : Integer read GetOldIDValue; + property ID_EMPRESA : Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property FECHA_REMESA : DateTime read GetFECHA_REMESAValue write SetFECHA_REMESAValue; + property OldFECHA_REMESA : DateTime read GetOldFECHA_REMESAValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property ID_DATOS_BANCO : Integer read GetID_DATOS_BANCOValue write SetID_DATOS_BANCOValue; + property OldID_DATOS_BANCO : Integer read GetOldID_DATOS_BANCOValue; + property FECHA_ALTA : DateTime read GetFECHA_ALTAValue write SetFECHA_ALTAValue; + property OldFECHA_ALTA : DateTime read GetOldFECHA_ALTAValue; + property FECHA_MODIFICACION : DateTime read GetFECHA_MODIFICACIONValue write SetFECHA_MODIFICACIONValue; + property OldFECHA_MODIFICACION : DateTime read GetOldFECHA_MODIFICACIONValue; + property IMPORTE_TOTAL : Float read GetIMPORTE_TOTALValue write SetIMPORTE_TOTALValue; + property OldIMPORTE_TOTAL : Float read GetOldIMPORTE_TOTALValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property ENTIDAD : String read GetENTIDADValue write SetENTIDADValue; + property OldENTIDAD : String read GetOldENTIDADValue; + property SUCURSAL : String read GetSUCURSALValue write SetSUCURSALValue; + property OldSUCURSAL : String read GetOldSUCURSALValue; + property DC : String read GetDCValue write SetDCValue; + property OldDC : String read GetOldDCValue; + property CUENTA : String read GetCUENTAValue write SetCUENTAValue; + property OldCUENTA : String read GetOldCUENTAValue; + property SUFIJO_N19 : String read GetSUFIJO_N19Value write SetSUFIJO_N19Value; + property OldSUFIJO_N19 : String read GetOldSUFIJO_N19Value; + property SUFIJO_N58 : String read GetSUFIJO_N58Value write SetSUFIJO_N58Value; + property OldSUFIJO_N58 : String read GetOldSUFIJO_N58Value; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IRemesasProveedor_RefreshDelta } + IRemesasProveedor_RefreshDelta = interface(IRemesasProveedor_Refresh) + ['{357339B7-C872-48D4-A472-875E190B5EE5}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldID_EMPRESAValue : Integer; + function GetOldREFERENCIAValue : String; + function GetOldFECHA_REMESAValue : DateTime; + function GetOldDESCRIPCIONValue : String; + function GetOldUSUARIOValue : String; + function GetOldID_DATOS_BANCOValue : Integer; + function GetOldFECHA_ALTAValue : DateTime; + function GetOldFECHA_MODIFICACIONValue : DateTime; + function GetOldIMPORTE_TOTALValue : Float; + function GetOldNOMBREValue : String; + function GetOldENTIDADValue : String; + function GetOldSUCURSALValue : String; + function GetOldDCValue : String; + function GetOldCUENTAValue : String; + function GetOldSUFIJO_N19Value : String; + function GetOldSUFIJO_N58Value : String; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldFECHA_REMESA : DateTime read GetOldFECHA_REMESAValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldID_DATOS_BANCO : Integer read GetOldID_DATOS_BANCOValue; + property OldFECHA_ALTA : DateTime read GetOldFECHA_ALTAValue; + property OldFECHA_MODIFICACION : DateTime read GetOldFECHA_MODIFICACIONValue; + property OldIMPORTE_TOTAL : Float read GetOldIMPORTE_TOTALValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldENTIDAD : String read GetOldENTIDADValue; + property OldSUCURSAL : String read GetOldSUCURSALValue; + property OldDC : String read GetOldDCValue; + property OldCUENTA : String read GetOldCUENTAValue; + property OldSUFIJO_N19 : String read GetOldSUFIJO_N19Value; + property OldSUFIJO_N58 : String read GetOldSUFIJO_N58Value; + end; + + { TRemesasProveedor_RefreshBusinessProcessorRules } + TRemesasProveedor_RefreshBusinessProcessorRules = class(TDABusinessProcessorRules, IRemesasProveedor_Refresh, IRemesasProveedor_RefreshDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetOldIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_EMPRESAValue: Integer; virtual; + function GetOldID_EMPRESAValue: Integer; virtual; + procedure SetID_EMPRESAValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetFECHA_REMESAValue: DateTime; virtual; + function GetOldFECHA_REMESAValue: DateTime; virtual; + procedure SetFECHA_REMESAValue(const aValue: DateTime); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetID_DATOS_BANCOValue: Integer; virtual; + function GetOldID_DATOS_BANCOValue: Integer; virtual; + procedure SetID_DATOS_BANCOValue(const aValue: Integer); virtual; + function GetFECHA_ALTAValue: DateTime; virtual; + function GetOldFECHA_ALTAValue: DateTime; virtual; + procedure SetFECHA_ALTAValue(const aValue: DateTime); virtual; + function GetFECHA_MODIFICACIONValue: DateTime; virtual; + function GetOldFECHA_MODIFICACIONValue: DateTime; virtual; + procedure SetFECHA_MODIFICACIONValue(const aValue: DateTime); virtual; + function GetIMPORTE_TOTALValue: Float; virtual; + function GetOldIMPORTE_TOTALValue: Float; virtual; + procedure SetIMPORTE_TOTALValue(const aValue: Float); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetENTIDADValue: String; virtual; + function GetOldENTIDADValue: String; virtual; + procedure SetENTIDADValue(const aValue: String); virtual; + function GetSUCURSALValue: String; virtual; + function GetOldSUCURSALValue: String; virtual; + procedure SetSUCURSALValue(const aValue: String); virtual; + function GetDCValue: String; virtual; + function GetOldDCValue: String; virtual; + procedure SetDCValue(const aValue: String); virtual; + function GetCUENTAValue: String; virtual; + function GetOldCUENTAValue: String; virtual; + procedure SetCUENTAValue(const aValue: String); virtual; + function GetSUFIJO_N19Value: String; virtual; + function GetOldSUFIJO_N19Value: String; virtual; + procedure SetSUFIJO_N19Value(const aValue: String); virtual; + function GetSUFIJO_N58Value: String; virtual; + function GetOldSUFIJO_N58Value: String; virtual; + procedure SetSUFIJO_N58Value(const aValue: String); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property OldID : Integer read GetOldIDValue; + property ID_EMPRESA : Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property FECHA_REMESA : DateTime read GetFECHA_REMESAValue write SetFECHA_REMESAValue; + property OldFECHA_REMESA : DateTime read GetOldFECHA_REMESAValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property ID_DATOS_BANCO : Integer read GetID_DATOS_BANCOValue write SetID_DATOS_BANCOValue; + property OldID_DATOS_BANCO : Integer read GetOldID_DATOS_BANCOValue; + property FECHA_ALTA : DateTime read GetFECHA_ALTAValue write SetFECHA_ALTAValue; + property OldFECHA_ALTA : DateTime read GetOldFECHA_ALTAValue; + property FECHA_MODIFICACION : DateTime read GetFECHA_MODIFICACIONValue write SetFECHA_MODIFICACIONValue; + property OldFECHA_MODIFICACION : DateTime read GetOldFECHA_MODIFICACIONValue; + property IMPORTE_TOTAL : Float read GetIMPORTE_TOTALValue write SetIMPORTE_TOTALValue; + property OldIMPORTE_TOTAL : Float read GetOldIMPORTE_TOTALValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property ENTIDAD : String read GetENTIDADValue write SetENTIDADValue; + property OldENTIDAD : String read GetOldENTIDADValue; + property SUCURSAL : String read GetSUCURSALValue write SetSUCURSALValue; + property OldSUCURSAL : String read GetOldSUCURSALValue; + property DC : String read GetDCValue write SetDCValue; + property OldDC : String read GetOldDCValue; + property CUENTA : String read GetCUENTAValue write SetCUENTAValue; + property OldCUENTA : String read GetOldCUENTAValue; + property SUFIJO_N19 : String read GetSUFIJO_N19Value write SetSUFIJO_N19Value; + property OldSUFIJO_N19 : String read GetOldSUFIJO_N19Value; + property SUFIJO_N58 : String read GetSUFIJO_N58Value write SetSUFIJO_N58Value; + property OldSUFIJO_N58 : String read GetOldSUFIJO_N58Value; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TdarReferenciaBusinessProcessorRules } +constructor TdarReferenciaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TdarReferenciaBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TdarReferenciaBusinessProcessorRules.GetVALORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_darReferenciaVALOR]; +end; + +function TdarReferenciaBusinessProcessorRules.GetOldVALORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_darReferenciaVALOR]; +end; + +procedure TdarReferenciaBusinessProcessorRules.SetVALORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_darReferenciaVALOR] := aValue; +end; + + +{ TRemesasProveedorBusinessProcessorRules } +constructor TRemesasProveedorBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TRemesasProveedorBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TRemesasProveedorBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorID]; +end; + +function TRemesasProveedorBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedorID]; +end; + +procedure TRemesasProveedorBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorID] := aValue; +end; + +function TRemesasProveedorBusinessProcessorRules.GetID_EMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorID_EMPRESA]; +end; + +function TRemesasProveedorBusinessProcessorRules.GetOldID_EMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedorID_EMPRESA]; +end; + +procedure TRemesasProveedorBusinessProcessorRules.SetID_EMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorID_EMPRESA] := aValue; +end; + +function TRemesasProveedorBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorREFERENCIA]; +end; + +function TRemesasProveedorBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedorREFERENCIA]; +end; + +procedure TRemesasProveedorBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorREFERENCIA] := aValue; +end; + +function TRemesasProveedorBusinessProcessorRules.GetFECHA_REMESAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorFECHA_REMESA]; +end; + +function TRemesasProveedorBusinessProcessorRules.GetOldFECHA_REMESAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedorFECHA_REMESA]; +end; + +procedure TRemesasProveedorBusinessProcessorRules.SetFECHA_REMESAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorFECHA_REMESA] := aValue; +end; + +function TRemesasProveedorBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorDESCRIPCION]; +end; + +function TRemesasProveedorBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedorDESCRIPCION]; +end; + +procedure TRemesasProveedorBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorDESCRIPCION] := aValue; +end; + +function TRemesasProveedorBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorUSUARIO]; +end; + +function TRemesasProveedorBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedorUSUARIO]; +end; + +procedure TRemesasProveedorBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorUSUARIO] := aValue; +end; + +function TRemesasProveedorBusinessProcessorRules.GetID_DATOS_BANCOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorID_DATOS_BANCO]; +end; + +function TRemesasProveedorBusinessProcessorRules.GetOldID_DATOS_BANCOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedorID_DATOS_BANCO]; +end; + +procedure TRemesasProveedorBusinessProcessorRules.SetID_DATOS_BANCOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorID_DATOS_BANCO] := aValue; +end; + +function TRemesasProveedorBusinessProcessorRules.GetFECHA_ALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorFECHA_ALTA]; +end; + +function TRemesasProveedorBusinessProcessorRules.GetOldFECHA_ALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedorFECHA_ALTA]; +end; + +procedure TRemesasProveedorBusinessProcessorRules.SetFECHA_ALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorFECHA_ALTA] := aValue; +end; + +function TRemesasProveedorBusinessProcessorRules.GetFECHA_MODIFICACIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorFECHA_MODIFICACION]; +end; + +function TRemesasProveedorBusinessProcessorRules.GetOldFECHA_MODIFICACIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedorFECHA_MODIFICACION]; +end; + +procedure TRemesasProveedorBusinessProcessorRules.SetFECHA_MODIFICACIONValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorFECHA_MODIFICACION] := aValue; +end; + +function TRemesasProveedorBusinessProcessorRules.GetIMPORTE_TOTALValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorIMPORTE_TOTAL]; +end; + +function TRemesasProveedorBusinessProcessorRules.GetOldIMPORTE_TOTALValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedorIMPORTE_TOTAL]; +end; + +procedure TRemesasProveedorBusinessProcessorRules.SetIMPORTE_TOTALValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorIMPORTE_TOTAL] := aValue; +end; + +function TRemesasProveedorBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorNOMBRE]; +end; + +function TRemesasProveedorBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedorNOMBRE]; +end; + +procedure TRemesasProveedorBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorNOMBRE] := aValue; +end; + +function TRemesasProveedorBusinessProcessorRules.GetENTIDADValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorENTIDAD]; +end; + +function TRemesasProveedorBusinessProcessorRules.GetOldENTIDADValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedorENTIDAD]; +end; + +procedure TRemesasProveedorBusinessProcessorRules.SetENTIDADValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorENTIDAD] := aValue; +end; + +function TRemesasProveedorBusinessProcessorRules.GetSUCURSALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorSUCURSAL]; +end; + +function TRemesasProveedorBusinessProcessorRules.GetOldSUCURSALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedorSUCURSAL]; +end; + +procedure TRemesasProveedorBusinessProcessorRules.SetSUCURSALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorSUCURSAL] := aValue; +end; + +function TRemesasProveedorBusinessProcessorRules.GetDCValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorDC]; +end; + +function TRemesasProveedorBusinessProcessorRules.GetOldDCValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedorDC]; +end; + +procedure TRemesasProveedorBusinessProcessorRules.SetDCValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorDC] := aValue; +end; + +function TRemesasProveedorBusinessProcessorRules.GetCUENTAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorCUENTA]; +end; + +function TRemesasProveedorBusinessProcessorRules.GetOldCUENTAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedorCUENTA]; +end; + +procedure TRemesasProveedorBusinessProcessorRules.SetCUENTAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorCUENTA] := aValue; +end; + +function TRemesasProveedorBusinessProcessorRules.GetSUFIJO_N19Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorSUFIJO_N19]; +end; + +function TRemesasProveedorBusinessProcessorRules.GetOldSUFIJO_N19Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedorSUFIJO_N19]; +end; + +procedure TRemesasProveedorBusinessProcessorRules.SetSUFIJO_N19Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorSUFIJO_N19] := aValue; +end; + +function TRemesasProveedorBusinessProcessorRules.GetSUFIJO_N58Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorSUFIJO_N58]; +end; + +function TRemesasProveedorBusinessProcessorRules.GetOldSUFIJO_N58Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedorSUFIJO_N58]; +end; + +procedure TRemesasProveedorBusinessProcessorRules.SetSUFIJO_N58Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedorSUFIJO_N58] := aValue; +end; + + +{ TRemesasProveedor_RefreshBusinessProcessorRules } +constructor TRemesasProveedor_RefreshBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TRemesasProveedor_RefreshBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshID]; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedor_RefreshID]; +end; + +procedure TRemesasProveedor_RefreshBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshID] := aValue; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetID_EMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshID_EMPRESA]; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetOldID_EMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedor_RefreshID_EMPRESA]; +end; + +procedure TRemesasProveedor_RefreshBusinessProcessorRules.SetID_EMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshID_EMPRESA] := aValue; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshREFERENCIA]; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedor_RefreshREFERENCIA]; +end; + +procedure TRemesasProveedor_RefreshBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshREFERENCIA] := aValue; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetFECHA_REMESAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshFECHA_REMESA]; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetOldFECHA_REMESAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedor_RefreshFECHA_REMESA]; +end; + +procedure TRemesasProveedor_RefreshBusinessProcessorRules.SetFECHA_REMESAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshFECHA_REMESA] := aValue; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshDESCRIPCION]; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedor_RefreshDESCRIPCION]; +end; + +procedure TRemesasProveedor_RefreshBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshDESCRIPCION] := aValue; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshUSUARIO]; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedor_RefreshUSUARIO]; +end; + +procedure TRemesasProveedor_RefreshBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshUSUARIO] := aValue; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetID_DATOS_BANCOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshID_DATOS_BANCO]; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetOldID_DATOS_BANCOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedor_RefreshID_DATOS_BANCO]; +end; + +procedure TRemesasProveedor_RefreshBusinessProcessorRules.SetID_DATOS_BANCOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshID_DATOS_BANCO] := aValue; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetFECHA_ALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshFECHA_ALTA]; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetOldFECHA_ALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedor_RefreshFECHA_ALTA]; +end; + +procedure TRemesasProveedor_RefreshBusinessProcessorRules.SetFECHA_ALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshFECHA_ALTA] := aValue; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetFECHA_MODIFICACIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshFECHA_MODIFICACION]; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetOldFECHA_MODIFICACIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedor_RefreshFECHA_MODIFICACION]; +end; + +procedure TRemesasProveedor_RefreshBusinessProcessorRules.SetFECHA_MODIFICACIONValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshFECHA_MODIFICACION] := aValue; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetIMPORTE_TOTALValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshIMPORTE_TOTAL]; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetOldIMPORTE_TOTALValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedor_RefreshIMPORTE_TOTAL]; +end; + +procedure TRemesasProveedor_RefreshBusinessProcessorRules.SetIMPORTE_TOTALValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshIMPORTE_TOTAL] := aValue; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshNOMBRE]; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedor_RefreshNOMBRE]; +end; + +procedure TRemesasProveedor_RefreshBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshNOMBRE] := aValue; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetENTIDADValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshENTIDAD]; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetOldENTIDADValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedor_RefreshENTIDAD]; +end; + +procedure TRemesasProveedor_RefreshBusinessProcessorRules.SetENTIDADValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshENTIDAD] := aValue; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetSUCURSALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshSUCURSAL]; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetOldSUCURSALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedor_RefreshSUCURSAL]; +end; + +procedure TRemesasProveedor_RefreshBusinessProcessorRules.SetSUCURSALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshSUCURSAL] := aValue; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetDCValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshDC]; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetOldDCValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedor_RefreshDC]; +end; + +procedure TRemesasProveedor_RefreshBusinessProcessorRules.SetDCValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshDC] := aValue; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetCUENTAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshCUENTA]; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetOldCUENTAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedor_RefreshCUENTA]; +end; + +procedure TRemesasProveedor_RefreshBusinessProcessorRules.SetCUENTAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshCUENTA] := aValue; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetSUFIJO_N19Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshSUFIJO_N19]; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetOldSUFIJO_N19Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedor_RefreshSUFIJO_N19]; +end; + +procedure TRemesasProveedor_RefreshBusinessProcessorRules.SetSUFIJO_N19Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshSUFIJO_N19] := aValue; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetSUFIJO_N58Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshSUFIJO_N58]; +end; + +function TRemesasProveedor_RefreshBusinessProcessorRules.GetOldSUFIJO_N58Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RemesasProveedor_RefreshSUFIJO_N58]; +end; + +procedure TRemesasProveedor_RefreshBusinessProcessorRules.SetSUFIJO_N58Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RemesasProveedor_RefreshSUFIJO_N58] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_darReferenciaDelta, TdarReferenciaBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_RemesasProveedorDelta, TRemesasProveedorBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_RemesasProveedor_RefreshDelta, TRemesasProveedor_RefreshBusinessProcessorRules); + +end. diff --git a/Source/Modulos/Remesas de proveedor/Model/uBizRemesasProveedor.pas b/Source/Modulos/Remesas de proveedor/Model/uBizRemesasProveedor.pas new file mode 100644 index 00000000..0a40005b --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Model/uBizRemesasProveedor.pas @@ -0,0 +1,99 @@ +unit uBizRemesasProveedor; + +interface + +uses + uDAInterfaces, uDADataTable, schRemesasProveedorClient_Intf, uDBSelectionListUtils, + uBizRecibosProveedor; + +const + BIZ_CLIENT_REMESAPROVEEDOR = 'Client.RemesaProveedor'; + +type + IBizRemesaProveedor = interface(IRemesasProveedor) + ['{A150A74E-6A08-4D11-9CA7-39B65ABF78F5}'] + function GetRecibos: IBizRecibosProveedor; + procedure SetRecibos(const Value: IBizRecibosProveedor); + property Recibos: IBizRecibosProveedor read GetRecibos write SetRecibos; + function EsNuevo : Boolean; + end; + + TBizRemesaProveedor = class(TRemesasProveedorDataTableRules, IBizRemesaProveedor, ISeleccionable) + protected + FRecibos: IBizRecibosProveedor; + FSeleccionableInterface : ISeleccionable; + + function GetRecibos: IBizRecibosProveedor; + procedure SetRecibos(const Value: IBizRecibosProveedor); + procedure OnNewRecord(Sender: TDADataTable); override; + public + property SeleccionableInterface : ISeleccionable read FSeleccionableInterface + write FSeleccionableInterface implements ISeleccionable; + property Recibos: IBizRecibosProveedor read GetRecibos write SetRecibos; + + procedure IniciarValoresRemesaProveedorNuevo; virtual; + function EsNuevo : Boolean; + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + end; + +implementation + +uses + uDataTableUtils, uDataModuleUsuarios, SysUtils, uROClasses, Classes; + +{ TBizRemesaProveedor } + +constructor TBizRemesaProveedor.Create(aDataTable: TDADataTable); +begin + inherited; + FRecibos := Nil; + FSeleccionableInterface := TSeleccionable.Create(aDataTable); +end; + +destructor TBizRemesaProveedor.Destroy; +begin + FRecibos := Nil; + FSeleccionableInterface := NIL; + inherited; +end; + +function TBizRemesaProveedor.EsNuevo: Boolean; +begin + Result := (ID < 0); +end; + +function TBizRemesaProveedor.GetRecibos: IBizRecibosProveedor; +begin + Result := FRecibos; +end; + +procedure TBizRemesaProveedor.IniciarValoresRemesaProveedorNuevo; +begin + ID_EMPRESA := dmUsuarios.IDEmpresaActual; + FECHA_REMESA := Date; + USUARIO := dmUsuarios.LoginInfo.Usuario; +end; + +procedure TBizRemesaProveedor.OnNewRecord(Sender: TDADataTable); +begin + inherited; + ID := GetRecNo; // -1, -2, -3... + IniciarValoresRemesaProveedorNuevo; +end; + +procedure TBizRemesaProveedor.SetRecibos(const Value: IBizRecibosProveedor); +begin + FRecibos := Value; + if Assigned(FRecibos) then + if not FRecibos.DataTable.Active then + FRecibos.DataTable.Active := True; +end; + +initialization + RegisterDataTableRules(BIZ_CLIENT_REMESAPROVEEDOR, TBizRemesaProveedor); + +finalization + +end. + diff --git a/Source/Modulos/Remesas de proveedor/Model/uBizRemesasProveedorServer.pas b/Source/Modulos/Remesas de proveedor/Model/uBizRemesasProveedorServer.pas new file mode 100644 index 00000000..9075ae02 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Model/uBizRemesasProveedorServer.pas @@ -0,0 +1,79 @@ +unit uBizRemesasProveedorServer; + +interface + +uses + schRemesasProveedorServer_Intf, uDAInterfaces, + uDADataTable, uDABusinessProcessor; + +const + BIZ_SERVER_REMESAS_Proveedor = 'Server.RemesasProveedor'; + REF_REMESAS_PROVEEDOR = 'REF_REMESAS_PROVEEDOR'; + +type + TBizRemesasProveedorServer = class(TRemesasProveedorBusinessProcessorRules) + protected + procedure BeforeProcessChange(Sender: TDABusinessProcessor; + aChangeType: TDAChangeType; aChange: TDADeltaChange; + var ProcessChange: Boolean); override; + end; + +implementation + +uses + Dialogs, SysUtils, Variants, uDataModuleServer, uDAClasses, DARemoteService_Impl, + schRemesasProveedorClient_Intf, uBusinessUtils, uReferenciasUtils, uROClasses; + +{ TBizRemesasProveedorServer } + +procedure TBizRemesasProveedorServer.BeforeProcessChange( + Sender: TDABusinessProcessor; aChangeType: TDAChangeType; + aChange: TDADeltaChange; var ProcessChange: Boolean); +var + ASchema : TDASchema; + ACurrentConn : IDAConnection; + dsData: IDADataset; + Empresa : Variant; + +begin + inherited; + case aChangeType of + ctInsert, ctUpdate: begin + //Si la referencia no ha sido asignada le asignamos una nosotros + if (VarIsNull(aChange.NewValueByName[fld_RemesasProveedorREFERENCIA])) + or (VarToStr(aChange.NewValueByName[fld_RemesasProveedorREFERENCIA]) = '') then + begin + ASchema := BusinessProcessor.Schema; + ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor); + + try + //Siempre va a estar rellena + Empresa := aChange.NewValueByName[fld_RemesasProveedorID_EMPRESA]; + + dsData := ASchema.NewDataset(ACurrentConn, 'DarReferencia', ['CODIGO', 'EMPRESA'], [REF_REMESAS_PROVEEDOR, Empresa]); + except + RaiseError('No existe la tabla REFERENCIAS'); + end; + + dsData.Active := True; + + if dsData.IsEmpty then + RaiseError('NO HAY REFERENCIA ' + REF_REMESAS_PROVEEDOR + ' DECLARADA EN TABLA REFERENCIAS'); + + REFERENCIA := dsData.FieldByName('VALOR').AsString; + + try + ASchema.NewCommand(ACurrentConn, 'ModificarReferencia', ['CODIGO', 'VALOR', 'ID_EMPRESA'], [REF_REMESAS_PROVEEDOR, DarReferenciaSiguiente(REFERENCIA), Empresa]); + except + RaiseError('Error al asignar la nueva ' + REFERENCIA + ' referencia en tabla'); + end; + + end; + end; + end; +end; + +initialization + RegisterBusinessProcessorRules(BIZ_SERVER_REMESAS_Proveedor, TBizRemesasProveedorServer); + +end. diff --git a/Source/Modulos/Remesas de proveedor/Plugin/RemesasProveedor_plugin.bdsproj b/Source/Modulos/Remesas de proveedor/Plugin/RemesasProveedor_plugin.bdsproj new file mode 100644 index 00000000..0554af1a --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Plugin/RemesasProveedor_plugin.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + RemesasProveedor_plugin.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Modulos/Remesas de proveedor/Plugin/RemesasProveedor_plugin.dpk b/Source/Modulos/Remesas de proveedor/Plugin/RemesasProveedor_plugin.dpk new file mode 100644 index 00000000..3a48f9ba --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Plugin/RemesasProveedor_plugin.dpk @@ -0,0 +1,42 @@ +package RemesasProveedor_plugin; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + PluginSDK_D10R, + PngComponentsD10, + PNG_D10, + vclactnband, + vclx, + RemesasProveedor_model, + RemesasProveedor_controller, + RemesasProveedor_view; + +contains + uPluginRemesasProveedor in 'uPluginRemesasProveedor.pas' {PluginRemesasProveedor}; + +end. diff --git a/Source/Modulos/Remesas de proveedor/Plugin/RemesasProveedor_plugin.rc b/Source/Modulos/Remesas de proveedor/Plugin/RemesasProveedor_plugin.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Remesas de proveedor/Plugin/RemesasProveedor_plugin.res b/Source/Modulos/Remesas de proveedor/Plugin/RemesasProveedor_plugin.res new file mode 100644 index 0000000000000000000000000000000000000000..36f26e234a8ac66a47e95cec6d496cf2f1442471 GIT binary patch literal 32 UcmZQzU|>)H;{X347|28c09i@|9RL6T literal 0 HcmV?d00001 diff --git a/Source/Modulos/Remesas de proveedor/Plugin/uPluginRemesasProveedor.dfm b/Source/Modulos/Remesas de proveedor/Plugin/uPluginRemesasProveedor.dfm new file mode 100644 index 00000000..a7fcdc62 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Plugin/uPluginRemesasProveedor.dfm @@ -0,0 +1,135 @@ +object PluginRemesasProveedor: TPluginRemesasProveedor + OldCreateOrder = True + DefaultAction = actRemesasProveedor + Description = 'Compras' + ModuleMenu = MainMenu + ModuleName = 'RemesasProveedor' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.0' + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002744944415478DA + 63FCFFFF3F032D01E3F0B060F9D6D334B3056E41A4B729491AFFFCFDCFF0F7EF + 3F869FBFFE80E93FFFFE8169301B887FFDFECB109E5E876A41E249438206FF05 + AAFFF5F72FC3AF3F7FC0F4975FBF207C10065A02932BFAB59C61DED24D9816CC + 373F8F6291F45B6F8626CF660C8BFE010D0361CFD5F60C1F791E800DBF14F082 + 4169A520D8928ABFAB705B00022036B2E11718CF33189F346660B809E4A83330 + 9C353FCBA0F9438BE117D007415B3C189EB2DF66B811FC1AAC566C3137431DC3 + 5AFC3E8019CE7C8A89E1AFD93F300D32FC6CDC5906E379408BB419183EEB7C61 + E0BDC2C3F05AE50D43F84E5F86BD51C718841771817DD0CEB211BB05E841C3BC + 1C684124D082C54C10C39719339C8D02D2B38C193E447C6410D8C2CFF0C2E525 + 43D49E00860B7F2EC0E3A3977D0B911620FBE02A508203887F30807DF056ED1D + 83F02D218627324F18E20E86329CFA79166EC164AEEDF82D40B6E42F50C36596 + 4B9038B80894D087C481DC5B79869F3F7E60180E02382D404E4520C58A1FFC18 + 6A9C6BC196FC03A7F5BF700CE247EF0D841BFE33E50F03E34C46FC16C0003C6D + 03B1CCB31F0C5325B4B1E60BDE877B505C0E03582D40CFA57FA039F3EA444D06 + 09A7200645CB1E86FBC74BC06A5EDC0726E7FBF719E6EE7BCE30A7DA09C3E229 + 4F73312D98B2780756570A7E3BC7A0F4660ED8307450DD928DD3E273AC89080B + BA27CF27584C9C2B7B88553CA5751FA65AA0E12000B680919191A0E1C75A14FF + 93124C404BC3E6EEFBB19A140B4281D42A6CC13467EF77AC96022D6024CA0290 + E196969AABB0C91D3F7E1D6BDC008101D0828BC45A803778402EC5A597681FE0 + 0A1E200087355E0B6809686E0100FA3E2AAB1481BE0E0000000049454E44AE42 + 6082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actRemesasProveedor: TAction + Category = 'Compras' + Caption = 'Remesas de pago' + ImageIndex = 0 + OnExecute = actRemesasProveedorExecute + end + end + object MainMenu: TMainMenu + Images = LargeImages + Left = 40 + Top = 16 + object N1: TMenuItem + Caption = 'Compras' + object RemesasProveedor1: TMenuItem + Tag = 107 + Action = actRemesasProveedor + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000011A4944415478DA + 63FCFFFF3F032580916203966D3945B60991DEA68C6003D4BD9919269F4CC6AA + E8F7DFBF0CDFFFFC61F8F6FB37C3C71F3FC0ECB9FE5B19523CE6309CDB310D61 + 0008C00C996B760EC3209B6D7270CD208062C02E9134B8429866E6534C1081AB + 0C0C7F13FF81999A6B4519BE035D02728DDCB204220CB80A118319A0B04200AC + 19843556A762370024B9DCFA328617903583BC62B83E13350C40FE074B421581 + 70EF05569C31907DD8036140F7E4F9180AA6DAEE60B04CAE6660905064F8717C + 2AC3F97DE719E6EE7BCE30A5C50BCE9EB3F73B23232E1B8EB528861E7CADB6EA + CEE58358E5939D24C32CABEFADC667C07F8A5D00A456811452D505208D5635F7 + 5783D480F211C92E98BBEF075C0FD8004A73230074DEE0E1BE54FBD500000000 + 49454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002D84944415478DA + ED946D48535118C7FF57855EB4171542B01756516845C868B63E4A1F2A7B1996 + 990B845008EA637DD2A828F34BF521D220C98484C28232B24C302329456D380D + A99C75035FB6A5B3E9ACAEBA7BD773CF4D9BEE6E6E23F6217AE0F09C73EE73CE + EF79CEFF9CCB793C1E44D2B8FFC07F0378EF697BC4A833C0DCCC6D616DE0163D + 104589BCC43CEB4B5E7DE62986E6728E9F9D0D3CD69A163448A47593A28849B7 + 5BF1731B01A6BFD7E97AC0F70DA0B0A4DC175899DE310B9CECC8C485DD17FD82 + 25DA58621589D8FB3003A3715F18ACCB60C3DAEA7806ADD759D03768F50F944D + EEABC1CC5C07B4AD5AE0230D3602A6741352845406945B56ED2E0C2CB0E0C3C1 + 2116BFA22A160DBA5E0CDAED812BF48645B745013C1D638EA4F40966CA33417B + 9BC09B00D7E6712C791C07AC0386D60F23A77E1F5E189B91786731ABB029FD33 + ECC343EA40B5A38CAE268844C05C02564529B0BB5A988CE4CBB5701E19C5F2DA + 652CD6B6D30E63830166B77946CFD7DB7938461C2100E5AA2C043CFABBC26E9A + 5C484D00ABD0B16104897509ACC2FE95FDC87B958DB609D30CF08D8EC798CB19 + 18A87661648DDEC574291A76D2C45645C3D58E35EC9B7B6ACA07265B93F613BE + FF189BFF96CA0B34CEFD0C2A6F386EEB467C4F61C0E7B2CADC80AF4B454C14B8 + C1DDE4D8DCCB340B04613C70856A6FABB81DD0E71701491A128B677102FF8C79 + 276F65FE4C45076E1565CC4AE291EB0416C527FB02E7FB7BF4DED882A48C2C68 + F457C0B79C562E09AF3C23F04A02158D569416EFF149E2D0B9165FE0F32673C0 + E31AB0BC45AAAD846DAA66D66F024ACB4EA9262103CBAE5DFD03BC7CBD12C158 + 72AC0B4F4E8E048C29B8D4E83DAC791F73C0F0934B600306E4382E28986CCDC5 + 1A4FA83A5202872B1A8507610383D5D13B010272E102B3694323750D7E426AF2 + F37718E62610165086E9F529F743D08F2540ED3C013BC30106A5DF74356A1632 + 3018FDFE26705EFDBC8FCF2F30921671E02FBE648AC22CC7AE57000000004945 + 4E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/Source/Modulos/Remesas de proveedor/Plugin/uPluginRemesasProveedor.pas b/Source/Modulos/Remesas de proveedor/Plugin/uPluginRemesasProveedor.pas new file mode 100644 index 00000000..2aaca1c3 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Plugin/uPluginRemesasProveedor.pas @@ -0,0 +1,74 @@ +unit uPluginRemesasProveedor; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCRemesasProveedor = interface(IInterface) + ['{31B25C1E-2E4B-4C6A-9E8D-D53D62319E4C}'] + end; + + TPluginRemesasProveedor = class(TModuleController, IMCRemesasProveedor) + actRemesasProveedor: TAction; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + SmallImages: TPngImageList; + N1: TMenuItem; + RemesasProveedor1: TMenuItem; + procedure actRemesasProveedorExecute(Sender: TObject); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, SysUtils, + uRemesasProveedorController, uBizRemesasProveedor, uRemesasProveedorViewRegister; + +function GetModule : TModuleController; +begin + Result := TPluginRemesasProveedor.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +procedure TPluginRemesasProveedor.actRemesasProveedorExecute(Sender: TObject); +var + ARemesasProveedorController : IRemesasProveedorController; + ARemesasProveedor : IBizRemesaProveedor; + +begin + ARemesasProveedorController := TRemesasProveedorController.Create; + ARemesasProveedor := (ARemesasProveedorController.BuscarTodos as IBizRemesaProveedor); + ARemesasProveedorController.VerTodos(ARemesasProveedor); +end; + +constructor TPluginRemesasProveedor.Create(AOwner: TComponent); +begin + inherited; + uRemesasProveedorViewRegister.RegisterViews; +end; + +destructor TPluginRemesasProveedor.Destroy; +begin + uRemesasProveedorViewRegister.UnregisterViews; + inherited; +end; + +initialization + RegisterModuleClass(TPluginRemesasProveedor); + +finalization + UnRegisterModuleClass(TPluginRemesasProveedor); + +end. diff --git a/Source/Modulos/Remesas de proveedor/Reports/uRptRemesasProveedor_Server.dfm b/Source/Modulos/Remesas de proveedor/Reports/uRptRemesasProveedor_Server.dfm new file mode 100644 index 00000000..e5dfc6e6 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Reports/uRptRemesasProveedor_Server.dfm @@ -0,0 +1,1006 @@ +object RptRemesasProveedor: TRptRemesasProveedor + OldCreateOrder = True + OnCreate = DataModuleCreate + Height = 405 + Width = 447 + object DADataCabecera: TDADataSource + DataTable = tbl_Cabecera + Left = 264 + Top = 72 + end + object DADataDetalles: TDADataSource + DataTable = tbl_Detalles + Left = 344 + Top = 72 + end + object tbl_Cabecera: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + LogChanges = False + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + SchemaCall.Params = <> + DataRequestCall.Params = <> + DataUpdateCall.Params = <> + ScriptCall.Params = <> + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 264 + Top = 128 + end + object tbl_Detalles: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + LogChanges = False + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + SchemaCall.Params = <> + DataRequestCall.Params = <> + DataUpdateCall.Params = <> + ScriptCall.Params = <> + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 344 + Top = 128 + end + object DABINAdapter: TDABINAdapter + Left = 48 + Top = 80 + end + object frxRichObject1: TfrxRichObject + Left = 48 + Top = 296 + end + object frxBarCodeObject1: TfrxBarCodeObject + Left = 144 + Top = 296 + end + object frxOLEObject1: TfrxOLEObject + Left = 48 + Top = 344 + end + object frxCrossObject1: TfrxCrossObject + Left = 144 + Top = 344 + end + object frxCheckBoxObject1: TfrxCheckBoxObject + Left = 256 + Top = 296 + end + object frxGradientObject1: TfrxGradientObject + Left = 360 + Top = 296 + end + object frxChartObject1: TfrxChartObject + Left = 256 + Top = 344 + end + object schReport: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = DataDictionary + Datasets = < + item + Params = < + item + Name = 'ID' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'REMESAS_PROVEEDOR' + SQL = + 'SELECT'#10' REMESAS_PROVEEDOR.ID,'#10' REMESAS_PROVEEDOR.ID_EMPRES' + + 'A,'#10' REMESAS_PROVEEDOR.REFERENCIA,'#10' REMESAS_PROVEEDOR.FECHA' + + '_REMESA,'#10' REMESAS_PROVEEDOR.IMPORTE_TOTAL,'#10' EMPRESAS.NOMBR' + + 'E as TITULAR,'#10' EMPRESAS_DATOS_BANCO.ENTIDAD,'#10' EMPRESAS_DAT' + + 'OS_BANCO.SUCURSAL,'#10' EMPRESAS_DATOS_BANCO.DC,'#10' EMPRESAS_DAT' + + 'OS_BANCO.CUENTA,'#10' REMESAS_PROVEEDOR.DESCRIPCION,'#10#10' EMPRESA' + + 'S.NIF_CIF as NIF_CIF_EMPRESA, EMPRESAS.RAZON_SOCIAL,'#10' EMPRESA' + + 'S.CALLE as CALLE_EMPRESA, EMPRESAS.POBLACION as POBLACION_EMPRES' + + 'A,'#10' EMPRESAS.PROVINCIA as PROVINCIA_EMPRESA, EMPRESAS.CODIGO_' + + 'POSTAL as CODIGO_POSTAL_EMPRESA,'#10' EMPRESAS.TELEFONO_1, EMPRES' + + 'AS.FAX, EMPRESAS.MOVIL_1, EMPRESAS.EMAIL_1,'#10' EMPRESAS.PAGINA_' + + 'WEB, EMPRESAS.REGISTRO_MERCANTIL, EMPRESAS.LOGOTIPO'#10#10#10'FROM'#10' REM' + + 'ESAS_PROVEEDOR'#10' LEFT OUTER JOIN EMPRESAS ON (EMPRESAS.ID = REME' + + 'SAS_PROVEEDOR.ID_EMPRESA)'#10' LEFT OUTER JOIN EMPRESAS_DATOS_BANCO' + + ' ON (EMPRESAS_DATOS_BANCO.ID = REMESAS_PROVEEDOR.ID_DATOS_BANCO)' + + #10'WHERE'#10' REMESAS_PROVEEDOR.ID = :ID' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'ID_EMPRESA' + TableField = 'ID_EMPRESA' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'FECHA_REMESA' + TableField = 'FECHA_REMESA' + end + item + DatasetField = 'IMPORTE_TOTAL' + TableField = 'IMPORTE_TOTAL' + end + item + DatasetField = 'TITULAR' + TableField = 'TITULAR' + end + item + DatasetField = 'ENTIDAD' + TableField = 'ENTIDAD' + end + item + DatasetField = 'SUCURSAL' + TableField = 'SUCURSAL' + end + item + DatasetField = 'DC' + TableField = 'DC' + end + item + DatasetField = 'CUENTA' + TableField = 'CUENTA' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'NIF_CIF_EMPRESA' + TableField = 'NIF_CIF_EMPRESA' + end + item + DatasetField = 'RAZON_SOCIAL' + TableField = 'RAZON_SOCIAL' + end + item + DatasetField = 'CALLE_EMPRESA' + TableField = 'CALLE_EMPRESA' + end + item + DatasetField = 'POBLACION_EMPRESA' + TableField = 'POBLACION_EMPRESA' + end + item + DatasetField = 'PROVINCIA_EMPRESA' + TableField = 'PROVINCIA_EMPRESA' + end + item + DatasetField = 'CODIGO_POSTAL_EMPRESA' + TableField = 'CODIGO_POSTAL_EMPRESA' + end + item + DatasetField = 'TELEFONO_1' + TableField = 'TELEFONO_1' + end + item + DatasetField = 'FAX' + TableField = 'FAX' + end + item + DatasetField = 'MOVIL_1' + TableField = 'MOVIL_1' + end + item + DatasetField = 'EMAIL_1' + TableField = 'EMAIL_1' + end + item + DatasetField = 'PAGINA_WEB' + TableField = 'PAGINA_WEB' + end + item + DatasetField = 'REGISTRO_MERCANTIL' + TableField = 'REGISTRO_MERCANTIL' + end + item + DatasetField = 'LOGOTIPO' + TableField = 'LOGOTIPO' + end> + end> + Name = 'Informe_Cabecera' + Fields = < + item + Name = 'ID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_REMESA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTE_TOTAL' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TITULAR' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ENTIDAD' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SUCURSAL' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DC' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CUENTA' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NIF_CIF_EMPRESA' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RAZON_SOCIAL' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE_EMPRESA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION_EMPRESA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVINCIA_EMPRESA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO_POSTAL_EMPRESA' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO_1' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FAX' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MOVIL_1' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EMAIL_1' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PAGINA_WEB' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REGISTRO_MERCANTIL' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'LOGOTIPO' + DataType = datBlob + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'ID_REMESA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'V_RECIBOS_PROVEEDOR' + SQL = + 'SELECT'#10' V_RECIBOS_PROVEEDOR.ID,'#10' V_RECIBOS_PROVEEDOR.REFER' + + 'ENCIA,'#10' V_RECIBOS_PROVEEDOR.REFERENCIA_PROVEEDOR,'#10' V_RECIB' + + 'OS_PROVEEDOR.SITUACION,'#10' V_RECIBOS_PROVEEDOR.ID_FACTURA,'#10' ' + + 'V_RECIBOS_PROVEEDOR.ID_REMESA,'#10' V_RECIBOS_PROVEEDOR.REFERENCI' + + 'A_REMESA,'#10' V_RECIBOS_PROVEEDOR.FECHA_VENCIMIENTO,'#10' V_RECIB' + + 'OS_PROVEEDOR.DESCRIPCION,'#10' V_RECIBOS_PROVEEDOR.OBSERVACIONES,' + + #10' V_RECIBOS_PROVEEDOR.IMPORTE,'#10' V_RECIBOS_PROVEEDOR.FECHA_' + + 'FACTURA,'#10' V_RECIBOS_PROVEEDOR.FORMA_PAGO_FACTURA,'#10' V_RECIB' + + 'OS_PROVEEDOR.IMPORTE_FACTURA,'#10' V_RECIBOS_PROVEEDOR.ID_EMPRESA' + + ','#10' V_RECIBOS_PROVEEDOR.NOMBRE_PROVEEDOR,'#10' V_RECIBOS_PROVEE' + + 'DOR.NIF_CIF_PROVEEDOR,'#10' V_RECIBOS_PROVEEDOR.ENTIDAD_PROVEEDOR' + + ','#10' V_RECIBOS_PROVEEDOR.SUCURSAL_PROVEEDOR,'#10' V_RECIBOS_PROV' + + 'EEDOR.DC_PROVEEDOR,'#10' V_RECIBOS_PROVEEDOR.CUENTA_PROVEEDOR'#10#10#10'F' + + 'ROM V_RECIBOS_PROVEEDOR'#10'WHERE V_RECIBOS_PROVEEDOR.ID_REMESA = :I' + + 'D_REMESA'#10'ORDER BY FECHA_VENCIMIENTO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'SITUACION' + TableField = 'SITUACION' + end + item + DatasetField = 'ID_FACTURA' + TableField = 'ID_FACTURA' + end + item + DatasetField = 'ID_REMESA' + TableField = 'ID_REMESA' + end + item + DatasetField = 'REFERENCIA_REMESA' + TableField = 'REFERENCIA_REMESA' + end + item + DatasetField = 'FECHA_VENCIMIENTO' + TableField = 'FECHA_VENCIMIENTO' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'OBSERVACIONES' + TableField = 'OBSERVACIONES' + end + item + DatasetField = 'IMPORTE' + TableField = 'IMPORTE' + end + item + DatasetField = 'FECHA_FACTURA' + TableField = 'FECHA_FACTURA' + end + item + DatasetField = 'FORMA_PAGO_FACTURA' + TableField = 'FORMA_PAGO_FACTURA' + end + item + DatasetField = 'IMPORTE_FACTURA' + TableField = 'IMPORTE_FACTURA' + end + item + DatasetField = 'ID_EMPRESA' + TableField = 'ID_EMPRESA' + end + item + DatasetField = 'REFERENCIA_PROVEEDOR' + TableField = 'REFERENCIA_PROVEEDOR' + end + item + DatasetField = 'NOMBRE_PROVEEDOR' + TableField = 'NOMBRE_PROVEEDOR' + end + item + DatasetField = 'NIF_CIF_PROVEEDOR' + TableField = 'NIF_CIF_PROVEEDOR' + end + item + DatasetField = 'ENTIDAD_PROVEEDOR' + TableField = 'ENTIDAD_PROVEEDOR' + end + item + DatasetField = 'SUCURSAL_PROVEEDOR' + TableField = 'SUCURSAL_PROVEEDOR' + end + item + DatasetField = 'DC_PROVEEDOR' + TableField = 'DC_PROVEEDOR' + end + item + DatasetField = 'CUENTA_PROVEEDOR' + TableField = 'CUENTA_PROVEEDOR' + end> + end> + Name = 'Informe_Detalles' + Fields = < + item + Name = 'ID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA_PROVEEDOR' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SITUACION' + DataType = datString + Size = 9 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ID_FACTURA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ID_REMESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA_REMESA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_VENCIMIENTO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTE' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_FACTURA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMA_PAGO_FACTURA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTE_FACTURA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE_PROVEEDOR' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NIF_CIF_PROVEEDOR' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ENTIDAD_PROVEEDOR' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SUCURSAL_PROVEEDOR' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DC_PROVEEDOR' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CUENTA_PROVEEDOR' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = <> + RelationShips = <> + UpdateRules = <> + Left = 48 + Top = 16 + end + object DataDictionary: TDADataDictionary + Fields = <> + Left = 46 + Top = 158 + end + object frxReport: TfrxReport + Version = '3.23.7' + DotMatrixReport = False + EngineOptions.DoublePass = True + IniFile = '\Software\Fast Reports' + PreviewOptions.Buttons = [pbPrint, pbLoad, pbSave, pbExport, pbZoom, pbFind, pbOutline, pbPageSetup, pbTools, pbEdit, pbNavigator, pbExportQuick] + PreviewOptions.OutlineWidth = 180 + PreviewOptions.Zoom = 1.000000000000000000 + PrintOptions.Printer = 'Default' + ReportOptions.CreateDate = 37871.995398692100000000 + ReportOptions.LastChange = 39252.773046331020000000 + ReportOptions.VersionBuild = '1' + ReportOptions.VersionMajor = '12' + ReportOptions.VersionMinor = '13' + ReportOptions.VersionRelease = '1' + ScriptLanguage = 'PascalScript' + ScriptText.Strings = ( + 'procedure ReportSummary1OnBeforePrint(Sender: TfrxComponent);' + 'begin' + + ' Engine.CurY := Engine.CurY + Engine.FreeSpace - ReportSummary1' + + '.Height - 1;' + 'end;' + '' + 'procedure DatosEmpresaOnBeforePrint(Sender: TfrxComponent);' + 'var' + ' Cadena: String;' + 'begin' + ' DatosEmpresa.Lines.Clear;' + ' DatosEmpresa.Lines.Add();' + ' DatosEmpresa.Lines.Add();' + '' + ' Cadena := '#39#39';' + ' if ( <> '#39#39') then' + ' Cadena := '#39'TLF: '#39' + ;' + ' if ( <> '#39#39') then' + ' Cadena := Cadena + '#39' FAX: '#39' + ;' + ' DatosEmpresa.Lines.Add(Cadena);' + '' + ' Cadena := '#39#39';' + ' if ( <> '#39#39') then' + ' Cadena := ;' + ' if ( <> '#39#39') then' + + ' Cadena := Cadena + '#39' '#39' + ;' + ' if ( <> '#39#39') then' + + ' Cadena := Cadena + '#39' - '#39' + ;' + ' DatosEmpresa.Lines.Add(Cadena);' + 'end;' + '' + 'begin' + '' + 'end.') + ShowProgress = False + StoreInDFM = False + Left = 169 + Top = 16 + Datasets = < + item + DataSet = frxDBCabecera + DataSetName = 'frxDBCabecera' + end + item + DataSet = frxDBDetalles + DataSetName = 'frxDBDetalles' + end> + Variables = <> + Style = < + item + Name = 'Concepto normal' + Color = clNone + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Tahoma' + Font.Style = [] + end + item + Name = 'Concepto subtotal' + Color = clNone + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + end + item + Name = 'Cabecera de columna' + Color = 15790320 + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + Frame.Typ = [ftLeft, ftRight, ftTop, ftBottom] + end + item + Name = 'Concepto titulo' + Color = clNone + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + end> + end + object frxDBCabecera: TfrxDBDataset + UserName = 'frxDBCabecera' + CloseDataSource = False + DataSource = DADataCabecera + Left = 264 + Top = 16 + end + object frxDBDetalles: TfrxDBDataset + UserName = 'frxDBDetalles' + CloseDataSource = False + DataSource = DADataDetalles + Left = 344 + Top = 16 + end +end diff --git a/Source/Modulos/Remesas de proveedor/Reports/uRptRemesasProveedor_Server.pas b/Source/Modulos/Remesas de proveedor/Reports/uRptRemesasProveedor_Server.pas new file mode 100644 index 00000000..968897ab --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Reports/uRptRemesasProveedor_Server.pas @@ -0,0 +1,93 @@ +unit uRptRemesasProveedor_Server; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, frxClass, frxDBSet, uDAScriptingProvider, + uDADataTable, uDACDSDataTable, DB, uDAClasses, frxChart, frxGradient, + frxChBox, frxCross, frxOLE, frxBarcode, frxRich, uDABINAdapter, uROTypes, + uDAInterfaces; + +type + TRptRemesasProveedor = class(TDataModule) + DADataCabecera: TDADataSource; + DADataDetalles: TDADataSource; + tbl_Cabecera: TDACDSDataTable; + tbl_Detalles: TDACDSDataTable; + DABINAdapter: TDABINAdapter; + frxRichObject1: TfrxRichObject; + frxBarCodeObject1: TfrxBarCodeObject; + frxOLEObject1: TfrxOLEObject; + frxCrossObject1: TfrxCrossObject; + frxCheckBoxObject1: TfrxCheckBoxObject; + frxGradientObject1: TfrxGradientObject; + frxChartObject1: TfrxChartObject; + frxDBCabecera: TfrxDBDataset; + frxDBDetalles: TfrxDBDataset; + schReport: TDASchema; + DataDictionary: TDADataDictionary; + frxReport: TfrxReport; + procedure DataModuleCreate(Sender: TObject); + private + FConnection: IDAConnection; + public + function GenerarRemesa(const ID : Integer): Binary; + end; + +implementation + +{$R *.dfm} + +uses + uDataModuleServer; + +const + rptInforme = 'InfRemesaProveedor.fr3'; + + { Dataset names for schReport } + ds_InformeCabecera = 'Informe_Cabecera'; + ds_InformeDetalles = 'Informe_Detalles'; + + +{ TRptRemesaProveedor } + + +procedure TRptRemesasProveedor.DataModuleCreate(Sender: TObject); +begin + schReport.ConnectionManager := dmServer.ConnectionManager; + FConnection := dmServer.DarNuevaConexion; + frxReport.EngineOptions.NewSilentMode := simReThrow; +end; + +function TRptRemesasProveedor.GenerarRemesa(const ID: Integer): Binary; +var + dsMaster: IDADataset; + dsDetail: IDADataset; + AStream: TMemoryStream; +begin + AStream := TMemoryStream.Create; + Result := Binary.Create; + FConnection.BeginTransaction; + try + dsMaster := schReport.NewDataset(FConnection, ds_InformeCabecera, ['ID'], [ID]); + dsDetail := schReport.NewDataset(FConnection, ds_InformeDetalles, ['ID_REMESA'], [ID], False); + + AStream.Clear; + DABINAdapter.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); + DABINAdapter.ReadDataset(AStream, tbl_Cabecera, TRUE, '', TRUE, TRUE); + + AStream.Clear; + DABINAdapter.WriteDataset(AStream, dsDetail, [woRows, woSchema], -1); + DABINAdapter.ReadDataset(AStream, tbl_Detalles, TRUE, '', TRUE, TRUE); + + frxReport.LoadFromFile(DarRutaInformes + rptInforme, True); + frxReport.PrepareReport; + frxReport.PreviewPages.SaveToStream(Result); + finally + AStream.Free; + FConnection.RollbackTransaction; + end; +end; + +end. diff --git a/Source/Modulos/Remesas de proveedor/Servidor/srvRemesasProveedor_Impl.dfm b/Source/Modulos/Remesas de proveedor/Servidor/srvRemesasProveedor_Impl.dfm new file mode 100644 index 00000000..e5654c7d --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Servidor/srvRemesasProveedor_Impl.dfm @@ -0,0 +1,1010 @@ +object srvRemesasProveedor: TsrvRemesasProveedor + OldCreateOrder = True + OnCreate = DARemoteServiceCreate + RequiresSession = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ConnectionName = 'IBX' + ServiceSchema = schRemesasProveedor + ServiceAdapter = DABINAdapter + OnBeforeAcquireConnection = DARemoteServiceBeforeAcquireConnection + OnBeforeGetDatasetData = DARemoteServiceBeforeGetDatasetData + Height = 249 + Width = 343 + object Diagrams: TDADiagrams + Left = 150 + Top = 74 + DiagramData = ''#13#10''#13#10 + end + object DataDictionary: TDADataDictionary + Fields = < + item + Name = 'RemesasCliente_ID' + DataType = datAutoInc + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'ID' + Alignment = taLeftJustify + end + item + Name = 'RemesasCliente_FECHA_REMESA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + end + item + Name = 'RemesasCliente_DESCRIPCION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + ServerAutoRefresh = True + end + item + Name = 'RemesasCliente_USUARIO' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + end + item + Name = 'RemesasCliente_ID_EMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + end + item + Name = 'RemesasCliente_ID_DATOS_BANCO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'ID_DATOS_BANCO' + Alignment = taLeftJustify + end + item + Name = 'RemesasCliente_FECHA_ALTA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'FECHA_ALTA' + Alignment = taLeftJustify + end + item + Name = 'RemesasCliente_FECHA_MODIFICACION' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'FECHA_MODIFICACION' + Alignment = taLeftJustify + end + item + Name = 'RemesasCliente_NOMBRE' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Banco' + Alignment = taLeftJustify + end + item + Name = 'RemesasCliente_ENTIDAD' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cod. entidad' + Alignment = taLeftJustify + end + item + Name = 'RemesasCliente_SUCURSAL' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cod. sucursal' + Alignment = taLeftJustify + end + item + Name = 'RemesasCliente_DC' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'DC' + Alignment = taLeftJustify + end + item + Name = 'RemesasCliente_CUENTA' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cuenta' + Alignment = taLeftJustify + end + item + Name = 'RemesasCliente_SUFIJO_N19' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Sufijo N19' + Alignment = taLeftJustify + end + item + Name = 'RemesasCliente_SUFIJO_N58' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Sufijo N58' + Alignment = taLeftJustify + end + item + Name = 'RemesasCliente_Refresh_REFERENCIA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'REFERENCIA' + Alignment = taLeftJustify + ServerAutoRefresh = True + end> + Left = 150 + Top = 22 + end + object schRemesasProveedor: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = DataDictionary + Diagrams = Diagrams + Datasets = < + item + Params = < + item + Name = 'CODIGO' + DataType = datString + Size = 50 + BlobType = dabtUnknown + Value = 'REF_REMESAS_CLIENTE' + ParamType = daptInput + end + item + Name = 'EMPRESA' + BlobType = dabtUnknown + Value = '1' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'REFERENCIAS' + SQL = + 'SELECT VALOR'#10'FROM REFERENCIAS'#10'WHERE CODIGO = :CODIGO'#10'AND ID_EMPR' + + 'ESA = :EMPRESA' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'VALOR' + TableField = 'VALOR' + end> + end> + Name = 'darReferencia' + Fields = < + item + Name = 'VALOR' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'V_REMESAS_PROVEEDOR' + SQL = + 'SELECT'#10' ID,'#10' ID_EMPRESA,'#10' REFERENCIA,'#10' FECHA_REMESA,'#10' DESCR' + + 'IPCION,'#10' ID_DATOS_BANCO,'#10' FECHA_ALTA,'#10' FECHA_MODIFICACION,'#10' ' + + 'USUARIO,'#10' NOMBRE,'#10' ENTIDAD,'#10' SUCURSAL,'#10' DC,'#10' CUENTA,'#10' SUFI' + + 'JO_N19,'#10' SUFIJO_N58,'#10' IMPORTE_TOTAL'#10'FROM'#10' V_REMESAS_PROVEEDOR' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'ID_EMPRESA' + TableField = 'ID_EMPRESA' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'FECHA_REMESA' + TableField = 'FECHA_REMESA' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'ID_DATOS_BANCO' + TableField = 'ID_DATOS_BANCO' + end + item + DatasetField = 'FECHA_ALTA' + TableField = 'FECHA_ALTA' + end + item + DatasetField = 'FECHA_MODIFICACION' + TableField = 'FECHA_MODIFICACION' + end + item + DatasetField = 'IMPORTE_TOTAL' + TableField = 'IMPORTE_TOTAL' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'ENTIDAD' + TableField = 'ENTIDAD' + end + item + DatasetField = 'SUCURSAL' + TableField = 'SUCURSAL' + end + item + DatasetField = 'DC' + TableField = 'DC' + end + item + DatasetField = 'CUENTA' + TableField = 'CUENTA' + end + item + DatasetField = 'SUFIJO_N19' + TableField = 'SUFIJO_N19' + end + item + DatasetField = 'SUFIJO_N58' + TableField = 'SUFIJO_N58' + end> + end> + Name = 'RemesasProveedor' + Fields = < + item + Name = 'ID' + DataType = datAutoInc + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_ID' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_ID_EMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + ServerAutoRefresh = True + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_REMESA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_FECHA_REMESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_DESCRIPCION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ID_DATOS_BANCO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_ID_DATOS_BANCO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_ALTA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_FECHA_ALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_MODIFICACION' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_FECHA_MODIFICACION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTE_TOTAL' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taRightJustify + ServerAutoRefresh = True + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_NOMBRE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ENTIDAD' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_ENTIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SUCURSAL' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_SUCURSAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DC' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_DC' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CUENTA' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_CUENTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SUFIJO_N19' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_SUFIJO_N19' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SUFIJO_N58' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_SUFIJO_N58' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = < + item + Name = 'ID' + DataType = datInteger + BlobType = dabtUnknown + Value = '22' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'V_REMESAS_PROVEEDOR' + SQL = + 'SELECT'#10' ID,'#10' ID_EMPRESA,'#10' REFERENCIA,'#10' FECHA_REMESA,'#10' DESCR' + + 'IPCION,'#10' ID_DATOS_BANCO,'#10' FECHA_ALTA,'#10' FECHA_MODIFICACION,'#10' ' + + 'USUARIO,'#10' NOMBRE,'#10' ENTIDAD,'#10' SUCURSAL,'#10' DC,'#10' CUENTA,'#10' SUFI' + + 'JO_N19,'#10' SUFIJO_N58,'#10' IMPORTE_TOTAL'#10'FROM'#10' V_REMESAS_PROVEEDOR' + + #10'WHERE ID = :ID' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'FECHA_REMESA' + TableField = 'FECHA_REMESA' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'ID_EMPRESA' + TableField = 'ID_EMPRESA' + SQLOrigin = 'REMESAS_CLIENTE.ID_EMPRESA' + end + item + DatasetField = 'IMPORTE_TOTAL' + TableField = 'IMPORTE_TOTAL' + end + item + DatasetField = 'ID_DATOS_BANCO' + TableField = 'ID_DATOS_BANCO' + end + item + DatasetField = 'FECHA_ALTA' + TableField = 'FECHA_ALTA' + end + item + DatasetField = 'FECHA_MODIFICACION' + TableField = 'FECHA_MODIFICACION' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'ENTIDAD' + TableField = 'ENTIDAD' + end + item + DatasetField = 'SUCURSAL' + TableField = 'SUCURSAL' + end + item + DatasetField = 'DC' + TableField = 'DC' + end + item + DatasetField = 'CUENTA' + TableField = 'CUENTA' + end + item + DatasetField = 'SUFIJO_N19' + TableField = 'SUFIJO_N19' + end + item + DatasetField = 'SUFIJO_N58' + TableField = 'SUFIJO_N58' + end> + end> + Name = 'RemesasProveedor_Refresh' + Fields = < + item + Name = 'ID' + DataType = datAutoInc + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_ID' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_ID_EMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + ServerAutoRefresh = True + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_REMESA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_FECHA_REMESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_DESCRIPCION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ID_DATOS_BANCO' + DataType = datInteger + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_ID_DATOS_BANCO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_ALTA' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_FECHA_ALTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_MODIFICACION' + DataType = datDateTime + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_FECHA_MODIFICACION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IMPORTE_TOTAL' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taRightJustify + ServerAutoRefresh = True + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_NOMBRE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ENTIDAD' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_ENTIDAD' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SUCURSAL' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_SUCURSAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DC' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_DC' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CUENTA' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_CUENTA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SUFIJO_N19' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_SUFIJO_N19' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SUFIJO_N58' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DictionaryEntry = 'RemesasCliente_SUFIJO_N58' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = < + item + Params = < + item + Name = 'VALOR' + DataType = datString + Size = 255 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO' + DataType = datString + Size = 50 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'REFERENCIAS' + SQL = + 'UPDATE REFERENCIAS SET'#10' VALOR = :VALOR'#10'WHERE CODIGO = :COD' + + 'IGO AND'#10' ID_EMPRESA = :ID_EMPRESA' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'ModificarReferencia' + end + item + Params = < + item + Name = 'ID' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHA_REMESA' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'ID_DATOS_BANCO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHA_ALTA' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHA_MODIFICACION' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'REMESAS_PROVEEDOR' + SQL = + 'INSERT'#10' INTO REMESAS_PROVEEDOR'#10' (ID, REFERENCIA, FECHA_REMES' + + 'A, DESCRIPCION, USUARIO, ID_EMPRESA,'#10' ID_DATOS_BANCO, FECHA_' + + 'ALTA, FECHA_MODIFICACION)'#10' VALUES'#10' (:ID, :REFERENCIA, :FECHA' + + '_REMESA, :DESCRIPCION, :USUARIO,'#10' :ID_EMPRESA, :ID_DATOS_BAN' + + 'CO, :FECHA_ALTA,'#10' :FECHA_MODIFICACION)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_RemesasProveedor' + end + item + Params = < + item + Name = 'OLD_ID' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'REMESAS_PROVEEDOR' + SQL = 'DELETE '#10' FROM'#10' REMESAS_PROVEEDOR'#10' WHERE'#10' (ID = :OLD_ID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_RemesasProveedor' + end + item + Params = < + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHA_REMESA' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'ID_DATOS_BANCO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHA_ALTA' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHA_MODIFICACION' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_ID' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'REMESAS_PROVEEDOR' + SQL = + 'UPDATE REMESAS_PROVEEDOR'#10' SET '#10' REFERENCIA = :REFERENCIA, '#10' ' + + ' FECHA_REMESA = :FECHA_REMESA, '#10' DESCRIPCION = :DESCRIPCION' + + ', '#10' USUARIO = :USUARIO, '#10' ID_EMPRESA = :ID_EMPRESA, '#10' I' + + 'D_DATOS_BANCO = :ID_DATOS_BANCO,'#10' FECHA_ALTA = :FECHA_ALTA, '#10 + + ' FECHA_MODIFICACION = :FECHA_MODIFICACION'#10' WHERE'#10' (ID = :' + + 'OLD_ID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_RemesasProveedor' + end> + RelationShips = <> + UpdateRules = <> + Left = 48 + Top = 24 + end + object DABINAdapter: TDABINAdapter + Left = 48 + Top = 72 + end + object bpRemesasProveedor: TDABusinessProcessor + Schema = schRemesasProveedor + InsertCommandName = 'Insert_RemesasProveedor' + DeleteCommandName = 'Delete_RemesasProveedor' + UpdateCommandName = 'Update_RemesasProveedor' + RefreshDatasetName = 'RemesasProveedor_Refresh' + ReferencedDataset = 'RemesasProveedor' + ProcessorOptions = [poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 248 + Top = 24 + end +end diff --git a/Source/Modulos/Remesas de proveedor/Servidor/srvRemesasProveedor_Impl.pas b/Source/Modulos/Remesas de proveedor/Servidor/srvRemesasProveedor_Impl.pas new file mode 100644 index 00000000..ee671067 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Servidor/srvRemesasProveedor_Impl.pas @@ -0,0 +1,101 @@ +unit srvRemesasProveedor_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Ancestor Implementation:} DARemoteService_Impl, + {Used RODLs:} DataAbstract_Intf, + {Generated:} FactuGES_Intf, uDADataTable, uDABINAdapter, uDAClasses, + uDAScriptingProvider, uDABusinessProcessor, uDAInterfaces; + +type + { TsrvRemesasProveedor } + TsrvRemesasProveedor = class(TDARemoteService, IsrvRemesasProveedor) + Diagrams: TDADiagrams; + DABINAdapter: TDABINAdapter; + bpRemesasProveedor: TDABusinessProcessor; + schRemesasProveedor: TDASchema; + DataDictionary: TDADataDictionary; + procedure DARemoteServiceBeforeAcquireConnection(Sender: TDARemoteService; + var ConnectionName: string); + procedure DARemoteServiceCreate(Sender: TObject); + procedure DARemoteServiceBeforeGetDatasetData(const Dataset: IDADataset; + const IncludeSchema: Boolean; const MaxRecords: Integer); + private + protected + { IsrvRemesasProveedor methods } + function GetNextAutoInc(const GeneratorName: String): Integer; + function GenerateReport(const ID: Integer): Binary; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, uDataModuleServer, + uDatabaseUtils, schRemesasProveedorClient_Intf, uRestriccionesUsuarioUtils, + uBizRemesasProveedorServer, uRptRemesasProveedor_Server, Dialogs; + +procedure Create_srvRemesasProveedor(out anInstance : IUnknown); +begin + anInstance := TsrvRemesasProveedor.Create(NIL); +end; + +{ srvRemesasProveedor } +procedure TsrvRemesasProveedor.DARemoteServiceBeforeAcquireConnection( + Sender: TDARemoteService; var ConnectionName: string); +begin + ConnectionName := dmServer.ConnectionName; +end; + +procedure TsrvRemesasProveedor.DARemoteServiceBeforeGetDatasetData( + const Dataset: IDADataset; const IncludeSchema: Boolean; + const MaxRecords: Integer); +begin + if DataSet.Name = nme_RemesasProveedor then + begin + { Aquí se asegura que el usuario sólo accede a los RemesasProveedor + de las empresas a las que tiene permiso para acceder + filtrando DataSet por ID_EMPRESA. } + FiltrarAccesoUsuario(Session, Connection, schRemesasProveedor, DataSet, fld_RemesasProveedorID_EMPRESA); + end; +end; + +procedure TsrvRemesasProveedor.DARemoteServiceCreate(Sender: TObject); +begin + SessionManager := dmServer.SessionManager; + bpRemesasProveedor.BusinessRulesID := BIZ_SERVER_REMESAS_PROVEEDOR; +end; + +function TsrvRemesasProveedor.GenerateReport(const ID: Integer): Binary; +var + AReportGenerator : TRptRemesasProveedor; +begin + AReportGenerator := TRptRemesasProveedor.Create(nil); + try + Result := AReportGenerator.GenerarRemesa(ID); + finally + FreeAndNIL(AReportGenerator); + end; +end; + +function TsrvRemesasProveedor.GetNextAutoInc(const GeneratorName: String): Integer; +begin + Result := uDatabaseUtils.GetNextAutoInc(GeneratorName) +end; + +initialization + TROClassFactory.Create('srvRemesasProveedor', Create_srvRemesasProveedor, TsrvRemesasProveedor_Invoker); + +finalization + +end. diff --git a/Source/Modulos/Remesas de proveedor/Views/RemesasProveedor_view.bdsproj b/Source/Modulos/Remesas de proveedor/Views/RemesasProveedor_view.bdsproj new file mode 100644 index 00000000..4207930f --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Views/RemesasProveedor_view.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + RemesasProveedor_view.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + True + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Modulos/Remesas de proveedor/Views/RemesasProveedor_view.dpk b/Source/Modulos/Remesas de proveedor/Views/RemesasProveedor_view.dpk new file mode 100644 index 00000000..c65b6c55 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Views/RemesasProveedor_view.dpk @@ -0,0 +1,97 @@ +package RemesasProveedor_view; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + cxLibraryD10, + dxThemeD10, + cxEditorsD10, + cxDataD10, + vcljpg, + vcldb, + cxGridD10, + cxPageControlD10, + cxExtEditorsD10, + vclx, + cxExportD10, + dxPSCoreD10, + dxComnD10, + dxPScxCommonD10, + dxPSLnksD10, + designide, + xmlrtl, + vclactnband, + vclshlctrls, + dxPScxGridLnkD10, + dclcxLibraryD10, + JvCoreD10R, + Jcl, + JclVcl, + JvAppFrmD10R, + JvSystemD10R, + PngComponentsD10, + PNG_D10, + dsnap, + adortl, + Familias_model, + Familias_controller, + tbx_d10, + tb2k_d10, + JvPageCompsD10R, + JvStdCtrlsD10R, + dxLayoutControlD10, + GUISDK_D10, + ccpack10, + cfpack_d10, + JvGlobusD10R, + VclSmp, + bdertl, + vclie, + frx10, + fs10, + fqb100, + frxe10, + frxTee10, + fsTee10, + tee, + teeui, + teedb, + RemesasProveedor_model, + RemesasProveedor_controller, + RemesasProveedor_data; + +contains + uViewRemesasProveedor in 'uViewRemesasProveedor.pas' {frViewRemesasProveedor: TFrame}, + uEditorRemesasProveedor in 'uEditorRemesasProveedor.pas' {fEditorRemesasProveedor: TfEditorArticulos}, + uRemesasProveedorViewRegister in 'uRemesasProveedorViewRegister.pas', + uViewRemesaProveedor in 'uViewRemesaProveedor.pas' {frViewRemesaProveedor: TFrame}, + uEditorRemesaProveedor in 'uEditorRemesaProveedor.pas' {fEditorRemesaProveedor: TfEditorRemesaCliente}, + uEditorRemesaProveedorReport in 'uEditorRemesaProveedorReport.pas' {fEditorRemesaProveedorPreview: TfEditorRemesaClienteReport}, + uViewRecibosRemesaProveedor in 'uViewRecibosRemesaProveedor.pas' {frViewRecibosRemesaProveedor: TFrame}; + +end. diff --git a/Source/Modulos/Remesas de proveedor/Views/RemesasProveedor_view.rc b/Source/Modulos/Remesas de proveedor/Views/RemesasProveedor_view.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Remesas de proveedor/Views/RemesasProveedor_view.res b/Source/Modulos/Remesas de proveedor/Views/RemesasProveedor_view.res new file mode 100644 index 0000000000000000000000000000000000000000..36f26e234a8ac66a47e95cec6d496cf2f1442471 GIT binary patch literal 32 UcmZQzU|>)H;{X347|28c09i@|9RL6T literal 0 HcmV?d00001 diff --git a/Source/Modulos/Remesas de proveedor/Views/uEditorRemesaProveedor.dfm b/Source/Modulos/Remesas de proveedor/Views/uEditorRemesaProveedor.dfm new file mode 100644 index 00000000..3de62889 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Views/uEditorRemesaProveedor.dfm @@ -0,0 +1,1776 @@ +inherited fEditorRemesaProveedor: TfEditorRemesaProveedor + Left = 374 + Top = 273 + HorzScrollBar.Visible = False + VertScrollBar.Visible = False + Caption = 'Ficha de remesa de pago' + ClientHeight = 538 + ClientWidth = 676 + Scaled = False + OnClose = CustomEditorClose + ExplicitWidth = 684 + ExplicitHeight = 572 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 676 + Caption = 'Remesa de pago' + ExplicitWidth = 676 + inherited Image1: TImage + Left = 649 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000002744944415478DA63FCFFFF3F + 032D01E3F0B060F9D6D334B3056E41A4B729491AFFFCFDCFF0F7EF3F869FBFFE + 80E93FFFFE8169301B887FFDFECB109E5E876A41E249438206FF05AAFFF5F72F + C3AF3F7FC0F4975FBF207C10065A02932BFAB59C61DED24D9816CC373F8F6291 + F45B6F8626CF660C8BFE010D0361CFD5F60C1F791E800DBF14F0824169A520D8 + 928ABFAB705B00022036B2E11718CF33189F346660B809E4A833309C353FCBA0 + F9438BE117D007415B3C189EB2DF66B811FC1AAC566C3137431DC35AFC3E8019 + CE7C8A89E1AFD93F300D32FC6CDC5906E379408BB419183EEB7C61E0BDC2C3F0 + 5AE50D43F84E5F86BD51C718841771817DD0CEB211BB05E841C3BC1C684124D0 + 82C54C10C39719339C8D02D2B38C193E447C6410D8C2CFF0C2E52543D49E0086 + 0B7F2EC0E3A3977D0B911620FBE02A508203887F30807DF056ED1D83F02D2186 + 27324F18E20E86329CFA79166EC164AEEDF82D40B6E42F50C365964B9038B808 + 94D087C481DC5B79869F3F7E60180E02382D404E4520C58A1FFC186A9C6BC196 + FC03A7F5BF700CE247EF0D841BFE33E50F03E34C46FC16C0003C6D03B1CCB31F + 0C5325B4B1E60BDE877B505C0E03582D40CFA57FA039F3EA444D0609A7200645 + CB1E86FBC74BC06A5EDC0726E7FBF719E6EE7BCE30A7DA09C3E2294F73312D98 + B2780756570A7E3BC7A0F4660ED8307450DD928DD3E273AC89080BBA27CF2758 + 4C9C2B7B88553CA5751FA65AA0E12000B680919191A0E1C75A14FF93124C404B + C3E6EEFBB19A140B4281D42A6CC13467EF77AC96022D6024CA0290E196969AAB + B0C91D3F7E1D6BDC008101D0828BC45A803778402EC5A597681FE00A1E200087 + 355E0B6809686E0100FA3E2AAB1481BE0E0000000049454E44AE426082} + ExplicitLeft = 607 + end + end + inherited TBXDock: TTBXDock + Width = 676 + ExplicitWidth = 676 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 482 + inherited TBXItem2: TTBXItem + Visible = False + end + inherited TBXItem5: TTBXItem + Visible = False + end + object TBXSeparatorItem6: TTBXSeparatorItem [11] + end + object TBXItem33: TTBXItem [12] + Action = actVolcarDisco + DisplayMode = nbdmImageAndText + end + end + inherited tbxMenu: TTBXToolbar + DockPos = 0 + ExplicitWidth = 676 + inherited TBXSubmenuItem4: TTBXSubmenuItem + inherited TBXItem8: TTBXItem + Visible = False + end + inherited TBXSeparatorItem5: TTBXSeparatorItem + Visible = False + end + inherited TBXItem10: TTBXItem + Visible = False + end + inherited TBXItem21: TTBXItem + Visible = False + end + inherited TBXItem22: TTBXItem + Visible = False + end + inherited TBXItem9: TTBXItem + Visible = False + end + end + inherited TBXSubmenuItem1: TTBXSubmenuItem + inherited TBXItem32: TTBXItem + Visible = False + end + inherited TBXItem31: TTBXItem + Visible = False + end + inherited TBXSeparatorItem13: TTBXSeparatorItem + Visible = False + end + end + object TBXSubmenuItem2: TTBXSubmenuItem [4] + Caption = 'A&cciones' + object TBXItem7: TTBXItem + Action = actVolcarDisco + end + end + end + end + inherited pgPaginas: TPageControl + Width = 676 + Height = 397 + MultiLine = True + ExplicitWidth = 676 + ExplicitHeight = 397 + inherited pagGeneral: TTabSheet + ExplicitLeft = 4 + ExplicitTop = 24 + ExplicitWidth = 668 + ExplicitHeight = 369 + inline frViewRecibosRemesaProveedor1: TfrViewRecibosRemesaProveedor + Left = 0 + Top = 130 + Width = 668 + Height = 239 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + ExplicitTop = 130 + ExplicitWidth = 668 + ExplicitHeight = 239 + inherited cxGrid: TcxGrid + Width = 668 + Height = 214 + ExplicitWidth = 668 + ExplicitHeight = 214 + inherited cxGridView: TcxGridDBTableView + DataController.Summary.FooterSummaryItems = < + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + Column = frViewRecibosRemesaProveedor1.cxGridViewIMPORTE_TOTAL + end> + DataController.Summary.OnAfterSummary = frViewRecibosRemesaProveedor1cxGridViewDataControllerSummaryAfterSummary + end + end + inherited ToolBar1: TToolBar + Width = 668 + ExplicitWidth = 668 + end + end + inline frViewRemesaProveedor1: TfrViewRemesaProveedor + Left = 0 + Top = 0 + Width = 668 + Height = 130 + Align = alTop + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + ReadOnly = False + ExplicitWidth = 668 + ExplicitHeight = 130 + inherited dxLayoutControlRemesaProveedor: TdxLayoutControl + Width = 668 + Height = 130 + ExplicitWidth = 668 + ExplicitHeight = 130 + inherited eReferencia: TcxDBTextEdit + ExplicitWidth = 164 + Width = 164 + end + inherited eDescripcion: TcxDBTextEdit + ExplicitWidth = 108 + Width = 108 + end + inherited edtFechaRemesa: TcxDBDateEdit + Left = 419 + ExplicitLeft = 419 + ExplicitWidth = 170 + Width = 170 + end + inherited cbCuentaBancaria: TcxDBLookupComboBox + ExplicitWidth = 39 + Width = 39 + end + end + end + end + end + inherited StatusBar: TJvStatusBar + Top = 519 + Width = 676 + Panels = < + item + Width = 200 + end> + ExplicitTop = 519 + ExplicitWidth = 676 + end + inline frViewTotales1: TfrViewTotales [4] + Left = 0 + Top = 473 + Width = 676 + Height = 46 + Align = alBottom + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 4 + ReadOnly = False + ExplicitTop = 473 + ExplicitWidth = 676 + ExplicitHeight = 46 + inherited dxLayoutControl1: TdxLayoutControl + Width = 676 + ExplicitWidth = 676 + inherited Bevel1: TBevel + Left = 92 + Top = 91 + Width = 73 + ExplicitLeft = 92 + ExplicitTop = 91 + ExplicitWidth = 73 + end + inherited Bevel3: TBevel + Left = 336 + Top = 10 + Height = 30 + ExplicitLeft = 336 + ExplicitTop = 10 + ExplicitHeight = 30 + end + inherited Bevel4: TBevel + Left = 448 + Top = 91 + Width = 192 + ExplicitLeft = 448 + ExplicitTop = 91 + ExplicitWidth = 192 + end + inherited ImporteDto: TcxDBCurrencyEdit + Left = 163 + Top = 111 + DataBinding.DataField = '' + Style.IsFontAssigned = True + ExplicitLeft = 163 + ExplicitTop = 111 + ExplicitWidth = 93 + Width = 93 + end + inherited ImporteIVA: TcxDBCurrencyEdit + Left = 519 + Top = 37 + DataBinding.DataField = '' + Style.IsFontAssigned = True + ExplicitLeft = 519 + ExplicitTop = 37 + ExplicitWidth = 137 + Width = 137 + end + inherited ImporteTotal: TcxDBCurrencyEdit + Left = 449 + Top = 111 + Style.IsFontAssigned = True + ExplicitLeft = 449 + ExplicitTop = 111 + ExplicitWidth = 137 + Width = 137 + end + inherited edtDescuento: TcxDBSpinEdit + Left = 92 + Top = 111 + DataBinding.DataField = '' + Style.IsFontAssigned = True + ExplicitLeft = 92 + ExplicitTop = 111 + end + inherited edtIVA: TcxDBSpinEdit + Left = 448 + Top = 37 + DataBinding.DataField = '' + Style.IsFontAssigned = True + ExplicitLeft = 448 + ExplicitTop = 37 + end + inherited ImporteBase: TcxDBCurrencyEdit + Left = 448 + Top = 10 + DataBinding.DataField = '' + Style.IsFontAssigned = True + ExplicitLeft = 448 + ExplicitTop = 10 + ExplicitWidth = 92 + Width = 92 + end + inherited edtRE: TcxDBSpinEdit + Left = 448 + Top = 64 + DataBinding.DataField = '' + Style.IsFontAssigned = True + ExplicitLeft = 448 + ExplicitTop = 64 + end + inherited ImporteRE: TcxDBCurrencyEdit + Left = 519 + Top = 64 + DataBinding.DataField = '' + Style.IsFontAssigned = True + ExplicitLeft = 519 + ExplicitTop = 64 + ExplicitWidth = 56 + Width = 56 + end + inherited eImporteNeto: TcxDBCurrencyEdit + Left = 92 + Top = 10 + DataBinding.DataField = '' + Style.IsFontAssigned = True + ExplicitLeft = 92 + ExplicitTop = 10 + ExplicitWidth = 147 + Width = 147 + end + inherited ePorte: TcxDBCurrencyEdit + Left = 92 + Top = 138 + DataBinding.DataField = '' + Style.IsFontAssigned = True + ExplicitLeft = 92 + ExplicitTop = 138 + ExplicitWidth = 147 + Width = 147 + end + inherited eIVA: TcxDBLookupComboBox + Left = 92 + Top = 37 + DataBinding.DataField = '' + ExplicitLeft = 92 + ExplicitTop = 37 + ExplicitWidth = 81 + Width = 81 + end + inherited bTiposIVA: TButton + Left = 188 + Top = 37 + ExplicitLeft = 188 + ExplicitTop = 37 + end + inherited cbRecargoEquivalencia: TcxDBCheckBox + Left = 92 + Top = 64 + DataBinding.DataField = '' + ExplicitLeft = 92 + ExplicitTop = 64 + ExplicitWidth = 219 + Width = 219 + end + inherited dxLayoutControl1Group_Root: TdxLayoutGroup + inherited dxLayoutControl1Group1: TdxLayoutGroup + ShowCaption = False + ShowBorder = False + inherited dxLayoutControl1Group2: TdxLayoutGroup + Visible = False + end + inherited dxLayoutControl1Group5: TdxLayoutGroup + inherited dxLayoutControl1Item13: TdxLayoutItem + Visible = False + end + inherited dxLayoutControl1Group3: TdxLayoutGroup + inherited dxLayoutControl1Item12: TdxLayoutItem + Visible = False + end + inherited dxLayoutControl1Group9: TdxLayoutGroup + Visible = False + end + inherited dxLayoutControl1Group8: TdxLayoutGroup + Visible = False + end + inherited dxLayoutControl1Item14: TdxLayoutItem + Visible = False + end + end + end + end + end + end + end + inherited EditorActionList: TActionList [5] + Left = 96 + Top = 168 + object actVolcarDisco: TAction + Category = 'Acciones' + Caption = 'Volcar a disco...' + ImageIndex = 22 + Visible = False + OnExecute = actVolcarDiscoExecute + OnUpdate = actVolcarDiscoUpdate + end + end + inherited SmallImages: TPngImageList [6] + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001754944415478DA6364C001D6ECBE900CA4E640B9 + 2921AE0673B1A963C4A739C8598FE1DB8FDF0C33966C67505054C06A08232ECD + 3EF6BA0C250B7F315C7FF88F6179E15F86456BF76135841197CD79737F324C4E + E1008BF345BC63B833959561F13A4C4318D13507BBE833E4CEF9C160ACC1C290 + 60C30296734D5FCD70F2A333564318B1D90CD20C02D72E9C04D33C92A60CAFDF + FF6358B8E71B86218CE87E866986D90E738186A92FC397EF0C0C6B8FA21A0232 + E03FBACD5FBEFF07E30A3F36B801323ABE0C3F7FFF67F8FE938161EFC5EF7043 + C00678586B32F8B7FD61887167836BFEF59B81A12E186180A8BA0F58F3E76FFF + 194EDDFE0136A07DDA1AB001C90FEE3F98131BE4C4A092FD9BA12A8A07AC19E4 + 67582C800CE051F0C1D06C636994020F44902171214E0CCA99BF19E25DB8E09A + 91C301161330CDE040448E46649764D85C473160C6114D0CCD581312B221CEFA + 9C589D8D3521E13204047069C69B99608680002ECD380D4036E4C98B77383583 + 000005100EB8572466A60000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001074944415478DA + 63FCFFFF3F032580912A06303232E2543079D1766F201505C520B02C37CE331A + C400EBC5670054F3960057330631617E0690B2F357EF336CDA7786A1B5289211 + AF01C89A254505183E7FFDC1F0F5DB0F06311101A021F7184E5DBA733927D643 + 0FAB01E89ADF7EF802D6FCF5FB4F866F406CA6AFC21095DBC6B06C7215238601 + C4689EB27807C3B153E7300D2056F38B371F18B62EDA79EDFCF9F9DA700348D4 + CC70E1C2024420022548D68C128D40C906A0E67A5234631860A6A752AF202346 + B466740396C2521AD020B0A49EA622C39C95BB716AC64889C0405C0A541C2501 + 4C2830804F33D6A40C8A09A0A62DF7EEDD03F3AF1FB98D372301A39191E2DC08 + 0029AC32F01825AACD0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001514944415478DA + 635CB5E3DC7F062C20CCC388918108C0083220D4DD104570F5CEF30CEDFDB319 + CEEF9C4ED0109C06D818AB3278C7941134046E40CBAA0760819A3005B80B6000 + 9F21182EF8F1F30F10FF86E05F7F1882926B883300E60264C0C1805D5F69B802 + 238601E836FF04E2CDA7BF339484C9A368EE59F59261D9C1BB0CE7A75933C20D + F0B4D56698B0E5195617601AF09021DA4998C1297307C38D35A18C60031CCDD4 + C036FF84DAFCE7EF3F307DF0FA7FB001112D57C09A57D4E8800D98BBFA346A18 + 58EA2BC235C39C0FC2671EB0A2B8E0DBCF7F0C5F7FFE05E27F60B65DE26C8801 + 7316ADC11A58AEFE69282E4009C8284506F7F4B90C781349F7CA07FF4106A0DB + FCFD171003E980BCF9840D48F5916148EFBB8E2197EC2BCB1059B290B001512E + 92609BC1B602F1EF3FFFC1F437204EAE5A4CD8007F5B71B8E66F480681407AED + 12C20674CCDE884F0903000B1A00979E81F9710000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002574944415478DA + 63FCFFFF3F03258011D9004646468696696B17FFFECAD0DE581A7C0D596155CF + 0AF77F7FFFD975944755A3E8413760EA929DAF393938D62785D8A7C1C48BBB17 + 711BABAB5C7AF9F6FDDFC2446F354206BC75B6D4E35ABCFE90536B49F87190F8 + E4853B2779DA1BE46EDE7FE62ED00015BC06F4CFDBBA24CACF26FAD0A99B5B42 + BDCC7C6BFA563B057B986FFDFDE72FC7D20D072B26D62574E235A0A26DA999B0 + 98E0F2607713F9251B8E85692A4B5698E9AB9AAEDA7EE2DEBB571F3DDAAB226F + E33500044A3B979507B898B6BF78F3FEA3B1B612FF992BF7FF1F3975336E425D + CC52903C4103EAEBEB5998450D8FAA2A889BC94888306CD977664D675964284C + 1D0103EA99F8DDF50C8CD439E3FFFE67CB7DFFE9DB1F7E3E9EC637DF5977DC98 + B3E73C0343E33F9C0670B8AC555292175BC8F6FF9BEEDF6FEF995E7DF8F95941 + 55EDE5AB17AFBEFCFAC7C2F1ECC5FBEF0C4C4C89FF0F47DDC36A8056F2A103FF + DEDEE465FBFFB5F1D577EECB8C8CFFF72AAA6A7CFFF4F842CED54D7907184CE7 + 4631B0B227FC3F1AE38AD5008D981DDFD9BEDE48BABCA1703983DE226E09891F + D754B4756F7DBC7FBAEFF286BCED0C32BD9C0CB222B7FF1F8B93C16A805ED2EE + D74CEFAF445FDC50B48BC172858E34DFFB6582B2DAFB38BEDCFC7166456A0583 + CE0471063EA103FF8FC66A623540C063F55669B6E747AE3DE3E861E5E158A9C8 + FBF1D1FD6F628BF4147977FC7A79D3E3F2736E39060E9E84FF47A202B0C782ED + 627356C6FF935998FEB349737FB9FE95E975F2F32D8DDF98EC9647B1FCFF55F0 + EB1FD31FA08EC2FF87634F6235801C0000382740F0DFD997BD0000000049454E + 44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002854944415478DA + A5935D48536118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304 + 451021A651362821B1ABA49B6EA4460961D88542055D84DD6545415992174994 + 9625CC8F9C329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F + 9FF330CE39FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546 + 031A3D6E5FF329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B8 + 1AD206641414DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA + 9C27A4439F5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E + 9F80C335C05BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8 + E3C8655BD686D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F0 + 3AD1843C15125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD8 + 5A01A8A1DEC5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC37 + 60A7351E3D061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB + 7E5F4CB4822509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF2984932 + 75A60CCA088739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04 + E6035AF142101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148 + D92E7BE794778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED2 + 45A0729AC6A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56 + A08C20ED9476027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301E + AEB507B700334968A6631D019C759C5F627780822413BA194312CDFB41958C13 + 7FDB4052739000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F0058 + 5538F0EAB25B380000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001934944415478DA + 6364C002662430FC47E6672C606064C001C0122726A06AB870818121A1632A98 + 5D169DCD10E58B90B32840358C11A4D920622A5C604145365833482308D4F5E6 + 3134154F62A8EE4805F35B2B66334CDA8B3004C50098E62F2F6E823581347F7F + FB80E1E58DBD0C8BD67D6588F6656258BAF91F7E03AE3D66C009081A800CD61F + B161C0072243F419711AF0F7F777864D275D192282F5B06A5EB1F23C43D7FCD9 + 0CE7774E67C43000A41984B79EF3C36AC08F9F7F18366CB8CC10116EC860E491 + 85EA0298E6BFBFBE33ECB8120E36C071E64DB8E6ED09CA40037E33ECD87E03EC + 02142F206BFEF7FB07C3AE9BF1282E00D90CD20CC6BFFE30EC3B719561CAECE5 + 100374837B503483E8BDF733305C000333DC04198E9EBB893040CBAF1945F3DF + 3FDF190E3C2E041B806EF34F283E73E52EC200758F2A865B3B3A506CB927739E + C1C75383C177F17D0C17745971325CBEF51062004820CF19352F808065E64506 + 172748A0C16CFDF3F71F9806B9E4F683A70803B081E56B2EFEB7B19663D875F4 + 32CEC444D080AED9331808010085EE16005695A1DA0000000049454E44AE4260 + 82} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000002164944415478DA95D35F4853511CC0F1EFD491DD + D9587F2C83AC8C328DFE4949908BC0AC142A147BC8077B88A01EECA5E718F958 + 410486C384B50A1F7A991023CBEC0F594F81E5D4C211E130D7D4DDCDA15B5EEF + DD5DD74B1B8EA9D90FCEC3EFC0EFC3EF9CF33B06FE46CBE3AE042B886B176B0C + 0B73C342A0A9B17AD9E2FB4F5EE0E878C6E79776C37F03AAAAD2DAD1CDDEDD3B + B96EBB9B425604CC17CB8A4AFBD31EEA6BAC0CFF08A4907F02C962598EE374BD + D58F908C2581442241603C8CCBFD89D86C9C9C9C1C0A365A282DDE446FDF37E6 + AB9277B128F02B10C6DDF385CD074B10D6593019211E9CC2EF1DA5A0C0821895 + 68BE6D5F1A6873BEA6D07A0879951945CD626B1E6C372978BD7EBC5F4710D608 + DC6A712C0EC84A9C7B6DDDECAF3B459E315B3B3B685B9835448DCD30F4BE0FC1 + 94CB9D56672670A5E1A47E590F1EBDE374C3091D88CD4120063359902B4719F9 + D88F201835E0612670E97CA5DE41578F870A6B296BD79B096BC0B8B6C4DF3252 + 4024E81960832071B3FD7926D0587B5C7F32DFE8243FC74214EDD906AB4D4C29 + 1011230487BC1419BFB32BE8E06CE7BE4CE0C299637A07B3928CCF37816F4CD4 + F2040943365234823134C8E1FC094A8A8D4C0DF6B2E5EA8774A0BEFAA80E283A + A21012A791E6E6B4618249FF08AFEC97292B2CA7B64221BFAC9C90E74DFA289F + AB3A42FFB07FD90FE5B255A510B754379D062C1CD3E5E240AC931D9537B03537 + 19FE00839434866373C4BA0000000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001724944415478DA6364A0103062135CB1E2C26E20 + E5824F63448401235603809AA381D412374F5506413E2EB0D89FBFFF187EFFF9 + 0BC62F3EFD6728A999C0B0795E15A60150CD1540CD3A7B4FDCC5B0D5D94299E1 + CAD3BF0CDD3D53F280064CC666C06EA066176C36FF05B25F7F6544B11DC50098 + D3C3C3F519D6ECBA8C61BBBDA922C38D17FF41B6C384B6020DF261846AFE0FA4 + AE809C0EB21DDD6610FFCF9F7F0CE91553194CF49518A4558D1836AE59037609 + 23C8E6AB4F2E2C2136DAE4B5AC186E9CD9C570F3C1278801B53D0BFE3715C7E3 + D4F0E5C75F86CFDF8118487FF9F18F61C3BA350C12CA260C3B366F4218408CCD + 17AE3D03D3065A520CEC42AA0C278F1CC4EF02749BBF82F0CFBF0CC7F66E64F8 + C92AC970FDE259DC06A06BAE3DEFC390ABB49EE1FEB5530CCF9F3F6778FA919D + E1F5D3FBD80DC066F3AC743D8680EEB30CAFEE9E61D8BEF72C4CA90CD080A770 + 03A62FDB45542C400D006B062724DFA4366920FD84D86844D68C9212C905001F + 16FA1194E3DBC30000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD2520000015F4944415478DA6364A000FC3060F8CF884D62C5 + 8A0BBB81940BB258E7FC99286A8EBF9CCEC06EE4C5C088457334905AE2E6A9CA + 20C8C70516FBF3F71F8399770E44D3F9FF0C3F0D19219AE76D6364C4A2B902A8 + 5967EF89BB2806B7F54D6738E7C4C1F073793F58B3D1537986F33BA76318B01B + A8D905D9E6DF7FFE82B1437011C3B91DD31818BA8AC07246FB7EA01A00737A78 + B83EC39A5D9731C205E40274003700A8F93F90BA02723AC876649BFF02D920FE + 9F3FFF18D22BA63298E82B3148AB1A316C5CB38661F5B92A064690CD579F5C58 + 4228CAB6EC3E893D166A7B16FC6F2A8EC7A9F1CB8FBF0C9FBFFF65F08E2CC01E + 0B20038849342017608D055C2E80D9FC19487FF9F18F2125B3147B2C6033005D + 73ED791F86E7B334B1C702BA01E89ABF02F1AC743D8680EEB30CAFEE9E61D8BE + F72C4CA9CCE679554FE1064C5FB68B98A0801900D60C6230FA26B54903E92744 + E946B219C661244123560000C9AFE6B31530CB2E0000000049454E44AE426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000016A4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D18616C905E466403A27DCCF16A06AA + 61E89DB290E1FCCEE98C241BF0EFDF3F86E5DB4E33488B093314D5F5810D21DA + 0090E6DF7FFE31ACD97596C1C9429BE1E6BD176043CEED98C688D3804D0F0E30 + F45E6A02B37779EC62E05CC0C6B058EA38D80B3080D30090E6805D4E182E7911 + FC91E1C4E5C70C8F1E3F6298B774137603609AFFA4FC013B1B64738BB13743CD + D9AD0C8FFDDF81C5B6EC3B85DB00A6594C289A91C13DEF3740F1BF0C3B0F9DC5 + 6D0048C1EFDF7F21F49F7F50FA2FC31F181F2877E0E445EC068479988015F02C + E640B1F98EE72BB066CDDD120C676D1E311C3D7B05BB0181CE8660DB049773C3 + FD8DAC3957BB80219A379FE1D4C5EBD80DF0B1D7032B165BCD8B110330CD200B + CE5FBD85DD00776B1DB002E9F502609B13CF8781E50C840DE09A41165CB97907 + BB014EE69A1801060B44986610C06980ADB11AC3A63D2789C994D80D404EA6C4 + 0090010087546EF0ACB0C7920000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001024944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305B3E7F1A2323BA66090111A9272F9F301CD9BE99119701110999 + FF416A0E6FDB843000A4F9CFCF1F52F834C2808DA72FD8DF700348D18C6C08D8 + 004B77AF69F292F299308987CF1F4E979256DEB076DEE45D207E7052AEDBB3A7 + 770390D58000DC0B20FFCC98D0CE70E1053FC3DBBF3F191E7F66603831A310C5 + B6E533A6311C7CC080228F624046C534B82408AC690C856B9611976140970719 + 20ACA0CB30A53E13624068693F5CF2F2E3F70C37E7A5C163019BFCD7AD4D0C2B + 164C07A72146981F999998C17EFCFBEF2FD630C0260F3660C0933200BCB3BCE1 + CDA578040000000049454E44AE426082} + Name = 'PngImage11' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001C04944415478DA + 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440 + 1BA234FDF9FB8FE1F79FBF60EC105CC4806200A3E14C86FFE7D3C13408E0627F + 3C12CF70ECEC0D86AAB659D80D4007FF806AFEFC41D80CC2672FDFC1340019C8 + 7A2C6178F2F22B98ADAE20C0D09869CCE06E29CD2068B788E1D9AE48868BD7EF + 117601C8E673D7DF309846AF6310E66767B8BE3E8441CC6929C3C36D610CD76E + 3FC46DC0CBB7DF19EA679C613870E619C3C3679F197EFCFA0B36106433C8F97F + 80F8D6FD27B8BD1053BD8F61E9B6DB0C0B9B1C181C4C2518E43D5780C54136CB + 7BAD62B8B12E90E1FEE367D85DF0F75C1A836FDE0E866D471E315C5A15CCF0F1 + CB4F06DBA42D6003EE6E0A6650F65BCB7061B90FC3F357AFB11BF0F3540AC3B1 + 8B2F18A2ABF6313C7BFD8DC1C14412E895E76003AEAEF6077B4123528661FFC4 + F3A806C4F859C1A30839CAE0ECDF10BE41E416860F7F32188E4F453320DCCB9C + 81CB621ED8A6177BA218245C9681D9B7360431A805AC03B37F306430FCF8C3C0 + F0E61B0483D8700382DC4CF0DAFC1B498EDD5785E1FD4A3417F83919319CBA78 + 8BA8FCF0DFCF908171139201A0DC3871C6529273637E46740C00F128724C706C + 80060000000049454E44AE426082} + Name = 'PngImage12' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002324944415478DA + 63FCFFFF3F03258011640023232386C4922BFF0D9818FFC57EFFFE57FDEFBFFF + CC8CFF19BEF0F1B36D5C73E9EAAAD5613ABF60166318505FFF9F4939F077F98B + 97BF6BEFDCFEC6F9EDDB3F86BF7F810A9918192424D9FEF3F1B32FBFFA93236E + 5528C35FB8018D9B7E2C6DF0E38859759581F5E7BF3FD36EDEF89AF4E51B03E3 + B72F7FC0867EF8F897E1EF3F06867F40ACA1C9F96FE392D5BA5737265D831BE0 + 58F9F0BF83A5F83245796696CB973E87FEF9C70CD6FCE2D92B86E78F6EFCFCF7 + EFEF17360E5E4151590326666626067D7DDE65F57E1CD12806288BB3FF676567 + 66E0E062036B7EFEF425C39307576E8A2A19B9EE6A557DA217B2A88E9B5FBA41 + 405C87C1DC9CEF01D0004514031444391804843918409ADFBFFFCE70E7EA91FB + 9F3FF06BDED9E1F513A450357481341FBBD03D611973362B4B2C067CF8C1C060 + A020C0F0E3FB4F86CF1FDEBCBE7FFD84C3B54DC9D760812B13DACB29CAAAF84A + 58C69AC7C61A8B01CF9FFF61E014646190E365627870FD40C3A535718DC8D1AA + E2B1988F5788E7B998823597A5392FA6010C1F1EC0157FF8F081E1DF9F4F0D1C + EC6AFDA7965A7C02899924ED550746C555793523665D1D2ED440C49690D08149 + D2A9764E3ED90A037DEEFF3696BC7161EA0C4B8836402FF6A41A37AFF0690E2E + 7E3E7B5B9E65C08494084C48BF8832402BF40A0F8F30DB3E0E2E4153277B9E65 + 0DFE9C60A7E34CCA280098ACCDDF3C5A2925C913ACAFCBB51CA6997803ECF7B3 + 301C74FC834D0AC5004A000026261CF09ABF155A0000000049454E44AE426082} + Name = 'PngImage13' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E64944415478DA + 8D936B4893511CC6FF67DA74BAC9BC9478C9357338CC4B0EBC1709F929A25414 + A13E48082D8CFC20267E1B925DD004B3120C75919AA99B5DADD485E56DA2791D + 739ABA2D9DB7A953379D6EEF5EDFDE14859C810F3C5F0ECFF33BFFF38783E0FF + 425902A13B668448DCB4C5B658709C40D8F0A4563120A97FB1B61F3AAC291008 + EDB1630ED7ECECA97C6F7F6FAEABB72BCDB46902B54CAD5BD4CCF7AAC68772C5 + 6F8A06C8286E05484EAEB3F10BB6A49FE2B2F2C2628318E0C440063300410050 + 910596D4B344F7BBB63169FBA7B4D6E65AA915205320E47A9EF4ECB89A7CCE85 + CDA021950141E2BD2E9049645029E683BB3301EB2AE5F657E15B4955457EAA15 + 205B5095CD8BE33D0C8BE0523C1002B50120E5C12EE03509D8A60078386EC1B7 + F2066DA3A89C8FFE1DBF9076CADFADFA4A467C829E70829C82AE43B79B97150D + B3522956F3F4C9B3030001DD87C3AE49C84CBCBC646640FCA5D29DF3A0B8A09D + 09F62469E1C3A4B4D7F2EAF1A3DA834FA064DC2D2D8E4DB9984E63F922ED2A02 + 161DE04EE1EE13D4ED7CB090CB5CD9C6E1439978A3FE655189D50E52D37263CE + 4486374725C5D2168DF6C88E2CE414ED02942400030246C6A7087149C5688DF0 + 7EC63EE0F38DB3C79974A8ECB70B7459649E0F64F17854767800C588D390830D + 02172A19226F5E58D211DFEB9AF40DD5CFCB46E5DD0568AFECC6C43FFA470747 + 2CEBF420D2048072C57ED3CB2F846005F9D19CBD4E80C96882B9F16942D1DBA7 + FBD15C2B960F77159355056AB919E0E3E24C17F9C58487E1737218966D429386 + 01F235CB8589854D87D3DCD0448613938D61669B89B1C1099552DEB9AA9B9790 + E559D204FA99C5EBF78D0A0FB5D5ABA0BF6F0D7AA66CA1757CC4B862D808E9D6 + 9826C990236927D236A4B748AF92C6F6FF82243F890861AE817CC8001D6A0A74 + 2A478D1AFD7A926CC6FC058E20743BEDFA2F1ECC70B45A0CDA2614CB5AFDFAAD + BE19B3E828E51D009FCFE710C6F546ED680F473DFF3B7E70DAFCFEA8E5BFFA03 + 503A4EA60D6AAC070000000049454E44AE426082} + Name = 'PngImage14' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E44944415478DA + 8D936B48D35118C6DFB379D9D4C9BC94A8CB399B38CC4B0E9C9A45427D8C5251 + 82FA2021B430F08398F4258650145A615642A12E4A31AF6565795958A69B685E + C7BCB4B92D9D3AA74E7771BAFD37FFFDA728E40A7CE0FDF6FC9E73DE877310FC + 5FA850200CC22C90ECB06EB1EC76870347D8F88C6E7244D4F8D2B06FFA172910 + 082998BBD7154F8A079F11C5E0043002A8D64D2BA8A56AFDB2463BA8928F1537 + BF2D1B21AC0E9780ECEC06323BCE9E17CE61DE4D4C8BA5812F0D996C00380EE0 + 81ECB0A25EC0FBDFF74C4B7E7CCAEDEEAC97B8041408849C906321BD97B24FFB + B36854A43221106B01ECCE007780203F1CCC2AE576BBF09DA8A6BA24C725A048 + 5053C43DCFBD9F98C4210523046A13C0D0320099BCBBF0360920D87B0BBE56B5 + E8DA9AAAF8E8EFEB3FA2864705D65ECC4FCF30E2BE70BB54ECD28F542485D676 + 3E2C482458DDD327CF0E04087CC222597519059917566C34B8F358BC031C94A8 + 8B0F339241FBEB870FEA0FAE40CABFF5A23CEDF2B93C2A3302E9D611307D0002 + 29006EC4D529A4DD2ED6B61DF0A1B279A3F15559854B0739B9C5A92792799D29 + 5969D4650B05791200C31B804A74E046B831C061423E8B3757544FD509EFE5EF + 077CBE76F208DD07DE0C7BC6F82FD3CFC430B95C0F162F9A64715091171981BF + 0761224E5E5AD1E3DF1A3A8C2DB5CF2BA764FDA5680F0EA43B3E469D8A4B5AD5 + 1BA149130DCA35CA66283B1E67C6B2A97EA147C16AB1C2A27C0E9F1C1CD27FEF + AC6F968D8BCB097412755D8F0EF3F7F36962A7F2121D8B3218976E4287860632 + 83FDAC6269D3EB38272193E64B6761988DAC981E55A894B2BE75BD5644C00BC4 + E0E867217738228597E06654C1F090010666DDA05B3E6159336DC4F76BAC3384 + 8968007C8971BE842D62D6C159C5DE5F109564E1F17403C8C64CD0AB26419F72 + CAA2319AB3A4F3B62F7008A19BB9577F71613E52A7C3A04731B9AA339A6F0CCD + DB9A0E03EF04F0F9FC48DC626ED34D0D44AAB5BFD347E76CAD87859DFA0386D8 + 3FA68502A9830000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000032A4944415478DA + 6D937B4814411CC77FB3B7777A5E7276969AA4648A20A5592A4585FE654122BD + 0CAA3FE2841EA45946697591BD8DB27748A2BDA0A43FA2420C893252D2A244B4 + 7C24495986AFBC3BDDDBDB9DDDBDDDDB663714B366F9B2BB33DFCF777E3BB383 + E0DF66235A19342370912538D0CAB2825BF00A6DA4EF2D1133D5A8AA2AA029EF + 4126B3292B2E21BA70697A5262626A9C393422040D0FBAFCAD6F3BF187C68ED6 + 9F5F472E2992524FBCE2F400735884ED40E6BAE58539F6CCD0B9F323009111C5 + EF075191600C7BA0ABEBAB5AF7A071A4ADBEE71CE7C615849126032823B52D77 + EFBAEBF6BDEBAD164B20E941A092EBF89ED75050960C6ECC805B6060D8E984E7 + 379B9C2D8F3AB71353CD4440CC8ACCE49725D7F2626DB3AC60A028C2535092FF + 4A2FCD5E1A0F2E3C062E9E8171D1034303A3F0E24CF3A7910EF72A1230826813 + BDAFF87CEE85ACCD19269AA2C16030C0093273EDC372C8DE92FFD7EACEDDE902 + 06B3D0F1A41777DEED2D5015F5369A1335BBB6ACFA4056745C24A22903941636 + EBF044C38204BCE003FBEE62B0DAFBC1237A61B8C7A9B69DE979ECF3F836A1A4 + 65F15F4EDD2A880BB606A12B45AD93B02C2BE023D2604D79FB8F02B5F533B022 + 078C9B55BBCF7EEBC43F8424B4243DE19BA37C678CC962844A47B71E204F8212 + 09F1EBF783474E02BBB105BC1207DE711EFACA06BE8B7D520C8A8A0D6F70DCD9 + 951E343B1061598067A54EA8AEBAA4435A0826D22A3976B21406B31B80F76160 + FB3975E8E2E84785F12F460166E3E91D17361D8E5D1E45F332062C8BD07EC300 + D7CA4EC1BEA292BF16B177751D6893304D5E9979E0AD5265354FDBC694B4EC05 + 7599FB57844906093862D04CCEBB913AE4D9F01EBC3E1EBC22AF87635680F1FB + EC4FB95DC922DBD8A105A0008BF1444641DAA1A88C8800CE8F8123656AA59A1F + A740FF9A7AF22CE8B0208AC035F258A8911C20C3D5A9BF72D8CC79C197E3D7CE + CBB12D0D09106862D4A13F9F343133F70E63F18D740F7E818330E3D30FD31CA3 + D5986F5B68B55B532DE128923248269F0EF2DF05856FC58372AF52013C5412AF + EB7FA7516B34512232C2063A944E44C1C82C7B14CEEFF2B793929F92B16E2265 + EA71FE0D330BBCF031BDB9A60000000049454E44AE426082} + Name = 'PngImage15' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000031C4944415478DA + 6D536B481451143E779D5D5D37D95AD354523445905AB32C0A0DFD653F92252B + 8BFA130A3D40F385D1C3B09766A5652548D23B34FA1115624894A0F6502845CB + 079298A5F8CA75737677E6CECCCEA3BB532DAB75868F3B73EFF77DE7CCBDF720 + F8374C045BFC97F8AD3504F8191D0ECEC639B91E32D741407B13154501E4F5ED + AFD3EBD263E2220A37A5C49BCD1B62F481214BD1F4E49CDCDDD18F3FB4F7758F + 8FCC5C9504A98570F9C506FAE01053715A46526166565AE0CA552180C88A24CB + C04B02FCC476181818519A1BDA677A5A862E32365C473482C740A3D5ECCFCECF + A8C9CADF613418FCC80C02853C678EB4425E5502D8300D368E8669AB155EDE7C + 67FDF8A4FF002135FE35884A4E4B787DFA464EB469B9117C341AA2D78008329C + CF6D55CBB39406C11C4BC33C6F87A989597855FEFEF34C9F6D2B319841948E2A + 387639BB327D6FAA8ED2505056F066C18E363DAE05CBBE5C30E7BBE02767071A + 3BA0EFD930EEBF3F9CA748CA5D141A1ED454F5A8383D22260C511A1FA8287CAF + 8ABC037302ECC92E0263D618D879274C0F59959EF2A1A72EBB6B378ADF1CFBE5 + FC9DBC9800A33F2201D547BB3C06A228818B80E55C2A728A4E01B3AB0B689B43 + 19BCF0B51F7FE7E2D1FA94B8AF25B587A274062DD971173C2C1D560D448F5020 + 26B23A1E3D790EA62C6DE09C6761B46AE21B3F2A44A1F0E8156D25F70EA7F807 + F9212C72F0A2C20ACFEB6B3C62F788094E9496C12411B32E0C8E314699BA32FB + 49A2E575C857AF2D3B58B9FB44745238C58A183AAF890BFEFF5259A947CC082C + B893D0EF9C22DDE0BCAD884A8EFB1813375A5637A71525070B3E023084E02631 + 24136E88564D262DADE0E4DD621EB08383F97AC7B8D82BA59363EC731B205F83 + F66C6ADEC6E3E1A921BE8C8C55B1BB54FDD34418DBD642DE3955CCF13C30ED2C + E61A85127251AE7B5FE5E0659101D5B1DB23334D9B96FA721421AA22FC3BEB9F + CC4C27C6FC5BE101FC8012A2995FDC4CA15AA336D7B4C69865DC605881C2343E + 82CEA50AD96F9CC476E3497158AA03166E11EEDCFFBAD11D1481196961271548 + 995100D28B768991E7E45E52F273B236482079B7F32FB7E1BAF0E8F71C040000 + 000049454E44AE426082} + Name = 'PngImage16' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000019E4944415478DA + 63FCFFFF3F4341F1F9FF0C6402469801BEFE4A0C0B16DD60583CC71CABC21F3F + FF327CFFF90748FF6128ABBCC2A0A5CEC0B072C752E20C40D6FCE3D71F86BAFA + 1B0CEB963B31A85A241336005DF38FDF7F18DA5AEE3098997032CC5D3D07BF01 + D834FFFCF597A1B7EB3E612FE0D20CC253263C625092FFC5B0F1C06AEC06E0D3 + 0CE2CF99F68C4152EC0BC3AE931B310D983EC908A119AA11A409660008CC9FF9 + 9C4180F72DC3E14B3B500D00019021840048F3F7EF3F19CEDCDE8F6AC09F3F40 + DB7EFC024B82E81FDF816C280D11FFC5F0F9D337B03C08DF7C79126180A7B73C + 86E6CF9FBF43C460867DFB09D70C32ECD1A7F308036CEC44C18A976E9A82D7F9 + 7CFF8DC19A4186BCFE7D0D618089193FD896B5BB67311CDA309341504A87E1C9 + ED930CEF3FFD60F8F0F927C3FD671F1956AD59CDF0EC96105833C8BBEFFFDF44 + 18A0A3CB0976EAB6C30B182E1CDDCBA06768C8B073FD02B8CDF79F7E64E89C34 + 87E1EE456EB06610403140599519EC827D6796312447F833F072B130B0B0B2A1 + 387FF5D6430C37CF72C0F9700318191919F49D72C9CAD200FAC9B5C145016BDA + 0000000049454E44AE426082} + Name = 'PngImage17' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000015D4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D1891F98CC80644FB98E3D50C54C3D0 + 3B6521C3F99DD3194936E0DFBF7F0CCBB79D6690161366B04C57058B715C6060 + 24CA0090E6DF7FFE31ACD9759621A4D68281352A97E1F7B2C90C8B2E10E10298 + E6DFBFFF325C5DC2C1F044E912C39B4B4B19984A3AB17BC171E64DACAEE860D0 + 60D0F399C2F0F2D636868587CC18A41A1A18D218F07801DD669866100E699161 + 10D5F6050726411720DB0CD35CDE369B61DED24DD80DF8FDE72FD856107D6319 + 1786E6ED7B4F311C387911BB01611E260C6E73EF80F9110C1F180C182C18C4D5 + BC5034830C3E7AF60A7603029D0D212E00FA7DEDAA2B0C2D2D210C6B6A9EA068 + 06E15317AF6337C0C75E8F2160D92330FF4E8B0B838B4B0D985D5CE907D70CC2 + E7AFDEC26E80BBB50E5CD11FA84B60E181C0FF18AEDCBC83DD0027734D829A41 + 00A701B6C66A0C9BF69C24265362370094D348012003002CB76B52FA97B19500 + 00000049454E44AE426082} + Name = 'PngImage18' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001B04944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305BB1603A2323BA66090111A9272F9F301CD9BE99119701110999 + FF616A189135FFF9F9430A9F4618B0F1F405FB1B6E0021CDD70CF8FF0B09B0D7 + 481C78D50AE2FF7295B1FBC82F7AF0C585F30C8C96EE5ED3E425E533618A1F3E + 7F385D4A5A79C3DA79937781F8C149B96E6627F7F4F8B23ED3DD226BC2F04840 + 96A19CE72DC3E7E387182EDEF8389911E49F1913DA192EBCE06778FBF727C3E3 + CF0C0C276614A2B860F98C690C9BAA5A1854F7F530282A4830DC7FF08261E657 + 318689B76F33820DC8A89806D70C026B1A43E19A65C46518C0F25F3F3048CE28 + 6050BFBC9A61DB7F198693AE390C535AF220068496F6C3355F7EFC9EE1E6BC34 + 782CC0E47F5EBFC060D7E5C170E8BD208301F73B06BE7F1FFD642E316C6604F9 + F1D9D3BB01CC4CCCE070F8FBEF2F4618FC7D723D22F3EF93C4FB37DE301C1296 + D9E8FBE68198BED87F4BFEBF1FED084619087CB4178BB974FFD3D42B8F7E7801 + 6D390A12DB28C4BA51558ECB8F2803D6F1B2C67CFEF5C728EEE7FF62A006701A + 98C0C0202ECBCDB00A00547CD715F016991D0000000049454E44AE426082} + Name = 'PngImage19' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001034944415478DA + 636498F123988181610D032A0861C8E058CB400460041AF07F8201AA60C10520 + 91C1C1489201604DC40114D7313234DCF84FB4561868D080BB8E71F3BEBBFF7D + 1C9550E4FFFCFDC7F0E7CF5F86DF60FC0F4C83F8DF7EFC66084FAF6738BF733A + 7603D6DEFBC710B2FB378A61732CFF307888FF061B7AEDEE4B86EAD6C9B80D60 + 9CF993015B803EF0FDCAF0EBF75F863B8FDEE036006403EB9CDF0CA40628D800 + 0F3B05B01F393BEE911C9E6003ECCDA4188E9CBBCFF0F70F3B03A9010A36A0AE + B307ACB8A9BC04C5005C9A91031425B52107283ECDC8018AD500429A41F8D1F3 + F7D80D8005283ECDBF81F8F99B4FD80D8005283100AB01B0002516000097A51A + 7A68BA98860000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001A34944415478DA9D922177E3300CC7655636C3B20596CD702C86C7E6 + B141C342EF1BE42318167AECD81916BA6CD0638582852A0BCBA46CCDDAF46E77 + EFF4E2A7D8F2FF2759B6724FD9354BF30B09810EF5B16C43866FACAC7DA67DD5 + E364655A15020ECEDD42AD47C839EE4AE9EC5CE492EBB2CF9DFC676BCA83772D + 6C133CEFE14D395F066B0C032AA4346AD5B9905D20C49BD255350196D4BEF40D + C48A47657F44073D05CEDC9AFBF0585F63B61D1379AF7BF2B702C67D8509B0F6 + 4329E52D1DE8CE2CF557B6B93144CAF13C04767702CCED62B12433587FB99141 + 4E1C03C2B70011B72EC02E479843CEAD6E60D04BEED9C1825B47A54E6273CF15 + F73CE9095226D00B891000FB66C1733E2F71CCACCC08EA36043165755141D334 + 2CE6EEAFE429F0552F3468CD5E370CE05842F04E4FE2DFF6A05979CE04633524 + 15F08707024484E0F9EA36C880ACAE7A70DE87931D7B0190BCD0B1326F11E256 + 20FF0098C454D92324167A5320163B95FF47C0518EC02219F4E9D3AB01C780F4 + 3780910A46D167763E3FF508B95A59BA105F037E76038EC28FE6C9B58DCDEC3F + E273F115E07FEC1D6B02010E884AA1F00000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001D24944415478DA + 635CBBFBE27F062C20D8559F1145C0600644DD850C1471469001412E7A286AD7 + EDB9846A08507365811743FB846DC41BD0D23303CC3EFF529F61E19464861B77 + 9E332C597190E1C7CFBF175FBFFFE10D34E8298601F7AD2419148F3D67F8FEF3 + 37C3F71FBF19841D16C335C380181F0B4365E7D62F4083344086C00D0069E6B4 + F26638B66E2E83C3F9AF0CDF7EFC62F08BAF02BBC0D74D9741474B96E1CAB5C7 + 60FACFE7370C0BD75FDEFA6A5FBC0FD800C33A77B06686FBFBC0B61C3B7F9F41 + 67FF2B8688F47A86F33BA73382C20064C8E65D97E186C1C2036C809FA30EC326 + 5566062B4345B8E66FDF7F312415B4420C408A85CF471354A21ACFDE3976F216 + C3DB838910035C2DD5C14E3E6ACAC7A0BEEB39C357A0E6DFBFFF32E4567533D4 + 94646044F1C92B1F19A6AEBAC5F0F5780AC4006BA0CDA0400369046190ED2050 + 54D70736003D96E6AC3DC35033E33AC3CB3D7110036051860DC00DF8788EE1FE + 726306C5C8B30CEB4EB3C0A39991810080C5D2EF358C0CAC16F10CF7B72C64E0 + 8F44C412710698FE81D86E0F8CA8830C6057DCFA200B8E25A20C30BCA3CFA0E8 + 130F8C82850CEFDF31307CB80CF491C313702C116580C8697D0C7166F77BE058 + 22CA007CB1449401F862090078951B407104A20F0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end> + Left = 555 + Top = 0 + Bitmap = {} + end + inherited dsDataTable: TDADataSource [7] + Left = 64 + Top = 168 + end + inherited LargeImages: TPngImageList [8] + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000003CD4944415478DA8D96ED4F53571CC7BF17EC9315 + 11864234C607C6D4E9408621F88CBA88D0C64D48EA906C3E3459F40FD077666F + 7CEB62A2912C43F0A950A12A3001AD2613810908B46869E69E8B2FBA3087F499 + B6F7B63BF7E0BDB6D2A79BDCDE73EEBDE7F339E7777EE7DC3248E1303C346BC9 + A5812FDBED767AAF51D7B9C9F4A07E22595B2655F8DED202642D5E089F3F88B6 + EE415CF8BE857F9C54C2A402DFBD651D7296C8C5FBD3336EE87F7C8206DDBDA4 + 1226197C57493E96662D9A7BF9F810BD861A4BF1EFB4136D5DFDB8D2DC9550C2 + 2482EF2161C9266111E00D470B611C015A75D7E11FD6E2F51B176EF7FC8CA696 + F812261EFCC0F60D502AA451706DB902A7EB5F60D2F32195B8068EC1E5F1C1D0 + CD4B62878B4904F7F8392C3A3922C2C361D280B438736900B6D94FA9E4D5FD5A + C8A46968E9E8C555FDFC9130EFC3856C8984A72F90E0E31C274AD767A3EBF138 + 7A2D6E64AF2D82C99A4E257FDED320C4B1E87C34881BAD3D511226D1840A70E1 + B09AE7269987FB021CBCE49C9C545089AD5B0387CB03E39351E80C0F44892008 + 278207D830BE297F27FAB6DD41E182A4A9CF0698CDF8BDA31A334E2F7E7A6A42 + F36D2395303C3C56B644F69C09BA3139C5E2ECE11C5AE727DA9791274AF8B3C3 + 64A712ABE17338C9C4F70D3D4757DF2FA0829ACF8AE2C2BD410E013F0397C329 + 0A4E9CEB059B5B4005B38110825C083EF25EDFAFFF518959AF86E5E55F387FB9 + 19CCC5EB3D61AD661F14320915683616A2B24C22C2F9DE05FD0B10F4450B9C59 + 6B299C070B23197FE5A082519D0AD6DFFEC677F56F0599194AA8CA8BB1848429 + BDE40768EABEC6EE923431C6E1800C0C1B2D9852AE8E091FB959058F771643A6 + 0974F7BF04535C716A236963D1D6A95173601B9128A1286BA4924DEB58DA98F5 + C891217347096CD29531E16E12FFC1B109DC6A7F3837C9FCAF20397144854315 + 5B91A15C88CC9DD7A864F90A2F8A729538B6F7DD662748C602B9F37AFE74D422 + C2C5348D941CAF55A19A8C840B315855758B4A64996F909FEE84C7350D960D61 + C6C7D1364D7FC829BCFF4A05A97118187901FD1DE3FC85365FA28646BD132E6F + 0005070DC0E6CD5015E6C58C390F9748D2D03F3C8E9B6DD1AB38E66627488E7E + A942D59E2D9090945DA36EA392B2FCEC28F8B31B9598251FA061B335263CEE76 + 2D48BED25462DFF66228E4527CF4C55D2AA1C75B38CD16027F3F2C49059192BA + 9A0AEC2A2B2212193ED174D2673CDCED9DCB96D6F64771E109059192DAEAFDD8 + 515A08B94C0A8EAC5A9A2D6396A4F0A48248C9113292BC651F807C1260FFE735 + F4778D49E129090449E6B25516C7948DD64919A49CD2DF96FF0126B669571175 + 682F0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000032A4944415478DA + BD95CD4F134118877F5B0A22D84205341E30087E24021A45893131F1E2C178F1 + 2A26FE07C6C478319E8D9E8C8926EA49E217D1B328F142A24123070B2E6DB76C + 0B5DB6A585B614CA47BB1F6D7D772CDAD22DA0094C32997476F67966DE79F72D + 97CBE5B0958DDB1601C7719B7EE1D18B8F9768E8A17EB660FA2BF537D7AF5DEC + 2F5CCBD8FF22C8C3DF5FBED04D2F73882FAC40CF64114BA6E1F3F9797AC693E4 + EA7F090AE1FB9AEAD9DCD24A1ABA9E81AA6510239920C530CABB71F7E615EE9F + 0425705A6E80753D4B27C8A0AAD24A630EFE5002E25494242E26D994A01C5C55 + 7528AC6BC866B3A8B7D782B35830198A63C829E2D9BDDEFB4EE7F3DBEB0ACCE0 + AAA617C155EA29458546D2867A1B72D90CDEF67F41DFD37E3709DACB0ACCE00C + AA680CAC685A5EA4B13B38D97E00B14412BC57C2C0E0777C7A37545E50166E80 + F302E324EC37CD7775B4223EBF0861621AA35E19636322BE7D18361798C2159D + ED785550024F2C821F9F82673202419882382A221C0897DEC146F0D59014C213 + 0B4BF0D0CE9D8244F020FC3CC127C31819E92DCE2233785AF90B53F360632E43 + 1FD7098A79742E899F047691C0352621264F63C22D3178D177F0F8E540093C95 + 568BE29EA64C512834468A9EEA6CC34C7C1E6E5F082EA3BBA71097C310F9893F + F0B582D7C78EECEFE9EA6883B5C2C2629C5EB373259F9EDDC70F6226364FE020 + C6082E8E87200B0148A25C045F2B983C77FA684BE7E16696D3A9945A10EBBC48 + FB0D8FC617081CA44B0D421483181F19C7AC3C5B023715B43637D109AC58585C + C64A4A29806B043F84394AC561DE4FE560165E418668C083E6F01281A3CED6D2 + E4D8853D0D75D8595DC52ED2C89E2C8D5D14F34834C1B2E5873B00C123232147 + E017A4B2F0B582C14C8E3B5FBDA30A95560BF6EEB6A3916486A4C16187DD5603 + A77B025E2902371FC072740E9E51DFBAF0926A7AE7415FCE6677C052C1C1565D + 81C6FA5AAA2B39D45111CBD2627F7086761E424494E0F30436849B966B4362AD + AC84BDA69A5295C3F2D21295619D95E5C5E40ABC4E3F8B79FB99F68DD8ACBD7A + 728B332B153722B1F987E170181ADD81F1DCE8AECFDE4D410B1B950A6E7BFEF4 + B7B2FD02BC08E5EFAAF547E00000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000022C4944415478DA + 63FCFFFF3F032D0123CC82D53BCF13655398871123B18683CC46B120D4DD10AF + 06A01A86F6FED90CE7774E27CA12922CF80754B776D7050651415E86A2BA3EA2 + 2C21DA0290E17FFFFE63D8B0F712838DB12AC3CD7B2F88B284280BFEFDFBCFF0 + 0768F89FBF7F19B61EBC0A0E2218A08A0520D0B3EA2131410E06A5E10A704BB1 + 5AD0B2EA0186260E0646869230798286831CD2317B23C3DB3DF98C382D00F141 + 610E0E963FFF18FEFEFBC7306BEB4BA22D3051F8CD1052BD0D6C098605216E06 + D008FDCFF0FBCF5FB0E1A0C89DBBE335410B7EFDF9CF3069DD23866827617022 + 0059F266771E238A0541AEFA0CED6B1E91144440FBC186FF02FA76F69627E020 + 82010C0BFC1C7519DE7EF88661C8B203EFB15A806C388CDEB9FF2458AE6CC679 + 4C0B3C6DB5C061FF179A2C81084CAF3AFC096E4144CB159CC1D49EA60AB6E4E8 + F133D82D70B5D26098B2FD25C120C2E67264FAF4E9B3D82D70325763F8F8F907 + 8605EB8E7F815B40C87010BE78FE1C760BEC4C5418FEFD852451502A82E4E07F + 0CDBCEFE005B00323CBA0D7710954629327CFBF997E1F6B58BD82DB0355261B8 + FFF41D86C6A3B718180A43E419BEFFFA87D5C520F6CFDF08B187B72E61B760DE + 92B5E0B2071DB8FAA73164F8C912653888FDE2FE654C0B181971975BDD2B1FFC + 4FF292061B5030E5264E75715E32608BDE3DBE4ABA05316E52045DFE0B5CB430 + 307C7C4A8605614E1244190E026459106027CE70E8E869066201C916209731C4 + 02140B6805009C1383EFACA508270000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000E9C00000E9C01079453DD000004BF4944415478DA + B5D37B4C53571800F0737A5B6ECB4B2F2D2D2D2053408286870CD4C9C0B89989 + 8ACEB041F035064CEB365800D93235C0EA40FD836D380C085B44C7C30993111E + 93199411DE844029B80908586094577B81963EE8E3EE82D311662A35DB97DCE4 + 3CBE737EB9E77C07120401FECF802B010821A8ACACC7BAC453B54A95E6405AE2 + E111631B7C9E7E331102E87431313C76B1FFAFFD9E071492C0A3A109218D8AD4 + 68C68527040281E1799B9FCF2A738306439314971765244598060C3C9E1406FA + BA73EE36F6045E381DD6B672F39339393457C4BE748BFBFAE08AFBED572E9B04 + 94D7B20647645D7111FB7805E58D359DF2817DB97CBE76795E7246717450E096 + 5C7239E5C7AAA62B99C9260039F977B893B3AA9E84A8FD3603C313BA9FAA5B8F + 9C8F0B2D799A73F6AB627B77676E4750A0375BD43B0ACA6ADA7ECE4C8A085935 + 9097574B1F56C89A2342767A6356E6A0AAB6E3E1AF1DFD5B6E0822D5A1A1C588 + D71B66D7DF7B3BE0E862767BCF20A8691265647D1115BF6A6031522E9784B130 + EB9BEF066DA72C68B5C4F5D2BACF5262DF493F935E78684F804FE9C6F53CF8E7 + 040E6E57B7E04A9572DBB7C951FD26018BCDF8B4FCAC5DDB37F377F86C84AD5D + 0353F79A1FECD9ECC22B3EF8E6AB2EB25925B85327D4F70E8DC5640B22AF3E5D + 640A004EA7FCC046D7A06D216F6D73E230AD417E59BD243CF8353B081128FC43 + 0C6A9BBBEF4BF48CBD2582B085970296904B45611C1BEB225F4F67848A40E0FA + 0A178C4864A0F46EEB2C3E33BF332735BA6B79BEC9C062BD5B482D8A5998D5A1 + 0D8E6C60678B01D14331E81D94246509DE4F052BC26400B8FC821E0E5178D9D9 + 326A5BC516E6737225F0B09BEB1892500FB688E7A5A02E52FD72C08E026F3B1E + 2B92CBC676D3E9664E23A313A85EA7910368A6B1E3602C3A1D5DA0D210B14422 + BBFF6860FC3BD018DEB53AC03797C659E79062CF65C6418346AF981AD3E85438 + 9C56D3692C864A6EE1E0A3D62AA6AD0787261A210D250044BCD45A832DB93413 + A8E70544FB49AD5100DB5FF1D14667CE3732F103056A98EBA322C42D8D9ED239 + 348725AEB39CF56438FA2E5066FAB893B8C27D4C4A1D279770C9DF3E09CCE831 + 8002CF12F5C7B28C022E11BF89508DD489AA1ABE26421D12414998FEEF23BBEA + 6683EF46ED7D09BDACD756A61AE2492A05CAA539A73C3A60EB6F03338623D170 + C4D328E01E5DAF21A47D5A864EE92FACFAE49F12F42F28DA84C93CA9F67E2832 + 3FECA4C30739DD5567F067F3BEB9A90035FF9468388A1A053CF8CD7238FDFB3C + 55A7F2E92C8F1D7B329A42A1BCEE52ED8EC9AC11DE56E61A44EE3833DA13DC5D + 9E50B30CB848023124606514F03AD5D24F99E9B5D42B64FEDD5509834B837E37 + 98660CD8E7B616BF2745DD985C267D977E52745D88D49F0025254F8ED0EFFB22 + F21EFC48C0D52860B9B7347B2D9C896252E70E8B2AE24BC1CE142AD0B97ECD36 + 577DCC3197F3BB71762B8FC3CAD8C0D46D958FF59DEA2A4F2804DED99B009D71 + 0B204803D170EC43E3651A50E88F52F4D55C0B45E563B9F597900031185DF381 + BD85A262DA801F5FBAD8C0020F1EDBA61ACE8D40E50225145722C1804AE39355 + 7480A83FDAF8E287E69FCF275BE7C82EC7D152A1C650F5B529037EEE59D52C5D + 7AD166000C17C85610F94D904F2C0D341ECF79E143FBAFE32F16D672EF3D728C + 4A0000000049454E44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A0000043D4944415478DA + B5956D6C535518C7FFB7B7ED36B66E5D47D67663731BECD5B18605D8504C084B + 74982DC16468D4F881AD0305E3870550D100EABE482246712A8AA00182BA9828 + 84252006D7264AA2631B461325DD5C9ABDC0686B6F5FB7DEDEE373EF6869C736 + B6189FE4A4A7E79EFBFFF5799EFFE9E11863F83F834BFCF211506AD6A7585DFE + A99E3611BD4B1553DE7FC0DC797B64FC9C13387B883149017C0064549A528F56 + 5A2A9E31AE2CD00EDF700AB62B034DAD22EC8B117E07482B3019F61516E7ED15 + 6F8DA6BB6F79D84D1F0E5A197B8BDB06F06D7A743F5C8827B4997A684A6A804C + 031C7F8D78ED97FA9B5BB130E4531E9B2A2D655D191AA9CAE570201C61CC15C0 + D94911D60EC642DC4915DA9BCA714C97024E6E87C46BA029AE86DA5C08C79F4E + A1F7CAB566AB08DB3DC280C19CA77FBBA42877BB776C940F08018444B0DB3E1C + EE6178AD1B88CAFDE58E02797526D8561BB1324A00519A191A532174E535181A + 1A176C3FF42595EB6360836595E1AB1C9DB660CC39A1EC0F46204E06B0AF4DC2 + BBB17D0A409E1C032AD6E7E3C7223D8C31803C54E999C8B1AC85F3A6CF6BBFFC + 4BB30C3995A2B2D696E6BC2F8602691E6F50D9E79F4298CAD2DE069C4ECC320E + 90E32450BF6605BE37A623231122A9782CAF5A0DF7B44618F869F0FC9A55D94F + BB275DAA6058549EFB66C45BACC085D9654C02C8F1058F268B09DF64A5429B08 + 11A97419463304B707E1E014A669215696093F9EDB097C399701EE01C8714A83 + D60773F1499A1A7C1264D6A0864A54F397A8E65DF3396C4E801C67B4D85F9683 + 4EB50ADC5CE25351B04972CB76865716B2F0BC8083D4DFAA545C2DCEC6BA9868 + 34011096ED18C4E1768657659D2501C8519A2C9DB6AB7A6DB955F8E3376EBE12 + C959F8C238B003E85C3480C497E5E51BCE6C78AA79EBDF17CE21484D5DA80FD3 + 049916B1872047EE0B20F1ACE212F3B71B5B1EDD343E781DA3D7FA93C4C88E1E + 8941CDABA04B5C8F48F289C58BCF2BE76F1E00D55C5DBF42FF5D43D3238F07C3 + 115CEFB90831CAE222816984DD213446818954158E136463ECD413546E428446 + FB2E72FA9C80AF759A37B734D4BC9E663070FDBD5721787C890D955C41B45119 + 3E57F6D29FA31BE8500187E8F1B2B8D80CE459827427014EF0D8FC585DD1C53C + 935E3DEC9CC4B06334A9C6247EC4CAB06776FA1F02D5F4EB8ED3743D77F75EA1 + DE63DB6EE07C1CD05791FB7B6D85B1CAE70FE1D7010722E2DDD2FC13823D1C45 + 039DD4C83C76D61A8197497D3F8DD43B990428BBADF4CE6505602FCAEE7EA826 + BFA56FD0018F371417F747E017A650FB027003F70932482D099FA0A9E5CE9240 + A37127633F739FF16859579ADD3D36E1492A0DB176B72BB7E0E2E23D20450B1C + A0E95ECA86A7526DDEC5582F27A759A6852D330575316708615C1A91B0E50D32 + C9620109BDA9A78F27A9D91D7117D19D6A58AEC6E9340D1AC9350295A796360C + 2D557C76241D34D97E5E4A8F9270ED506EC4FF1E32E05FC9675CEF0AFC725300 + 00000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000027F4944415478DA + 63FCFFFF3F032D0123CC02464646AC0A66243060B820630103230391006EC1C9 + 898CEE406A07B2E4890B40C33AA6A268B8B8229761E9E67F0CD1BE4C1886FD67 + F8E76151C0B0139705FF154C1A18045444212EAFC8061BFEE5C54D86A6E24970 + 0D75BD790C770F4C015BD2B16802C3FFBFBF19FE01F1D7A7BF1836CC69C0F01D + 8A05061153510C7F7D7527032EF0ECF216B025AD73DAC016DCD8D2C870FEC23F + E22C787C6C21C3D64DA70886AFB79F1983988E07D8825B3B3B89B70066092100 + 331C84EFECE923CD027430F9A037410B61A0345C016E095116FCFFFF8F61CA21 + 5F869230798286F7AC7AC8D0317B23C3DB3DF98C445900321C9452A61E0D22DA + 021385DF0C21D5DBC096E0B50066F8BF3FBF18A69F8C2068C1AF3FFF1926AD7B + C410ED24CC70F3DE0BB025382D00451C03D00290E120F6CC33B1382DF8FB0F62 + F8AF3FFF18666F79020E22BC71003210968160ECD91752B05A806C388CDEB9FF + 2458AE6CC6794C0BB0190EF2C5DC2B59700B225AAEE00CA6F63455B025478F9F + C1B4402F740256C341F4BCEBF9283EC0E67264FAF4E9B39816E8067563351CC4 + 5F70AB046E0121C341F8E2F973981668FBB761351C8417DDAD045B00323CBA0D + 7710954629327CFBF997E1F6B58B981668FA346235FCFFBF3F0C8BEFD7321486 + C8337CFFF50FAB8B41EC9FBF11620F6F5DC2B440C3B306ABE120FE92474D0C19 + 7EB244190E62BFB87F19D302559712B8E1E8F4F2E75D0C495ED260030AA6DCC4 + 1944715E32608BDE3DBE8A6981B45E00C3B34B9BB06A3C24798F21C64D8AA0CB + 416C503C7D7C8A6901B8CABC7001BBCB3E7B3E6008739220CA7010C0B00057A5 + 0F03DD2B1FFC0FB013673874F43403B180640B90CB18620100261ED9D6E5FCF2 + FA0000000049454E44AE426082} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000037C4944415478DA + B595DF4F5B6518C73F2DFD4191B66C6C4E8512618376DD28B485B1C126D90F36 + 8D1B1726264B76B53BAF3431DE99F80F18BDD1449399254B644E1747743ADD94 + 48169C428131268366832D631BC838FC687B0A057AEA7B0EB692B562417D9393 + 9C93F33EDFCFFB7D9EE73C47974824F83F976E25A0E59BCE75D1DEFBF00CD72F + 7FA4CB0A70E268DD9AC4450C454F17F2E63BEF6784FC2780EAEDCFF3580A6784 + FC2B403CAE70EEBB007BFD4E22D15846C8BA01AA783C9EE0FC956E0EECDEC1C2 + E2524648D680E1FB9374760E119A95B1D99FA2AECEC5739BED5C68EBD58AFCE4 + CA1A1096635CBC14D084B7941761CECB25321D66EAFE440A343032811C959124 + 498B39DDF275760055BCE5B3761C9E321CDB1D42DC844EA7435114E6E57946FB + 4778187C44D3613F66B3414BDBC5B6AEEC0167CF77905FBC096F4D3936430EF7 + C2301E5D7E67B5409E3EC648D720F353111A1ADC28A226DFB607B203A839FFE1 + 4A0FF5C71B291169B1EBE14E086E882C0813E488E70D3630CA53F48B4EF2EE72 + 512852F6FDD5EEEC00EAE973375AA93C50C55C04CC0A8C89D3CB4B5060165D24 + C242E2DE4A98B1BE2114D1413E7F053FFEDC9B1DE0E34F2E535A5341597529C3 + 63301703530E3C9B07361308034C2E08A09009DD1A606CE801FB1AABF8E9D7BE + 7F06A8C5FAFCC235AC22FFAE3D2E46C661711136E5C266711905A8C0080BC255 + 707A9E4737832CCE84D95959C6D540FFEA80E32FD56A1FD0E8F8B45683FD279B + 90643D2191A62DA2B076215C201C6C109738070392CC2F5F75E0F26CC5969FCB + B59EDF5607BC7AB84673B0245A51EDFF925D4E0A859389591D46B1F519E1C022 + F2633588B489E79B771E70B73B48B5AF428B09DC185C1DF0CA419FB651854833 + B2E6C2DFBC1BEB461BB373A20E8A0EBB69B9931E4F4DD37BA90B5FA59D2F4F9F + E575DF755AF3DE5E1DD0BCBFFACF39B3EC22223EB6E488F01CF163C9B7109989 + 30D0D6A7C544676EE1609CA6E2DB58BC47986CFF9463AD957F0F78F9054F4A3C + 098A2B097E17436C38389A9A455B9D0E0C7A3D5F7CF02E45917BD497C6707B8C + E4541DD320C5AF756406BCD8B0334D3C39399F0427EF4FBD518FD751AB419C6E + 03267F730A920638B4C7BD26F1E4BE336FED4B41563A490334D63AB52075AEA8 + 814BF1BF84944422A37872AD846C739B18948CE980BDBE726D22AE77F59C3A99 + 829C934AD201997E1E6B5D55D1560A771C659BC7CB1F1C73BA92B5793DE80000 + 000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000B3A00000B3A01647F570D000002724944415478DA + 63FCFFFF3F032D01235D2C606464C42AB978D3F10C0E76EEE9E4181CEAAE0731 + 1B9F05AB775E3A1DE2A66B822E0EF2F3BF7FFF19FEFEFB8742FF03D217AE3F67 + E89DB19261F3BC2AFC16C05C0FB480E1E0E97B0CAFDF7FC5E95A51416E067D0D + 49B02513E6AC66D0D3353A03F481295E0B40AEB73751341115E2818BFDFB0F72 + 2DC4A5A82E87E0CBB75E3014D6F6309CDF391D6C204E0B905D4FACE120B9C9F3 + D6C05D8FD70264D713133C5A2AE20CD7EEBC44713D4E0BD05D4F8CCB4172A965 + 5318FC3C6C18EEDDBDCEC0C6C6CEA0A363C400348311C30264D7136BF88D7BAF + C129C7232C99C152959B61FDFA350C17AE3D63D834B712AB05FF41AE07197EF8 + CC7D82C1A3A620C2905E3115C570297975866DDBF7A35A50DBB3E03F30821880 + AE671012E0C69AC681086BFACFAE9ECED0589D07371C04502C689EB8E4FFEF3F + 7FC9C9B070C0CCCCC2202EA30C371C04E016D4F52EFCDF541C4FD0901FBFFE31 + 7CFFFD1F4CFFF8FD8FE1CF5F18FB3FC3E68D88A0F1F27444F5013116A01B0EA6 + A18683F0FE9DEBC0110B321C2388401650143EB060E2E063E0E6E165E0E1E621 + DE07845CFE1D2A7EE1C82686EF7F9818787878C0961C3A749AB005840C5FF4D5 + 8E61C1850B0C4BB5DE30DC38B585E10D304973F3F2822D397BEE067E0B8871B9 + F76901B0DAB9AAAF181E9CDFC670FFD173065E5E3EB025376F3DC16D01B1C1E2 + 9D21C43083D59481B5790BC38B2BDB192E5EB9C1C0C7C7CFF0F1CB7FD4FA0066 + 0138D9C10C40321C268E6C3848FC75B127D841300B4E9FBBC8C0CA210A361C24 + 8E62415D411CC3EC95BBC94E41CF9F3F07275398E12816C08A0A4A92A8B28621 + 43828F3E4AB90FB7809600004F6ECDEFF6DCFB3B0000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000B3A00000B3A01647F570D000002954944415478DA + B5955F6852511CC7BF3E9882694B723D6450D4A21ED61FB3879EEA295CABA058 + D1CB6A23A315C2A441AC4123368A82FE5011066D63D1ECAF6058291643AC8D60 + 966EB5FE3E64D4966B7B1841B1997A4FF75CF14E773DFE1978E070EE3D1E3F9F + EF399C9FCA082190C964284523F73A88AC54020A8F9E3323A7E0B6EB558352A1 + B2150BAF991C00852B0779742EC143EFDB40CDB64AA3241DDF398EC066F74ABE + 6399372AC2E93B53904ACF0BE00F7CC5C4E45FC99AB15FA3B054AD07ECE781C6 + CB4084876FD743D1DC01D97E736E014DBFC5B8DCA8D3CE17E7387E6D824FCE71 + 9CB083CE07BD387CA94AF84CE1FC88E8EE3550D45961F04411F2DAD882F4F42C + 78821FBB1D3E58E2EF10BD7A425CA7708FC0507F26B7203D3DEB78C423DABA12 + 38DD8868D02D1C0DF6D4C2B0D3CA16CC4E9F2D3927BC13F43CF2C3526B02EE5E + 037E8401F34940AB83C1740C2DC78F0AB74922484F9F0B4EFB1DD70B74D95D59 + 7717ACDF88AC75C00B084D4FE12F5F8799C7439B6EA10AAB962DC291E6EB30ED + 3B84CD152A389D0EB4E9E3D23A3875A19BACAD34804F0F6D994A4C3B939A8EC8 + 987378FA9975B0D770168FBB5A9282F62B3D24164FA0D8565EBE985907BB9E8D + CF085A2FDE226D4D07F302A7FF71988A11619C8E7178EAF531EB40BF64697182 + D9703AF6FAFCCC3A90088A3E9FD41131EAA0E01D644B9E7C267833D0C7AC8382 + 04B9E0B4BF0FF533EB20AF201F7C8A7FAE0E94096B3B2BC6F12DE446F87B046A + B5062AB51A9FBF8CB00585C0E97C75831637E49B206F7F82B1610F86863F41A3 + 5980DF7F8800A7AC0C413C91064883A7E6D3E1747EA2297945538240700872A5 + 4E8467085AAD0770F3FEF3B95C26A14522110C7EF899011705A99F8A39D3F9B6 + 62F506D4ED5827F9E71204A56CFF01E5E2820611E3A8010000000049454E44AE + 426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000029E4944415478DA + 63FCFFFF3F032D0123B2054BB79C24CBB6DE290B19CEEF9CCE882C063317C382 + 681F73920C07EA619016136628AAEB43B184AA1618682A30BC7EFB19C512AA58 + F0F7EF3F8615DB4F33D818AB337CF9F613C5128A2D0019FEF7EF7F86D5BBCE30 + 38596833FCFAFD07C592733BA6319265C1FF7FFF19FE02F11FA00520F6BABDE7 + C0918C0E48B2E0D687070C53AF4E62B8F0F6020348B59BB41F43A1661603EF12 + 0E8637E15F188E9C7FC0F0F5DB5786B76FDF82D5CF5BBA89780BE6DC58C0B0FD + D9620C4B4F3FBFCFF0E4EB038697219FC0C1F5E7DF3F30BD79EF29E22D38FDEA + 0283F906230CC303551CC1F4FA3BFB199E057E801BFE0F18275B0F9C26DE0287 + CD4E0C879E1F6028D56B606834AC021B62BEC582415D44106EC123FF7770C341 + 71B3E3D019E22C38F5F20283FB7627860D6EFB18CC8575A0A9E61F83D5762B14 + 0BEEFBBC811B0E8AF83D47CF116741FED12206676064BA49DAC00D1758CE8511 + 5C773D5FC30D07A9D97FE202610B400A6BCEB430D4E95532FC03CA234722321B + E6F2B92FA631C408A581C50E9DBE84DF82084F5370068219C4BF9413C3D5F7BC + DFC033DAD467ED60B164E112B0FA6367AFE0B720D4CD04C595422BB8E1A9E6E6 + 9BF70C5BACF7C00D7FCEFE942160971343B16E1D83277B3058CFE98BD7F15B10 + E46C84121CA2AB79512CD868B10B6CF8DC97D319BA2F3530D8493A30F42A2E84 + EB3977E5267E0BFC1C0D50C25A722D3FDC0274004A454DC67D0CAEAC81703D17 + AFDFC66F81B79D1E4A10C96C106490E15600E75A74806E3828C2AFDCBC83DF02 + 0F6B1D942092DF2CCC70DBE315C3F2D74B18763DDDC400D265206CC020CA2187 + 61380810B4C0C5520B45132C4271255564C389B2C0DE541D258DC33210580C4B + 9E40369C280B6C8C54C125222500AF05D82A0F7200CC0200F191E9EFB5062090 + 0000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300004E2000004E2001167D99DE0000035A4944415478DA + ED954D4C134114C7DFEC6E0B420B085A6A040DD88A45C0C4602D4A2D281F5589 + F1AB6AA2094A4C5502DC34F160EAD11BF1E4498D462F1A43FC408BA052C11435 + F8890AA222A2601B6B2D94B26DB73BEEB4168B16E1E2C1C4974C7627F37BFFFF + CB9B995D843186BF19E8BFC1940653012693897AF9CEAEA5696825732FE72B6B + 3877F2B6F01A982A77435595F48F0646A351E4E3E3342CE7BDFBD1F6F1E7024D + 957CE6BCED6FCC66EF6485D71D3DDE617FDFAD9ECC00E96B6BC5727FAC9A65DD + 41718EF795A6CBE6F9699A6925738F67ACE091A5A5235AB2C1502DA1E3F108E1 + A219A0CA4A530C15CFE68F7986DB0814F0072AAC2DD71BC9A276FDA69D98E7CE + 7198DFDC616E6C8866A0D6EB13C448E48AB6078278A5209E22888F05C531E075 + F76E5CBB11660B4AD716D30C732BC0F37A6B5363535403B56090F2BB01D209E2 + 4AA96C99DB1D6A0BE251455BD395C6C8E4253A5D929491248F70CCD7A796CBDF + A219E495EE8A4F605CEE09060683412C92CED6F03CB64C26FE830F9F6B4A187C + D41D144EDECAFBF7D50889AC41039D4EC7C83354050850B0721FEB392441D892 + 1827C62C93E892393F7F3863B1F822049142A110CB6473553C254AA431041806 + 80E3001266A7D8ED036FFA3A3333F94237CB1103B4AD72DF0A0A51EDD18AE91F + EA3F2191CCBADA7CE9ECCD88EA614B556DC9E0A7B71BE7CF997FE0579E773B2E + 386C0EAB5CA962D1DE9A835AD273B25873B41E66C602385900DB28C0C008C0F3 + 0127F49C3282D3ED2F7FD16626170C6FDB53534CE140F39FF8A10FB6D573E6A5 + DE463B761FC061F17C39C0A03B34C209244892F9702924C5607DD6E2A501719C + A4793A7C863203D05C450ED6166AE1C8B17A9821F4718C9B5811097A580CC7AA + F38070E1980E1FDC2C7966567ED1AAD50F4945E1707943C3EE9998402A229196 + 9A06D3E159AF6719D2EB6B63B20A942D19E5C6C2746908F0064209E449E0272E + 1BBC3D5F37D865BD6BCCC9CDE5E4694AB3667F3D4CC5B73E7EB020784CD76EDC + BE70C4EBE9D96ABA0831B470DC9CE2F1EA084CFAF9CDE95C33EAF8D49E9D9D0D + 0AC5224D5C72AA85984CC6B37E9FCAD1FFBA7BFCA269CACA14CB57569CEEEC68 + 2EECEBED1B4F50E6A8067BBA7B770F753F89FC4453E5DB77AE1A1D1EBE13C986 + F9AE675D455FDEBDEA0DEEC1BFFF47FBE70DBE03EC16D6DE8FAAF1BC00000000 + 49454E44AE426082} + Name = 'PngImage11' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000003784944415478DA + B5566B48544114FE362D31A3C78F104C7B50145A902FECE15299D12668ADBA61 + AE925AA405811585F4A31745FD308A0A42DB5EBBE96E56AE9AAF30CD2CC5C79A + BB998FCCEDA5640F15823233DC7B9BB9EBBDEEB65BAD5207863967E6CCF7CD39 + 6766EE15B12C8BFF29224AA0CCAF89237DD63F051689E21323C5D91CC1F5BC6A + 96186302A0EB68EC0CC3C2C430309918B34E7A2AF2DD2751A23A21B22210F965 + 9A17EB5304DD9ECD34256382FF25C11EA84D82DB8A6B9CDEFF301E771FE8A0D4 + 94E0E1ED745B020A36F69DD39EC5F4552A7CAA88437155A37D02478421FE96E0 + E6366293C610FD5E75D3F822A0E096B9363116E0C4765FA74677690CCA6B0D63 + 23287EDC850B375BF0A4AD177D9FBF63DA94499086CCC1B15D0198E2EA2C44E1 + 21D1E04DF16654D6373B4E702CF3098E663422FFAC049215B35050F5165BD22A + B8B9D0200FA84FAE11A2F00ACBC1CB42191EE99E395E03D76597F1FD8709BB36 + FB207DEF320E689A58C9CD393B89D0551243C6F81A985357D3D4EA5804F47424 + 1DA982BAD488C329FE48952FC6FDDA77901D28177C68CE79F0F91177D09E2B45 + DDD3F6BF13F005A5EDC730C3919C57B7C063E6645434F40804AF8B64233B67B1 + 28528B67B736A2B1A5E3F704F412D1313EDCEE8F0388492B87FE793FC2C45E50 + 1C0A86A7E4A64060BC1B2D6CC447560083261CFAF64E5B82046930B7800233FC + 1927FADAE462E85A7BB9B9B6DC284C759B08CF0D390241475EA4E0CBF7CD1D46 + FB04F4FA0F356CB75AE0BE2E1B43A4C854CA2E4AA02A3222ABE4A54060D044C0 + 89149BFAFAC616A1E146185A3B5FD912C46F5C8989810A7C23EF8AC9E22229B4 + 1D38AED07360625F77246E5A0065A111F7EB7AE03C4184D80DF3B047EE8D3A6F + 4F81D4455B694B200F5F0E97A02BF85293387A4B99D14233BF1C45ABB490A65B + 321B29CA73C84C48B54F10131664B573BB4056F3E6776778C447BF74EE9F09A2 + D707622AB9407D95F1E6428F000D5B00FFFA06D5FB8CA685CA8E3307A1D877CA + 6A4C2090860660C66A1537D853160B8FF51AC1E9457E14164AB582AD5787C34F + 5E840CC34E6ED7ECE057B0FD1FC0F4BD0778BDD380EB060B8288103F3B69F8F3 + EB49D36229DBB78A7145556D3F024A5058A973E89B604F86A242B02D7C01AE92 + 636C5303FAD1CFD196667D1B1C1A3741EC9DD348F40597168D6C3F92E2A4A31F + 7DF207306E605E3200E1FF6727C90CAFFF0482645308AD8246DC000000004945 + 4E44AE426082} + Name = 'PngImage12' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000E9C00000E9C01079453DD000003DC4944415478DA + BD947F4C1B6518C79F7BEF8EFBD56BAFC7951F33BA75E9822B88520C88D92C93 + 05C410CA70986D3261B1DB3F261B24D3F92331F2A799C6B0F96B666668165D88 + 12E7FE598CC14C639C43D0988D41B69974DD5A680B584A5B68EFFA7AAD81306C + 8D0BE2935CEE9E7B9FE7FB79DEF779DF97C018C35A1AF1BF020882C81978E004 + A6EB6BA106236D0B42E4BD080045E3AA8A35ECA3587A607709717531F60ECD7F + 0378FFDBF806A9807E2734956898F027A94844054D03C86310701C02AB950B47 + E3DA075D4EEEA5BB069CB898DCC671D03F3E1655BCDE0548A520F3A4D332DFFA + 9BA208D8B2D5047351B5EB48BDD09B13F0E27B41E7A580E5870B3D849AF64F5F + 49BA522AEE1B198E48B11806DE40416C4EBDA380A9192D03E278048D0DE61BDE + 49B2FAE5ED309515B0AFD7838D14FFEE3C6DE9AEAD559B6211AD7F642842A91A + B1243E3D1D85D999202416E2C08B0A30BC5907109999382A045C5E2674B6DAE0 + 93AC8096377EC7452C8F79237DB6AC5CAC1BBA14165329B4243EE10B82DF3B06 + 34237E93C2DA607C36F4B849595F67B26C22B03E0B399F82E626F9B3A76CB027 + 27A0D0600235F9D7325034B5241E0C84E1E6F591A02E7870F058D599F4F87AE7 + 295654882F8B37D434D08CA4C7226869967F7CA6143D9A1320911C305C5EC65F + 140F8713E0B9368C3535F5E4D069D7F9E53DB0EF38D526291BFB8DCAFD603090 + B0C3257DB7A79474660534BF12C0884A81C9844056988C7824A24168D283FDDE + AB472F7FD17164E52EB3B77D7C1FCF291EB9F8613D8F84D656F3B95D25A83927 + E076488375051498440C825E5178568399D0ED9F3DD7475CE35FB97D2B01B627 + 3EB218154B405E570D160B05AD2D52DF4E1BDA97133039A3427AD714EA0D33EA + 907455A169350E40BA075EB37CBA12B0A9ADEF1E91C9BF251557C1462B03CEAD + E25BED65E8705640E5013F9E5767F553A4014AA9A07700B4E43CA49271482EC4 + E7584172FD76A66E7039A0F2D9F35588CCFB49904BC1F1100F763B77F0390779 + 3C2BA0F11830E274805EF4037F3BD731F5428F757EF91FC7DEAFBB04B3ED6D82 + 12A0A9D1A4996554ED76D0C35901FF74D965B347BA6F725AD8F73D27592BD3B9 + 9DED66DF956B0B9547DB8489FF0450D171712F6750FA106D440F3EC0E9CBC39C + 7CBE266FFF5DDFA6D9CCDE71B98867F02F2C5F50C43024EC6C312646C763F6E3 + 9DD28D5503CADB7F1568160D7086C27A8AD42FB97A51CDB75087DD0EAA373DBE + 6A40C5FEB10F395674CB324B6C731A4010D09B7E0FF56ACFD34462D580C70E85 + 369BCC7874730987CB4AD9D1C980FAFA0BDBD9CF97C7AC0AE03C3423EDDA2D9C + 5414FADCAD089CEDAE20FE58199313B016B6E6803F0192C0D6E065D4DD9D0000 + 000049454E44AE426082} + Name = 'PngImage13' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A0000053A4944415478DA + AD956B50546518C79F73CE2ECB5ED9B3ECB22C48800A02CA45101BBCA005D9D4 + 4C17758C6FD57899FAE0D4871AB3CC6B5FD2748CA91877600AB3A949CA4427E3 + A65C1409729565B92CEEB2807B935DD80BECB2B773F6F4420A5841493D33E7D3 + 7BDEDFEF39FFF799F760F058C5601F2BAB443E079B0C077DF250304086432117 + CDC6AD3EA77FACAC6CAF77EAA5B93BB07F8B3EFD55A37872CC95C7E5725E6671 + 584F4570D871188E7182815068D2E3354E38DC17273C8E2B9DC33A4D735599E7 + B10495E76FC63B6CCED7F8A4708F58267A429620C5C4B1628C601310F006C06E + 1A656CF7ECA151B3ADDB366256EA07BB2EFEF4CD19FBF427FF13FCA4F29214A3 + 88BD9218F2CDB4DCA531B1F1122C40B0C11B02A0C37F74C822502A011F63EA37 + 33BACEBB8377BBD5A75B9B7EF956A3B9E15C50B063C77922AF20622B29979CC8 + 29484D4C7F428647E038DCF703BC70E826681A34F0F9B15720398F0452C0000F + 0FC1B0C640AB9A3ABA55ED8DEFFD5C5D797541C1A7E5D5F2E024766C59CEB29D + F96B5388380E0BC351CFEE2040E187B3024516096C1680044958FE71467D4D1D + AAABAE52B65D6F38BAA0E0E8890B05B21871E5AAC28C94D8043926A601F80480 + 651260DB47B382F47C12BC14008ED6A2793458D4FDE196CBB53D576BBE7B635E + C1543C2B32A8ED4B33932A5617670929161F761EB9396F330F6519EB49A06C56 + 4655D3EA3A5B7162DF0282C3112969A9AFA7E7A794E61467478E072360FD66E5 + CC7A6671E634746E4D0956AD2301BC4EE8ACFDD5AF2C3DF2C9BC824D9B0EB30A + 3624EF589EBDBC3CB7389B1F2004A06A76CEAC2B5BFA66BA9E5B1B3693601DB6 + 30B7EB5B3D155F1C2B5DF00C0E1CAE2C8C8E8B399BFB744EA2302E16333B3020 + D08E680EC09EE3B367B0BD98041A4D2A9A5AF08469E8EAE8635A2E5D19BCF07D + D9A90505EF1CA84814F1F92757ADCFDC96929F8A8F4DA2F9F7014421C1C62DCA + 9958B622C154518866754E80A6454D55559EA96F69AA3E3EAF40B57FCB726D50 + C0D2466DD9268D4F7C376B6396589A28C7EC1E0218344D7DEDB371BD84040CC6 + 80C31F64746A1DEABECE5873F9EBB33A9DFAB3BF15B41F78A690C7659A3D9152 + D044AE8500AE08B1F83266C593692C91428A071836BA0470E0A2B1E4A10747E1 + 38C6BD8C65C014EEBCFE9BA3B1EEC7DAB6EB57CA298A6AFB8BA0637FF18B3C11 + 5D91B03A534684ECA0712583C61D0316271EE408E4DEA495295162B904E39242 + 60B1D998DFE367D04507F6210BD577476DBD73BBF9467B5BED799FC7D38470EE + 47041D1F146D1788C22715B9EB92843C0A5CDA4EE8B708A163221E8C7E4269F3 + B0FB2339FC2269AC224D1EAF904444B2591E97276C1A1A720E1B740383035DB7 + 7A7B54F5341DB88D702E987BD94D752E10D3A58ABC8D4922AE7F1A6E30B2C130 + 26048DD50A23E38EE7CBEB354D19196B93A3158A748C2696D1B43F0AC5002EF7 + 98C334ACEFF47ADD030835821EDF432EF630733E9FFA217ECD3A998817828981 + 2ED0E93130B824A0350D41B7590F6E7FF0B9BA2E67CD833DE8E6017410403CE0 + 4C4D68706A90E0CF3F1CD5C1E2A24801D1B0243707F85C149AF60E188609E877 + 4483D6A8875E8BDEE5F4516F35F6B8CEC1220AEB39FE2CB3247B25F0055C14CB + 2D1834B2C0E010836678007AAD7ABBCB1B3C78AD775CB918F8B4A0FE5409B366 + 752A50860E1832A1CC4705A0351B416DEC7721F8FBD7FAC6CF2C163E2D38B4EF + 6D2647781F12682F82F3A0CF6C821EF3008C7A03AF2E36964704BB77EF629688 + F9407A6CE01CB987E006704FFA76D575BBBFFCAFF06941494949915020688811 + F1E15E4F2BD82CFA5D63DDEE732A80D0FF21F81D69327688E78891A000000000 + 49454E44AE426082} + Name = 'PngImage14' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A000005234944415478DA + AD956B4C53671880DF7329BD9CB6B4A5174A454005112F205E16DCD46C3097ED + C7B2690CFFB665BAE80FB3FDD8E2DC8C739AFD984EE3C8326203D9702E5B069B + 139D8E9B82283299454AB9147B81DA9BB4D00BB4F476DAB3AF80896E02D3ED24 + 5F4E4ECEF99EE7FDDEEF7DBF83C1135D0CF6B9BA4E18F2B0C4896848118B46C4 + 8958CC1767E1CE90373C5E59B92F98FCE8E119D8BF459FFAB6553435EE5BC7E5 + B25F23D9E4F3296C56068663EC6824169B0A04AD931EFFF9C980E7728FC5A0BB + 5657197822414DED4D95C7E57D93120BDE11C9848B6599524C942EC208160191 + 6004DCB631C675CF1D1BB3BBFA5CA376B571B8F7FCAFDF9F764F2F7921F809F5 + 05294613FB2472F1DEFCE225F27495048B102C08C600E2899908490265251262 + 6C4376C6D07377F86E9FF65447DBEF3FE87437BCF30A76EEAC25D695A4BC2E56 + 488E1795E465AD582CC353701CEE870106BD00D1F84C0E481C40CC678087C7C0 + A233C7356D5D7D9A5BAD1F5EAAAFB932AFE0CBAA7A45740A3BBAB468E9DB1B36 + E612196C12C311D11F05E81E07F044101F9B192C12408224647882D15ED5C69A + EAEBD49DD75B8ECC2B3872FC5C894C2EAA59B5A520373D53818950C41401E098 + 0218F2CD940B8F35B38A200D80A37769BC3838B44389F68B8DFD571A7EDC33A7 + 20999EE505F48E25ABB3ABD796AD11D024056EEFC2BBC6E502D02E27A369E8F0 + 9DA93EBE7F1EC1E194DCFCBCB7566CC8AD282A2BE44C445360EF6737E704EB5A + 7470E9B73D4071D043D00B3D8D7F84D5159F7E31A760EBD6C364C973393B9715 + 2EAB2A2E2BA422041F4AB6AAE78D3E295009019C1607D3DDDC11A8FEFA68C5BC + 0B3E78B8664B5A86FC4CF10B4559828C74ECBE77E1B6C9498D436FD720D37EE1 + F2F0B99F2A4FCE3BE3FD83D559428A3AB1EAD9D5DB7337E4E1E353A8FE4300A9 + 6C00394A059B98ED83590A8DEE4EEF24E8DAB5745DCDE9E6F6B6FA63730A3407 + B62DD347F9A43E75DB76A92AEB83359BD788A4590ACC1D208041D5244896650A + 2A4FD4033896DC7C063CE12863D01A50F44DD6868BDF9D3118B45F3D5670EBE0 + 8B5B785CE65A8023051D67234470658CA464CCF267F249A1528A4718549B0C0E + 5CB4021E1A3824C03311641C265BA2E7FA9F9ED6A65F1A3BAF5FAEA269BAF31F + 82AE0365AFF284F1EACCB5AB6544CC0D3A5F0EE8FC727078F1289BAF0866AFCC + 4D15292418572C0092C5C2C28130830E3A708F38E8C13B5AE79DEE6B376E7536 + D68602813684F33F22E8FAB874075F9838A12CDE942DE0D1E0D3F7C09043005D + 932AB08609B52BC01AE2B0A95269BA325FA1524A52382C32E00B246C23235E8B + D9601A36F5DE1EE8D734C7E3916E8443ADF850DB2423E78BE215CA759BB385DC + F034DC6C6581795C003AA71346273CAF5435EBDA0A0A36E6A429952BB038B134 + 1E0FA7A23480CF3FEEB1598C3DC1A0DF8450A368841E70B10739A728FA67D5FA + 4D32212F0693A65E30183130FB24A0B78D409FDD08FE70F4E5A65E6FC3EC1CB4 + C5903C2488590E3A57219A2C24F8FB0F4773A8AC94C3275A1615170185DADCAF + BF03660B01439E34D05B8D30E030FABC21FADDD67EDFD9059BE03117D67FEC25 + 6651E14AA0F85C9496DB306C25C1EC1181CE628201A7D1ED0B460F5D1D98503F + 0D7C5AD07CB29C59BF360F6873178CD850CEC7F8A0B75B416B1DF221F8475707 + 274E3F2D7C5AF0C9FEF79822C17DC88C07119C0783761BF4DB4D30168CBCF1B4 + 697944B07BF72E6691880271C005DED17B086E06FF546857539FFF9BFF0A9F16 + 949797970AF8FC16B990827BFD1DE07218778DF7F9CF6A0062FF87E02F9F6855 + 88E7298D620000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A000005A34944415478DA + 8D960B50546514C7CFBDFB625958DC455049C8074A3C44B490C67C8C5A098A8E + 8E61A0E68C363A4C884C5A3E7240D1F1C13496A58E634FCD0AABC9416DB29C18 + D9626C542052234904158170A10576F7DEBBDF7D75BEBB0B3E82F49BF9CF7767 + F7DCFFEF7CCF731918B8E950C1283B6AB8D96C8C62F5AC4994149EF0A4197F6B + 4575A13894D29F81AAAAC00C601EA6D3416A5090F9F9509B65AA2D3C74C490E8 + C121C19620D6E316E4F616678FCBD973C3E5723B445E2CC7F81A94F7710034EB + B17ABD7E516C42744E424AECA8F8F1234D23C63CC10C8D8900539001BC5E1E5A + 6EFD0DF57537D53F6A1BF9FADAC66B6D8D1DC7144529C3776F51DF8100D43CCD + 1E11B626754A52C69CACA9831252464358B815581DA305CB8A028AAA804F26E0 + 1638686DBBAB5EB9F417549EAA71D6573595096E72103DAEF442EE07B0A8F1B6 + 48EB96CC97A6A72F58362B3866F43046A763FBD2A1C6C5F90ED8F8EEB3C0893C + 78509C28809BF74243FD6DF5E7D2AA9ECB3F5DFF9678C91E0C6FF0FBDF034418 + 0CBA4DF397CE5CBD7CCD7C4B544C24A36391C930BDB940D19A735AE0EB7B9F06 + 0FE1347935103EFB38B8D3D0AE3A3EAD72D59737BD8361FB513DBD0093C1C02E + 9B38257157DE9625914F258F445F06588645E1D46048515E399C2E3D08F372F2 + 20B7244933778B5EF05210422888230234D5DC81F3876B9B3AEA5DEBD1F73402 + 240A181E3ED476287BD5EC3959AFA6B366B34903E8581DF66C9F396D14B0724F + 3CB87D1E70138F96B936020471124E57B7176A8F5F93AE7F7FFB33C9236D4440 + 07CE33A4C7A5C41ECDDF9A13999C1AA7654DB3A7806DF9157DE6BD80FE5AD4AA + 0EE071148244A0F9421B5C3DD2D0E469E65620C0C1982C86E21973D336BF5698 + 6D1844774C20FB9D05950F98D31D24490A88921C90FF39B7E02DB0AF6C418080 + 001F74B5F640DD478DA2EBF79E4259944B98109BE5544E6E46E6E2D5E98CDEA0 + 031617F7ED75171ECB9C2A7F7D21985FB901BCE407705E011A4BEFA8CE739D47 + 245E59C9D822C2AAF28AB3274E9FFB0C43E77EDF869AC736F71109DED85C0CCC + 92BAC0088876465ACF38D5B613CE5F658FFC1C631F32A8A660D7D209A93393B4 + 1D7968F3953E407FA6D243CF9B0A77009F558D009F66EE9345E83CD705EDDF74 + D6CA6E790263B5592A96AD9B37EDC5ECC98C04321045842FB7DE8413C7DE7FA4 + 39ED0B8B77C13F0BCE6BD3A3017C22749C76A9DD673DD58AA0A432C1A1410766 + 2C9A949BB576B60E8218201844213FEC76C1E71FEEFD5F73AAED3B4BA0655E05 + F81040307BA18B40676997CAFF269C54457521C31AD8E58993461F78796346A8 + 2DC61A18A61F72699F0A1FECDFDD6758F06651BFDBB431E34704F8DFE11A04E8 + FECACD49B7E5125556B7D383161F1963FB62F6EA2929492FC4323E55BC079125 + 683C6C85F7DEDEAE01E8822AD957B5E9E051DAB468BDDF5CC445F73838953B2B + FCA276AB5BF01C545240A8C1ACDB903C2B6EFDF455A966A3DD0082ECD3168B42 + 44EC5D47A361CF8E426D41DD8B2EF6ED169A756FE634195F1B016F19D72DD5C9 + 5B41828F11E0E9BDECE22DB6A092B4A5E3D3C7A63FA9978D0AC35388F6B27F67 + E8BF4ED602DB321D81D1899A4445F2F76E51E52A0442CAC5E340A010439BEFBF + 4D8DA8CCC1636D45E316C4260E993458279914C6171809096CBFF09393E166C6 + 59CDD01730A72324682E54119138C845F52E6C432F074A7AB8E0846255586C1F + 655D1B3D6D5842449A5DCFD870573DB026FE7511E994507311FF6B2720541322 + 568BD56A3BD0ABFA3B943050C9B4A266996C8615F6C4B099D6849060D3082303 + 363CD1264583116AEA45E05DEC9B7C2AA9177BA4EBF2192CFD9FE0BB9528FE51 + 45DF801AC31AD9857AAB3ED318AE8F3344E843749178EF5A8021DDA24ADA4549 + 724A3DB24BF95375AB65B8A02703F5587A54D1EF6DF477FAC91285953A99D1C3 + 38303276BC074D8A0CBC4A54271EFACBA8AB18D30EFE4F97FF340AF8172272E4 + FE66E507F40000000049454E44AE426082} + Name = 'PngImage16' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A000005A14944415478DA + 8D960B50546514C7CFBD771FC0C2E22E026A8A2F140145B490C65047AC0445D3 + F111A463A38DE608CA949A1A83864C2AD5E8543A4D33659AD360E3E8A036D958 + 069B943D80C8576E12A8BCC28559D8C7DDBBDF7D75BECB2EBE60F49BF9CFBD77 + F7DCFFEF7CE77B5D06066E1C2A0C65450D0F0D350C6375AC5194141FF19166FC + AD0DD58DE2514A7F06AAAA0233807924C7415A4848E8F31116D30C4B54C4A8D8 + 1183C3C34C21ACC72DC81DAD0E97D3E1FAD7E974DB449F7801E3EB50DE2701D0 + ACC7EB74BA25F14923F29252E3C7244E1E6D1C35EE2966485C341843F4E0F5FA + A0F5F67F60BF7E4BBD56DFE8B3D737DE686FEC3CA6284A05BE7B9BFA0E04A0E6 + E9D6E8C882B48C89D9F396CD1894943A1622A3CCC0728C162C2B0A28AA027E99 + 805BE0A1ADFDAE7AE58F7FA0FA4C9DC35ED35421B8C921F4B81284DC0F605193 + 2D31E6A29CA5B3B216AD9C1316377628C3716C5F3AD4B864A30DB61D781678D1 + 071E142F0AE0F679A1C17E47FDA9BCC675F9879B278997ECC3F0865EFF7B8068 + BD9EDBBE7045E6BA55050B4DC3E262188E4526C30473D12EBB0A2AB5E0B57B13 + C14378F06A201E3C7E1E5A1A3A54DB17354EFB85A6FD18F231CA150418F57A76 + E5D48CE43DF945AFC44C48198DBE0CB00C8BC2D260888A5192224169810DCE96 + 1F820579F9F0D2CE58F02284F68482782240535D0BFCF2697D53A7DDB9197DCF + 2240A280E151432C9FE4AE9D3B6FD96B596C68A85103702C87572C11CB8084CF + 7E4584F736546900DA2824638BB1B70708E2252C578F17EA8FDF906E7E7BE74B + C9236D434027D619B21252E38F6EDC9517939296A0654DB32F2DBCD8EFFCA500 + 3AD892A4C0D2570B21219F0737027CD80B4122D0FC5B3B5C3DD2D0E469E65723 + C0C6184DFA92D9F3D3776C28CED50FA2332690FDBB85D57DD9DEDF82E6A2246B + 5AF5FA56B0AE69458080003F74B7B9E0FA678DA2F32F57B12CCA654CB8C57426 + 6F7D76CEF275598C4ECF01CBB25A0FCADEB8F408E061733170BFBEF06D80BC6B + 1A80F70AD058DEA23A2ABB8E483E650D63898EACC92FC99D3A6BFE338C36B808 + A0A37F606BED038081CCA9FC44822D3B4AA07BF1AFDA1A693BE750DB4F392EC9 + 1EF939C61A3BA8AE70CF8A29699913B5A9884B09449C31878BEC7D80FE4CA587 + EEB7179742FB822A0488D055D90D1D27BAEA65B73C85315B4C552BDF5C30F3C5 + DCE98C0432109C2DA22CC189DD2D1AE049CDDB722AB5ECFD7E113ACF3AD59EF3 + 9E5A4550D298B0889083B3974C5BBF6CD35C0E421820184421DFED75C2A9631F + 3D91792BCD1CEB4F307BA19B405779B7EAFB5338AD8AEA6286D5B3AB92A78D3D + F8F2B6EC084B9CB9370BD4CFFB49BFD3F4C3F7773F98399AD3C1F54BBD89F10D + 02F47CEDE6A53B72992AABBBE9424B8C89B37C35775D46EAC417E219BF2AF641 + 08968ABE4402CF3D4747C2077B77DDCB9C9605CD8580B98883EDB1F12A7F5EB8 + A8F6A8453859AA2920421FCABD95322761F3ACB569A106AB1E04D9AF0D163515 + E5205004B97C02EC2B2DD6CC5B727ED4B20E664E93F1B713F056F03DD27519B3 + 80CF11E0096E7689264B4859FA8AC959E3B346EA6483C2F8E460B77BCD697DC3 + 4E3EAD05DFCAFE5E7BA6A2334EBBBA4595AF1208B9201E0702C518D67CFF6E6A + 40E50C1E6FD93969517C72ECB4C19C6454187FA02724D083A8D3D3D1FCBC66E8 + 0F98D31E1234176A88486CE477F52EBC835E3694F4F0811381A7C272EB18F3A6 + 1133872645A75B758C0567D50363D23B2E222D093517F1BF0E02422D2162AD58 + AB7600DDAABF4109031D9966D41CA345BFDA9A1C99694E0A0F338E323060C195 + 6C543418A1A65E04DEC56B935F2576D125DD94CFE1D17F18DFAD46F91E77E8EB + 51E35803BB5867D6E518A27409FA685D381783FBAE0918D223AAA443942487E4 + 929DCADFAA5BADC0013D1D388FA5C71DFAC1467FA79F2CC3F0A44E617430090C + 8C15B729A322834F25AA0317FD65D4558CE980DE4F97471A05FC0F622CD6FE88 + 2F15D20000000049454E44AE426082} + Name = 'PngImage15' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002814944415478DA + 63FCFFFF3F032D0123C8822F5C7FFED767DC625876E301458645692830B0B2FF + 67E8ECD06184391CCC282EBAF6DFC7478B21AA671BC3F36D5E040DFAF3E71FC3 + EFBF7F19FEFDFB0F66FF01B275A20E32AC28E766F0F2F26250538B63387F7E3A + 235E0B3AD73F25CAD571D6BC60DA28E108C3A783A160365116E07339C4D540FC + 07C1364B3EC6D0E0AFCDF0EBD72F8679F3FA48B7009FE1206C957682A1CA5395 + E1E7AFDF0C4B974CA65E10051AB28169FBACD30CC5CE0A401FFC6658BD6A06F1 + 3E20E4F2DF50BE73DE59862C2B09A0057F18B66C9E4F9C05C41A0E4A45EE8517 + 18524C44C03ED8B573097E0B40C9AF7BE333A282C8550D92DEBD4B2F31C4E9F1 + 03E3E017C3C1FDAB705BF0748B2786EB103EC04CFF3039FF8A2B0CE11A9C601F + 1C3FBA1EB7050F37BAE3351C3DB8FE41732CC882402516B005674F6FC16E0138 + BB032D2107C00C07E583CB1777E1B6E02FD07520853F7FFE82D0504DE86C506A + 8188C1F81039909A5BD7F763B7006678754D0159BE5056B303EB7FFCE038A605 + 6E6EC05CF813E292D6B60A9002AC86FCFEF593E1F7CF9F0CBF8018C4CE2E3A0A + 16BF7DF30083AC822558FFCB6767302DB0B757807BB3BBA70E6C0137373758B3 + 868605C3D9B37B310CFFF3FB17437EF969B805E252266033DEBFB9886981A5A5 + 343C0C274D6A065B2025A5C42029A9C8A0AB6BCD307B563586E1BF81EA4B6A2F + C22D1014D107B3B15A606C2C0A8DC4DF0C336674802D303676061BAEA666C450 + 90EB8461F81F20AE68BE4E9C053ABA02F0208216B70C09097560C385852519C2 + 8395300C07D1B59D77095BC0C8C8C8505478F5BF82222B72718B35CC910DFF07 + CC78F53D0F88B300040C0C32A8D202B87061066A9D4C4B40730B0038C31BFE85 + 5838D40000000049454E44AE426082} + Name = 'PngImage17' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000026D4944415478DA + B5966D48535118C7FF138A455F84588C0A7A27AA1163CDB69168929851CB5806 + 81D5878A7C29412428484264A85006814342E805112DE8436F94F43E74393775 + ABC1552C87B5EA6286B7B01AB4BBD3CE8D0DC57976B7D9038773B8F79CDFEF9C + F33C17AE821082FF198AE982F607CE946C4DCD3731D8D5A2A063FFDA73E4C9FB + 469C8CB0E30A4AF61A928247D660F9D225A8BE7019366F0B0CD595C8186B43AB + 4D9024F322D06E5C8521F75D2CAB2A85E94026E010C00533D1CD09E99D4014C3 + E87CE482F2A717D93B8A305AA381A97F4282D3484B40E1A248F0BAE33486825A + 188D464C0A5FF1A3AA002A9EC0C7837D457957C7124A6A958DD896AF4146C08D + 1B1E23D46A35789E87D56A452010483EC9244C20465A28B27B6767650CFEE5D7 + 38BE8F7F46AF5026C1559BCDB1AA922D48040F0A1E145B57E06C7D2BAEB5DF4B + 4E20176E7778F0F0A54B9E205E0EA6DF793C38DDC463BB5BFE0992D97974DED3 + 9E01798254E0B4745FF47A120BA2354EFB70E47D435D09FE902294177630E1B4 + D95D6FD88243BBB324F8AEEB01E95959A8166F3F4E4137F509CEC515B0AC3922 + C1D7D574CFC8CF95DC050885C370F4FBD88283057A69277432ED2FD51FC5999C + 85F03FE7E00F2A71E7C322D435DF8A9D303A2F3A767939B6C0B253175BD4D556 + 0197E3154EE95663D0FF1B8E491EE50D7D73C2693FE01B660BF6E569638B8E9F + 3886D1110E2B5504872D7AE8CD179970DABCDC085BB027678B34B1F8F604BED9 + CC385FBA1586FD4D33123F179C26DC37FC8E2D28DCAE99B5482E9C464241BE69 + 53CA705982DCAC0DFFEA5F24B36A9C7E132CB82C41B66E3DEE3FEB433AC114D0 + 3F84F988A8E02F75743575B8E251160000000049454E44AE426082} + Name = 'PngImage18' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300004E2000004E2001167D99DE000004124944415478DA + ED955F4C5B551CC77FF7DEFE61D0C204D7758139C15684752C1A565A47D7A983 + 1664449D75337301A7D68D8CBD69F4C11463627858427C30DD8B3A0C8B0FBA10 + 71B8F247470706A6996E93617173C060A56D645DD7526EDBDB7BBCE75E6F2D5A + 46E2E29BBFE4E49ED3F33DDFCFEFFCEE39B7044208FECB20FE07AC0A584DE070 + 38C889EB011345C1101EC798786D77D747DF72DDE46A6B1B0F1E54DE1560B7DB + A57136DB4033B17373FEB9BF262872978F898D5C73B9622B257EB4ED83B1C0B4 + 47BF1280B0B6B6CAD4892C3D4D477873868DD76C543D90A028C9101E47A34BC6 + 1FDD83639916DB6C2D0A2A0785B12E1380686A72C8C91CBA72297A67188B9289 + 64C3E8E0D7BD78D2F4F4B3FB11CB7431887D6ECCD5DB9D09A0B75A7365843494 + E91D70E64D9C790167BEC49B2340F5DF9D397D46D41A6BEA9EA024926F922C6B + 1DEDEBEDCB08D07380827F02083367AE55AAB64522425908966818EEEBE94D5F + BCD56C5EAB9428F2C38CE4D625F797B733012A6A5ECAC9958422CB00369B4D26 + 55AE33B02C72AF64FEA75E3CD724D7D88C6F903B79DBCF9FD7138474940798CD + 6689BAB8CC4800C1671EA7A36F2A08E4CECB96215A921752057D373ADDEE789A + 21A1D168642A5561194B4AF3280449890480610072D7150402B3D7A62E9494B0 + D5119AC100E285A6D71F27097224533233F3334E85E2FEAF064E7DDA2F663F57 + 21DC01DB867AE7A60D9B0EA7EBF3E6273EFB708DFF45DF758F90C9AB47DE30E1 + 9AE3C191B60EB82F0B204803F8170166C3003FCF0661F2633B042309CB956117 + BE60E83897EC6B4E07CC3BDF85503F9DD2FB16A2606F7F14C8DDCDFCDCE9CB1C + 605FF361249A57AA01BC11A189001C18E27ABB06D6CA91B574F3634959B66260 + E709278890E91E9AD737BE550E64FD81947957DD6E200A353A64AA36C13BED1D + B086ABE312B37C0738A83B32686FA900AC1303EB87D5592988BAA41408CBBE94 + F97B1A9D50226EA272E78E277FC03B102314135A20BA1C50AC2DE6C745EB8B40 + D48F3F9805AF580BF9BEDF7B93374FF4B3BC9E8E45B711566BABBCD4A81D2CB6 + D8AB372A05C3585200E02736BF18F2C36F278F7AC747CFD9755BB630EA22ADCB + 70A803B05E1EFE1D2C6D55BC398EEE636C4A3FF4D3F70FF1C7B4EE99BD0F8763 + D1C9E71D9F839CE2DE605096DA0D16E3FADF0E069F5A5CB839525E5E0E1ACD23 + 86ECFCF56EA3FD18B4BCBF19FC37A6F9CCF14E30A82AAA033A112F5B98F9D593 + BA6886DA5A4DD5F6864F2E8C0D544F5D9D4A01B4BA32EFA4E76AF3BCE762FA27 + 9AB4ECDDBFE340E897B37B923EE81CF0420F57B646EE0E8990A2CBC2255EF5FF + 60A548580BF7708F2FB0399344CD87003AF1EFDC1146E9907B01A0D1F1004CCC + 254E70E62FA7CFA543FE3560726B3E3A7BE916EE2A38C0E2DFE731A4A1E21E4A + 745CF86CE838F32B77D3FC01CF05F8A9B438C37F0000000049454E44AE426082} + Name = 'PngImage19' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001B74944415478DA + B5943D2C044114C7DF6A5CA150894204052AD14B7C14D7701D9D44EB4A854434 + BE3A89E28A0BD128080DA7388ABB444E88904B705710111FA5467D91DB9D9D31 + 6F6677CFB9B998DD75AFD8F9DCFF6FDEBCFDAFC118834686810063BB3CC9FB47 + 8AF52988475241C585B6036089C1DA0D7345FE88478C7F030841FF5137CB0A60 + F5395C2156FA95597A80D3F377161BEBF953C7223694BE4C20361563D324109B + 598442762B3800D75110C54DCB167D14C638CEDEC0CE7E3A3800D76C14E4E284 + C81641160761A4CFF2C100388745213617B628942DC2019801952D9180ECE55D + 30804D2950CAE0F0D586E98BDAFA27064A106D3321775DD4074C8C763B93F2E4 + 16BF92965D06F5FC5118FE84ABDB077DC0F88804C8821271E7AD074D10C61F6C + B639E501A2439D62567E2D4464D09EFC08A4EC65B0DC6754D520B997A9DAD0D5 + D10B61FC719FD9AC0096D6376A5E5C5B988730FEF00086A1FE9F9DE4DE42F9C3 + 37C0AF3F7C035C7FE049F1C41240C518A1652703D71F5A00953F4C47D86BC555 + 71805303D71F5A00953F4C2703B7B5BCB104E48B4FFA00953F7E9E5C05283EBE + F8ABC16F7FE8843640E50FDDF0008D8C6F397A5EEFE9EAF0950000000049454E + 44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000003034944415478DA + ADD46F4813611C07F0EF392446538B289908A6537314FE4926362B933433536C + 1619F52202A1DEF8C250DF0596BD890489CC28EA456064E6D49588A583569BF8 + 27752ACE7F399550D3B09C9BD23677DD5DDD799BCBCCF983C1EE9EBBEFE7F9F1 + DCF31035EFF424D6A9EC9428021E1441038AE448B783CAE65E94DC7D88EEA68A + 4D23FF040E458720FD52E15F11694E9DD9F0224BF45F80328480628CE43A60CB + 15397051B564B5DA85C3D50A62C380512E86509E0E9DF2094E196CB0DAECD46F + 05272E1438017478464AB4B04AD58E31E5D98D016C388C6AE65AD76D4442BB09 + D58D5A3CAD5471001B1E112AC6B36AAD616CE29B3F4992361F91B0746864BADE + DA9E3BBC06700D678B46A68A1B39801FCEAF51E31C6A1A3E59C627E7066DB695 + F3B68EDCCF1C107323D56D381F2909BF06EBAE93665954B0282941CA8DD9571C + 004960D1628379C98EAA5A5D7DBF61E2384922103D57179C3B100BDD86F33B08 + CAA8215393A48E84B8302F7ABCB85485A3F15248820360595E81D962EFB9FFA8 + 76861A7A4301E50C9091B89F59C8D9E42027840E0F69F8828F9D7D4E6B4023FB + C2F62C9F498B1516DDAAC64E3FD1A240E0253A228F2604DEDBF0AA565D643299 + 6514708E0152E511DCD7B29419CE206CF84FEA7E87DEE004B088404058A6BFFE + D8BEDC7A85F0963D9644848B151249C49DE1D1C9DB0303C3E91410C30049B250 + 269C45F4C77673E1D4770EBD618403F8474BFEBD51CCCC7EC7F31219D77561B9 + 11FE01C1953A5D6B3605089917E22383A06C6AC57AC507F8FB666FA612E32A05 + 777DBD4C8BD71FE6313236050A209817F8BB75BD7207B856C5CB0E1494F5530B + 6EFD0D6C2899576E81852EC0EF201C0E1275EA3EDC2C7F0BFDB80F62FCF5F01C + A0C307F3A0516B1197BF7AB49CCE6B8275AE790B80B6C380AF96F93BD402ECC8 + 3131487D731BB36E9E017F66CF029A3A20F8F23CD341E3FBCE2D0078B3678BEE + C2913683165DB78780CBECD9A2BBF0CD5ADDFD9B02E8A3C5BB2B714D381FE90D + 6CF4A003991D9A07B1EB3EE711401F2D952ACD3F9FDD34B0D19D4FD72F7A80FE + E871245F980000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end> + Left = 523 + Top = 0 + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage [9] + OnSavePlacement = JvFormStorageSavePlacement + OnRestorePlacement = JvFormStorageRestorePlacement + Left = 528 + Top = 32 + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [10] + Left = 560 + Top = 32 + end + inherited StatusBarImages: TPngImageList + Left = 120 + Top = 112 + end + object dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList + Left = 48 + Top = 144 + object dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel + GroupOptions.CaptionOptions.Font.Charset = DEFAULT_CHARSET + GroupOptions.CaptionOptions.Font.Color = clWindowText + GroupOptions.CaptionOptions.Font.Height = -11 + GroupOptions.CaptionOptions.Font.Name = 'Tahoma' + GroupOptions.CaptionOptions.Font.Style = [fsBold] + GroupOptions.CaptionOptions.TextColor = clHighlight + GroupOptions.CaptionOptions.UseDefaultFont = False + end + end +end diff --git a/Source/Modulos/Remesas de proveedor/Views/uEditorRemesaProveedor.pas b/Source/Modulos/Remesas de proveedor/Views/uEditorRemesaProveedor.pas new file mode 100644 index 00000000..0d812638 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Views/uEditorRemesaProveedor.pas @@ -0,0 +1,342 @@ +unit uEditorRemesaProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorDBItem, ToolWin, ComCtrls, JvExControls, JvComponent, + uBizRemesasProveedor, JvNavigationPane, ActnList, + uEditorBase, StdActns, TB2Dock, TB2Toolbar, TBX, ImgList, PngImageList, + TB2Item, uEditorItem, DB, uDADataTable, uEditorDBBase, JvFormAutoSize, + uDAScriptingProvider, uDACDSDataTable, StdCtrls, pngimage, ExtCtrls, + TBXDkPanels, JvButton, AppEvnts, uCustomView, uViewBase, + JvAppStorage, JvAppRegistryStorage, JvFormPlacement, JvComponentBase, + cxCustomData, + uViewRemesasProveedor, uIEditorRemesaProveedor, uRemesasProveedorController, JvExComCtrls, + JvStatusBar, dxLayoutLookAndFeels, uViewGridBase, uViewGrid, + uViewRecibosRemesaProveedor, uViewTotales, uViewDetallesGenerico, + uViewRemesaProveedor; + +type + TfEditorRemesaProveedor = class(TfEditorDBItem, IEditorRemesaProveedor) + dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList; + dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel; + frViewTotales1: TfrViewTotales; + actVolcarDisco: TAction; + TBXSubmenuItem2: TTBXSubmenuItem; + TBXItem7: TTBXItem; + TBXItem33: TTBXItem; + TBXSeparatorItem6: TTBXSeparatorItem; + frViewRecibosRemesaProveedor1: TfrViewRecibosRemesaProveedor; + frViewRemesaProveedor1: TfrViewRemesaProveedor; + procedure FormShow(Sender: TObject); + procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction); + + procedure actAnadirRecibosExecute(Sender: TObject); + procedure actEliminarReciboExecute(Sender: TObject); + procedure JvFormStorageRestorePlacement(Sender: TObject); + procedure JvFormStorageSavePlacement(Sender: TObject); + procedure frViewRecibosRemesaProveedor1cxGridViewDataControllerSummaryAfterSummary( + ASender: TcxDataSummary); + procedure actVolcarDiscoUpdate(Sender: TObject); + procedure actVolcarDiscoExecute(Sender: TObject); + private + procedure OnRecibosChanged(Sender: TObject); + protected + FController : IRemesasProveedorController; + FRemesaProveedor: IBizRemesaProveedor; + FViewRemesaProveedor : IViewRemesaProveedor; + + function GetController : IRemesasProveedorController; + procedure SetController (const Value : IRemesasProveedorController); virtual; + function GetRemesaProveedor: IBizRemesaProveedor; virtual; + procedure SetRemesaProveedor(const Value: IBizRemesaProveedor); virtual; + function GetViewRemesaProveedor: IViewRemesaProveedor; + procedure SetViewRemesaProveedor(const Value: IViewRemesaProveedor); + property ViewRemesaProveedor: IViewRemesaProveedor read GetViewRemesaProveedor write SetViewRemesaProveedor; + + procedure GuardarInterno; override; + procedure EliminarInterno; override; + procedure PrevisualizarInterno; override; + procedure ImprimirInterno; override; + procedure CerrarInterno; override; + + procedure PonerTitulos(const ATitulo: string = ''); override; + function GetModified: Boolean; override; + + public + property RemesaProveedor: IBizRemesaProveedor read GetRemesaProveedor write SetRemesaProveedor; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +{$R *.dfm} + +uses + uDataTableUtils, cxControls, uDataModuleUsuarios, uDialogUtils, uCustomEditor, + uDataModuleRemesasProveedor, uDataModuleBase, uBizFamilias, uFamiliasController; +// uBancaElectronicaController; + +{ +******************************* TfEditorRemesaProveedor ******************************* +} +function TfEditorRemesaProveedor.GetRemesaProveedor: IBizRemesaProveedor; +begin + Result := FRemesaProveedor; +end; + +function TfEditorRemesaProveedor.GetController: IRemesasProveedorController; +begin + Result := FController; +end; + +function TfEditorRemesaProveedor.GetModified: Boolean; +var + bCambiado : Boolean; +begin + bCambiado := inherited GetModified; + //Si no hay cambios miramos que no los halla en la lista de recibos + if not bCambiado then + bCambiado := frViewRecibosRemesaProveedor1.Modified; + Result := bCambiado; +end; + +function TfEditorRemesaProveedor.GetViewRemesaProveedor: IViewRemesaProveedor; +begin + Result := FViewRemesaProveedor; +end; + +procedure TfEditorRemesaProveedor.GuardarInterno; +var + bEsNuevo : Boolean; +begin + inherited; + bEsNuevo := False; + + ShowHourglassCursor; + frViewRecibosRemesaProveedor1.OnViewModified := Nil; + //frViewDetallesFacturaProveedor1.SaveGridStatus; // Para guardar estado del grid +// frViewDetallesFacturaProveedor1.BeginUpdate; // Para que no se mueva el foco + try + bEsNuevo := FRemesaProveedor.EsNuevo; + FController.Guardar(FRemesaProveedor); + + finally +// frViewDetallesFacturaProveedor1.EndUpdate; +// frViewDetallesFacturaProveedor1.RestoreGridStatus; + HideHourglassCursor; + end; + + if bEsNuevo then + ShowInfoMessage('La remesa de pago se ha dado de alta con el código ' + FRemesaProveedor.REFERENCIA); + Modified := False; + frViewRecibosRemesaProveedor1.Modified := False; + frViewRecibosRemesaProveedor1.OnViewModified := OnRecibosChanged; +end; + +procedure TfEditorRemesaProveedor.ImprimirInterno; +begin + inherited; + FController.Print(FRemesaProveedor); +end; + +procedure TfEditorRemesaProveedor.JvFormStorageRestorePlacement(Sender: TObject); +begin + inherited; + //frViewRecibosRemesaProveedor1.RestoreFromRegistry(JvAppRegistryStorage.Root); +end; + +procedure TfEditorRemesaProveedor.JvFormStorageSavePlacement(Sender: TObject); +begin + inherited; + //frViewRecibosRemesaProveedor1.StoreToRegistry(JvAppRegistryStorage.Root); +end; + +procedure TfEditorRemesaProveedor.OnRecibosChanged(Sender: TObject); +begin + ActualizarEstadoEditor; +end; + +procedure TfEditorRemesaProveedor.PonerTitulos(const ATitulo: string); +var + FTitulo : String; +begin + FTitulo := ATitulo; + if (FTitulo = '') and Assigned(RemesaProveedor) then + begin + if RemesaProveedor.EsNuevo then + FTitulo := 'Nueva remesa de pago' + else + FTitulo := 'Remesa de pago'; + end; + + inherited PonerTitulos(FTitulo); + + Self.Caption := FTitulo + ' (' + dmUsuarios.EmpresaActual.NOMBRE + ')'; +end; + +procedure TfEditorRemesaProveedor.PrevisualizarInterno; +begin + inherited; + FController.Preview(FRemesaProveedor); +end; + +procedure TfEditorRemesaProveedor.SetRemesaProveedor(const Value: IBizRemesaProveedor); +begin + FRemesaProveedor := Value; + if Assigned(FRemesaProveedor) then + begin + dsDataTable.DataTable := FRemesaProveedor.DataTable; + frViewRecibosRemesaProveedor1.RemesaProveedor := FRemesaProveedor; + frViewRecibosRemesaProveedor1.OnViewModified := OnRecibosChanged; + end + else + begin + dsDataTable.DataTable := Nil; + frViewRecibosRemesaProveedor1.RemesaProveedor := Nil; + frViewRecibosRemesaProveedor1.OnViewModified := Nil; + end; + + if Assigned(FViewRemesaProveedor) then + FViewRemesaProveedor.RemesaProveedor := FRemesaProveedor; + + frViewTotales1.DADataSource.DataTable := dsDataTable.DataTable; +end; + +procedure TfEditorRemesaProveedor.SetController(const Value: IRemesasProveedorController); +begin + FController := Value; + if Assigned(FController) then + begin + (ViewRemesaProveedor as IViewRemesaProveedor).Controller := (FController as IRemesasProveedorController); + frViewRecibosRemesaProveedor1.Controller := (FController as IRemesasProveedorController); + end; +end; + +procedure TfEditorRemesaProveedor.SetViewRemesaProveedor(const Value: IViewRemesaProveedor); +begin + FViewRemesaProveedor := Value; + + if Assigned(FViewRemesaProveedor) and Assigned(RemesaProveedor) then + begin + FViewRemesaProveedor.RemesaProveedor := RemesaProveedor; + FViewRemesaProveedor.Controller := (FController as IRemesasProveedorController); + end; +end; + +procedure TfEditorRemesaProveedor.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(FViewRemesaProveedor) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(RemesaProveedor) then + raise Exception.Create('No hay ningún almacén asignado'); + + RemesaProveedor.DataTable.Active := True; + + //Falla si lo hacemos por dfm + frViewRecibosRemesaProveedor1.cxGridView.OptionsSelection.MultiSelect := False; +end; + +procedure TfEditorRemesaProveedor.frViewRecibosRemesaProveedor1cxGridViewDataControllerSummaryAfterSummary(ASender: TcxDataSummary); +Var + AImporteTotal: Currency; +begin + inherited; + + if VarIsNull(ASender.FooterSummaryValues[0]) then + AImporteTotal := 0 + else + AImporteTotal := ASender.FooterSummaryValues[0]; + + if Assigned(RemesaProveedor) then + begin + if (RemesaProveedor.IMPORTE_TOTAL <> AImporteTotal) then + begin + if not RemesaProveedor.DataTable.Editing then + begin + RemesaProveedor.Edit; + RemesaProveedor.IMPORTE_TOTAL := AImporteTotal; + RemesaProveedor.Post; + end; + end; + end; +end; + +destructor TfEditorRemesaProveedor.Destroy; +begin + // Utilizar mejor OnClose; + inherited; +end; + +procedure TfEditorRemesaProveedor.actAnadirRecibosExecute(Sender: TObject); +begin + inherited; +// HayCambios := FController.ElegirRecibosProveedor(RemesaProveedor) OR HayCambios; +end; + +procedure TfEditorRemesaProveedor.actEliminarReciboExecute(Sender: TObject); +begin + inherited; +// FController.EliminarReciboProveedor(RemesaProveedor); +// HayCambios := True; +end; + +procedure TfEditorRemesaProveedor.actVolcarDiscoExecute(Sender: TObject); +//var +// ABancaController : IBancaElectronicaController; +begin +{ + inherited; + ABancaController := TBancaElectronicaController.Create; + try + ABancaController.GenerarFicheroNorma19(FRemesaProveedor.ID); + finally + ABancaController := NIL; + end; +} +end; + +procedure TfEditorRemesaProveedor.actVolcarDiscoUpdate(Sender: TObject); +begin +// (Sender as TAction).Enabled := HayDatos and (not FRemesaProveedor.EsNuevo); +end; + +procedure TfEditorRemesaProveedor.CerrarInterno; +begin + frViewRecibosRemesaProveedor1.OnViewModified := Nil; + inherited; +end; + +constructor TfEditorRemesaProveedor.Create(AOwner: TComponent); +begin + inherited; + pgPaginas.ActivePageIndex := 0; + FViewRemesaProveedor := frViewRemesaProveedor1; +end; + +procedure TfEditorRemesaProveedor.CustomEditorClose(Sender: TObject; + var Action: TCloseAction); +begin + inherited; + dsDataTable.DataTable := NIL; + FViewRemesaProveedor := NIL; + FRemesaProveedor := NIL; +end; + +procedure TfEditorRemesaProveedor.EliminarInterno; +begin + if (Application.MessageBox('¿Desea borrar esta remesa de pago?', 'Atención', MB_YESNO) = IDYES) then + begin + inherited; + if not FController.Eliminar(FRemesaProveedor) then + actRefrescar.Execute; + end; +end; + +end. + diff --git a/Source/Modulos/Remesas de cliente/Views/uEditorFacturasClienteReport.dfm b/Source/Modulos/Remesas de proveedor/Views/uEditorRemesaProveedorReport.dfm similarity index 56% rename from Source/Modulos/Remesas de cliente/Views/uEditorFacturasClienteReport.dfm rename to Source/Modulos/Remesas de proveedor/Views/uEditorRemesaProveedorReport.dfm index 4812f26e..49185a3d 100644 --- a/Source/Modulos/Remesas de cliente/Views/uEditorFacturasClienteReport.dfm +++ b/Source/Modulos/Remesas de proveedor/Views/uEditorRemesaProveedorReport.dfm @@ -1,5 +1,5 @@ -inherited fEditorFacturasClientePreview: TfEditorFacturasClientePreview - Caption = 'Previsualizar la factura' +inherited fEditorRemesaProveedorPreview: TfEditorRemesaProveedorPreview + Caption = 'Previsualizar la remesa' PixelsPerInch = 96 TextHeight = 13 inherited frxReport1: TfrxReport diff --git a/Source/Modulos/Remesas de cliente/Views/uEditorFacturasClienteReport.pas b/Source/Modulos/Remesas de proveedor/Views/uEditorRemesaProveedorReport.pas similarity index 70% rename from Source/Modulos/Remesas de cliente/Views/uEditorFacturasClienteReport.pas rename to Source/Modulos/Remesas de proveedor/Views/uEditorRemesaProveedorReport.pas index ab8b2a9f..3be794a9 100644 --- a/Source/Modulos/Remesas de cliente/Views/uEditorFacturasClienteReport.pas +++ b/Source/Modulos/Remesas de proveedor/Views/uEditorRemesaProveedorReport.pas @@ -1,4 +1,4 @@ -unit uEditorFacturasClienteReport; +unit uEditorRemesaProveedorReport; interface @@ -9,20 +9,15 @@ uses frxBarcode, JvAppStorage, JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, - ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uIEditorFacturasClientePreview, + ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uIEditorRemesasProveedorPreview, JvExComCtrls, JvStatusBar; type - TfEditorFacturasClientePreview = class(TfEditorPreview, IEditorFacturasClientePreview) - private - { Private declarations } - public - { Public declarations } + TfEditorRemesaProveedorPreview = class(TfEditorPreview, IEditorRemesasProveedorPreview) end; implementation - {$R *.dfm} end. diff --git a/Source/Modulos/Remesas de proveedor/Views/uEditorRemesasProveedor.dfm b/Source/Modulos/Remesas de proveedor/Views/uEditorRemesasProveedor.dfm new file mode 100644 index 00000000..e82bea3f --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Views/uEditorRemesasProveedor.dfm @@ -0,0 +1,1520 @@ +inherited fEditorRemesasProveedor: TfEditorRemesasProveedor + Left = 489 + Top = 325 + Caption = 'Lista de remesas de pago' + ClientWidth = 820 + ExplicitWidth = 828 + ExplicitHeight = 240 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 820 + Caption = 'Lista de remesas de pago' + ExplicitWidth = 820 + inherited Image1: TImage + Left = 793 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000002744944415478DA63FCFFFF3F + 032D01E3F0B060F9D6D334B3056E41A4B729491AFFFCFDCFF0F7EF3F869FBFFE + 80E93FFFFE8169301B887FFDFECB109E5E876A41E249438206FF05AAFFF5F72F + C3AF3F7FC0F4975FBF207C10065A02932BFAB59C61DED24D9816CC373F8F6291 + F45B6F8626CF660C8BFE010D0361CFD5F60C1F791E800DBF14F0824169A520D8 + 928ABFAB705B00022036B2E11718CF33189F346660B809E4A833309C353FCBA0 + F9438BE117D007415B3C189EB2DF66B811FC1AAC566C3137431DC35AFC3E8019 + CE7C8A89E1AFD93F300D32FC6CDC5906E379408BB419183EEB7C61E0BDC2C3F0 + 5AE50D43F84E5F86BD51C718841771817DD0CEB211BB05E841C3BC1C684124D0 + 82C54C10C39719339C8D02D2B38C193E447C6410D8C2CFF0C2E52543D49E0086 + 0B7F2EC0E3A3977D0B911620FBE02A508203887F30807DF056ED1D83F02D2186 + 27324F18E20E86329CFA79166EC164AEEDF82D40B6E42F50C365964B9038B808 + 94D087C481DC5B79869F3F7E60180E02382D404E4520C58A1FFC186A9C6BC196 + FC03A7F5BF700CE247EF0D841BFE33E50F03E34C46FC16C0003C6D03B1CCB31F + 0C5325B4B1E60BDE877B505C0E03582D40CFA57FA039F3EA444D0609A7200645 + CB1E86FBC74BC06A5EDC0726E7FBF719E6EE7BCE30A7DA09C3E2294F73312D98 + B2780756570A7E3BC7A0F4660ED8307450DD928DD3E273AC89080BBA27CF2758 + 4C9C2B7B88553CA5751FA65AA0E12000B680919191A0E1C75A14FF93124C404B + C3E6EEFBB19A140B4281D42A6CC13467EF77AC96022D6024CA0290E196969AAB + B0C91D3F7E1D6BDC008101D0828BC45A803778402EC5A597681FE00A1E200087 + 355E0B6809686E0100FA3E2AAB1481BE0E0000000049454E44AE426082} + ExplicitLeft = 516 + end + end + inherited TBXDock: TTBXDock + Width = 820 + ExplicitWidth = 820 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 552 + object TBXSeparatorItem17: TTBXSeparatorItem [12] + end + end + inherited tbxFiltro: TTBXToolbar + ExplicitWidth = 260 + inherited tbxEditFiltro: TTBXEditItem + EditOptions = [tboUseEditWhenVertical] + end + inherited TBXItem37: TTBXItem + Visible = False + end + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 820 + object TBXSubmenuItem2: TTBXSubmenuItem [4] + Caption = 'A&cciones' + object TBXItem38: TTBXItem + Action = actVolcarDisco + end + end + end + end + inherited StatusBar: TJvStatusBar + Width = 820 + ExplicitWidth = 820 + end + inherited EditorActionList: TActionList + inherited actNuevo: TAction + ImageIndex = 24 + end + inherited actPrevisualizar: TAction + Visible = True + end + inherited actImprimir: TAction + Visible = True + end + inherited actDuplicar: TAction + Visible = False + end + object actVolcarDisco: TAction + Category = 'Acciones' + Caption = 'Volcar a disco...' + ImageIndex = 25 + OnExecute = actVolcarDiscoExecute + OnUpdate = actVolcarDiscoUpdate + end + end + inherited SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001754944415478DA6364C001D6ECBE900CA4E640B9 + 2921AE0673B1A963C4A739C8598FE1DB8FDF0C33966C67505054C06A08232ECD + 3EF6BA0C250B7F315C7FF88F6179E15F86456BF76135841197CD79737F324C4E + E1008BF345BC63B833959561F13A4C4318D13507BBE833E4CEF9C160ACC1C290 + 60C30296734D5FCD70F2A333564318B1D90CD20C02D72E9C04D33C92A60CAFDF + FF6358B8E71B86218CE87E866986D90E738186A92FC397EF0C0C6B8FA21A0232 + E03FBACD5FBEFF07E30A3F36B801323ABE0C3F7FFF67F8FE938161EFC5EF7043 + C00678586B32F8B7FD61887167836BFEF59B81A12E186180A8BA0F58F3E76FFF + 194EDDFE0136A07DDA1AB001C90FEE3F98131BE4C4A092FD9BA12A8A07AC19E4 + 67582C800CE051F0C1D06C636994020F44902171214E0CCA99BF19E25DB8E09A + 91C301161330CDE040448E46649764D85C473160C6114D0CCD581312B221CEFA + 9C589D8D3521E13204047069C69B99608680002ECD380D4036E4C98B77383583 + 000005100EB8572466A60000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001074944415478DA + 63FCFFFF3F032580912A06303232E2543079D1766F201505C520B02C37CE331A + C400EBC5670054F3960057330631617E0690B2F357EF336CDA7786A1B5289211 + AF01C89A254505183E7FFDC1F0F5DB0F06311101A021F7184E5DBA733927D643 + 0FAB01E89ADF7EF802D6FCF5FB4F866F406CA6AFC21095DBC6B06C7215238601 + C4689EB27807C3B153E7300D2056F38B371F18B62EDA79EDFCF9F9DA700348D4 + CC70E1C2024420022548D68C128D40C906A0E67A5234631860A6A752AF202346 + B466740396C2521AD020B0A49EA622C39C95BB716AC64889C0405C0A541C2501 + 4C2830804F33D6A40C8A09A0A62DF7EEDD03F3AF1FB98D372301A39191E2DC08 + 0029AC32F01825AACD0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001514944415478DA + 635CB5E3DC7F062C20CCC388918108C0083220D4DD104570F5CEF30CEDFDB319 + CEEF9C4ED0109C06D818AB3278C7941134046E40CBAA0760819A3005B80B6000 + 9F21182EF8F1F30F10FF86E05F7F1882926B883300E60264C0C1805D5F69B802 + 238601E836FF04E2CDA7BF339484C9A368EE59F59261D9C1BB0CE7A75933C20D + F0B4D56698B0E5195617601AF09021DA4998C1297307C38D35A18C60031CCDD4 + C036FF84DAFCE7EF3F307DF0FA7FB001112D57C09A57D4E8800D98BBFA346A18 + 58EA2BC235C39C0FC2671EB0A2B8E0DBCF7F0C5F7FFE05E27F60B65DE26C8801 + 7316ADC11A58AEFE69282E4009C8284506F7F4B90C781349F7CA07FF4106A0DB + FCFD171003E980BCF9840D48F5916148EFBB8E2197EC2BCB1059B290B001512E + 92609BC1B602F1EF3FFFC1F437204EAE5A4CD8007F5B71B8E66F480681407AED + 12C20674CCDE884F0903000B1A00979E81F9710000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002574944415478DA + 63FCFFFF3F03258011D9004646468696696B17FFFECAD0DE581A7C0D596155CF + 0AF77F7FFFD975944755A3E8413760EA929DAF393938D62785D8A7C1C48BBB17 + 711BABAB5C7AF9F6FDDFC2446F354206BC75B6D4E35ABCFE90536B49F87190F8 + E4853B2779DA1BE46EDE7FE62ED00015BC06F4CFDBBA24CACF26FAD0A99B5B42 + BDCC7C6BFA563B057B986FFDFDE72FC7D20D072B26D62574E235A0A26DA999B0 + 98E0F2607713F9251B8E85692A4B5698E9AB9AAEDA7EE2DEBB571F3DDAAB226F + E33500044A3B979507B898B6BF78F3FEA3B1B612FF992BF7FF1F3975336E425D + CC52903C4103EAEBEB5998450D8FAA2A889BC94888306CD977664D675964284C + 1D0103EA99F8DDF50C8CD439E3FFFE67CB7DFFE9DB1F7E3E9EC637DF5977DC98 + B3E73C0343E33F9C0670B8AC555292175BC8F6FF9BEEDF6FEF995E7DF8F95941 + 55EDE5AB17AFBEFCFAC7C2F1ECC5FBEF0C4C4C89FF0F47DDC36A8056F2A103FF + DEDEE465FBFFB5F1D577EECB8C8CFFF72AAA6A7CFFF4F842CED54D7907184CE7 + 4631B0B227FC3F1AE38AD5008D981DDFD9BEDE48BABCA1703983DE226E09891F + D754B4756F7DBC7FBAEFF286BCED0C32BD9C0CB222B7FF1F8B93C16A805ED2EE + D74CEFAF445FDC50B48BC172858E34DFFB6582B2DAFB38BEDCFC7166456A0583 + CE0471063EA103FF8FC66A623540C063F55669B6E747AE3DE3E861E5E158A9C8 + FBF1D1FD6F628BF4147977FC7A79D3E3F2736E39060E9E84FF47A202B0C782ED + 627356C6FF935998FEB349737FB9FE95E975F2F32D8DDF98EC9647B1FCFF55F0 + EB1FD31FA08EC2FF87634F6235801C0000382740F0DFD997BD0000000049454E + 44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002854944415478DA + A5935D48536118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304 + 451021A651362821B1ABA49B6EA4460961D88542055D84DD6545415992174994 + 9625CC8F9C329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F + 9FF330CE39FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546 + 031A3D6E5FF329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B8 + 1AD206641414DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA + 9C27A4439F5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E + 9F80C335C05BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8 + E3C8655BD686D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F0 + 3AD1843C15125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD8 + 5A01A8A1DEC5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC37 + 60A7351E3D061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB + 7E5F4CB4822509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF2984932 + 75A60CCA088739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04 + E6035AF142101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148 + D92E7BE794778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED2 + 45A0729AC6A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56 + A08C20ED9476027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301E + AEB507B700334968A6631D019C759C5F627780822413BA194312CDFB41958C13 + 7FDB4052739000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F0058 + 5538F0EAB25B380000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001934944415478DA + 6364C002662430FC47E6672C606064C001C0122726A06AB870818121A1632A98 + 5D169DCD10E58B90B32840358C11A4D920622A5C604145365833482308D4F5E6 + 3134154F62A8EE4805F35B2B66334CDA8B3004C50098E62F2F6E823581347F7F + FB80E1E58DBD0C8BD67D6588F6656258BAF91F7E03AE3D66C009081A800CD61F + B161C0072243F419711AF0F7F777864D275D192282F5B06A5EB1F23C43D7FCD9 + 0CE7774E67C43000A41984B79EF3C36AC08F9F7F18366CB8CC10116EC860E491 + 85EA0298E6BFBFBE33ECB8120E36C071E64DB8E6ED09CA40037E33ECD87E03EC + 02142F206BFEF7FB07C3AE9BF1282E00D90CD20CC6BFFE30EC3B719561CAECE5 + 100374837B503483E8BDF733305C000333DC04198E9EBB893040CBAF1945F3DF + 3FDF190E3C2E041B806EF34F283E73E52EC200758F2A865B3B3A506CB927739E + C1C75383C177F17D0C17745971325CBEF51062004820CF19352F808065E64506 + 172748A0C16CFDF3F71F9806B9E4F683A70803B081E56B2EFEB7B19663D875F4 + 32CEC444D080AED9331808010085EE16005695A1DA0000000049454E44AE4260 + 82} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000002164944415478DA95D35F4853511CC0F1EFD491DD + D9587F2C83AC8C328DFE4949908BC0AC142A147BC8077B88A01EECA5E718F958 + 410486C384B50A1F7A991023CBEC0F594F81E5D4C211E130D7D4DDCDA15B5EEF + DD5DD74B1B8EA9D90FCEC3EFC0EFC3EF9CF33B06FE46CBE3AE042B886B176B0C + 0B73C342A0A9B17AD9E2FB4F5EE0E878C6E79776C37F03AAAAD2DAD1CDDEDD3B + B96EBB9B425604CC17CB8A4AFBD31EEA6BAC0CFF08A4907F02C962598EE374BD + D58F908C2581442241603C8CCBFD89D86C9C9C9C1C0A365A282DDE446FDF37E6 + AB9277B128F02B10C6DDF385CD074B10D6593019211E9CC2EF1DA5A0C0821895 + 68BE6D5F1A6873BEA6D07A0879951945CD626B1E6C372978BD7EBC5F4710D608 + DC6A712C0EC84A9C7B6DDDECAF3B459E315B3B3B685B9835448DCD30F4BE0FC1 + 94CB9D56672670A5E1A47E590F1EBDE374C3091D88CD4120063359902B4719F9 + D88F201835E0612670E97CA5DE41578F870A6B296BD79B096BC0B8B6C4DF3252 + 4024E81960832071B3FD7926D0587B5C7F32DFE8243FC74214EDD906AB4D4C29 + 1011230487BC1419BFB32BE8E06CE7BE4CE0C299637A07B3928CCF37816F4CD4 + F2040943365234823134C8E1FC094A8A8D4C0DF6B2E5EA8774A0BEFAA80E283A + A21012A791E6E6B4618249FF08AFEC97292B2CA7B64221BFAC9C90E74DFA289F + AB3A42FFB07FD90FE5B255A510B754379D062C1CD3E5E240AC931D9537B03537 + 19FE00839434866373C4BA0000000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001724944415478DA6364A0103062135CB1E2C26E20 + E5824F63448401235603809AA381D412374F5506413E2EB0D89FBFFF187EFFF9 + 0BC62F3EFD6728A999C0B0795E15A60150CD1540CD3A7B4FDCC5B0D5D94299E1 + CAD3BF0CDD3D53F280064CC666C06EA066176C36FF05B25F7F6544B11DC50098 + D3C3C3F519D6ECBA8C61BBBDA922C38D17FF41B6C384B6020DF261846AFE0FA4 + AE809C0EB21DDD6610FFCF9F7F0CE91553194CF49518A4558D1836AE59037609 + 23C8E6AB4F2E2C2136DAE4B5AC186E9CD9C570F3C1278801B53D0BFE3715C7E3 + D4F0E5C75F86CFDF8118487FF9F18F61C3BA350C12CA260C3B366F4218408CCD + 17AE3D03D3065A520CEC42AA0C278F1CC4EF02749BBF82F0CFBF0CC7F66E64F8 + C92AC970FDE259DC06A06BAE3DEFC390ABB49EE1FEB5530CCF9F3F6778FA919D + E1F5D3FBD80DC066F3AC743D8680EEB30CAFEE9E61D8BEF72C4CA90CD080A770 + 03A62FDB45542C400D006B062724DFA4366920FD84D86844D68C9212C905001F + 16FA1194E3DBC30000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD2520000015F4944415478DA6364A000FC3060F8CF884D62C5 + 8A0BBB81940BB258E7FC99286A8EBF9CCEC06EE4C5C088457334905AE2E6A9CA + 20C8C70516FBF3F71F8399770E44D3F9FF0C3F0D19219AE76D6364C4A2B902A8 + 5967EF89BB2806B7F54D6738E7C4C1F073793F58B3D1537986F33BA76318B01B + A8D905D9E6DF7FFE82B1437011C3B91DD31818BA8AC07246FB7EA01A00737A78 + B83EC39A5D9731C205E40274003700A8F93F90BA02723AC876649BFF02D920FE + 9F3FFF18D22BA63298E82B3148AB1A316C5CB38661F5B92A064690CD579F5C58 + 4228CAB6EC3E893D166A7B16FC6F2A8EC7A9F1CB8FBF0C9FBFFF65F08E2CC01E + 0B20038849342017608D055C2E80D9FC19487FF9F18F2125B3147B2C6033005D + 73ED791F86E7B334B1C702BA01E89ABF02F1AC743D8680EEB30CAFEE9E61D8BE + F72C4CA9CCE679554FE1064C5FB68B98A0801900D60C6230FA26B54903E92744 + E946B219C661244123560000C9AFE6B31530CB2E0000000049454E44AE426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000016A4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D18616C905E466403A27DCCF16A06AA + 61E89DB290E1FCCEE98C241BF0EFDF3F86E5DB4E33488B093314D5F5810D21DA + 0090E6DF7FFE31ACD97596C1C9429BE1E6BD176043CEED98C688D3804D0F0E30 + F45E6A02B37779EC62E05CC0C6B058EA38D80B3080D30090E6805D4E182E7911 + FC91E1C4E5C70C8F1E3F6298B774137603609AFFA4FC013B1B64738BB13743CD + D9AD0C8FFDDF81C5B6EC3B85DB00A6594C289A91C13DEF3740F1BF0C3B0F9DC5 + 6D0048C1EFDF7F21F49F7F50FA2FC31F181F2877E0E445EC068479988015F02C + E640B1F98EE72BB066CDDD120C676D1E311C3D7B05BB0181CE8660DB049773C3 + FD8DAC3957BB80219A379FE1D4C5EBD80DF0B1D7032B165BCD8B110330CD200B + CE5FBD85DD00776B1DB002E9F502609B13CF8781E50C840DE09A41165CB97907 + BB014EE69A1801060B44986610C06980ADB11AC3A63D2789C994D80D404EA6C4 + 0090010087546EF0ACB0C7920000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001024944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305B3E7F1A2323BA66090111A9272F9F301CD9BE99119701110999 + FF416A0E6FDB843000A4F9CFCF1F52F834C2808DA72FD8DF700348D18C6C08D8 + 004B77AF69F292F299308987CF1F4E979256DEB076DEE45D207E7052AEDBB3A7 + 770390D58000DC0B20FFCC98D0CE70E1053FC3DBBF3F191E7F66603831A310C5 + B6E533A6311C7CC080228F624046C534B82408AC690C856B9611976140970719 + 20ACA0CB30A53E13624068693F5CF2F2E3F70C37E7A5C163019BFCD7AD4D0C2B + 164C07A72146981F999998C17EFCFBEF2FD630C0260F3660C0933200BCB3BCE1 + CDA578040000000049454E44AE426082} + Name = 'PngImage11' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001C04944415478DA + 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440 + 1BA234FDF9FB8FE1F79FBF60EC105CC4806200A3E14C86FFE7D3C13408E0627F + 3C12CF70ECEC0D86AAB659D80D4007FF806AFEFC41D80CC2672FDFC1340019C8 + 7A2C6178F2F22B98ADAE20C0D09869CCE06E29CD2068B788E1D9AE48868BD7EF + 117601C8E673D7DF309846AF6310E66767B8BE3E8441CC6929C3C36D610CD76E + 3FC46DC0CBB7DF19EA679C613870E619C3C3679F197EFCFA0B36106433C8F97F + 80F8D6FD27B8BD1053BD8F61E9B6DB0C0B9B1C181C4C2518E43D5780C54136CB + 7BAD62B8B12E90E1FEE367D85DF0F75C1A836FDE0E866D471E315C5A15CCF0F1 + CB4F06DBA42D6003EE6E0A6650F65BCB7061B90FC3F357AFB11BF0F3540AC3B1 + 8B2F18A2ABF6313C7BFD8DC1C14412E895E76003AEAEF6077B4123528661FFC4 + F3A806C4F859C1A30839CAE0ECDF10BE41E416860F7F32188E4F453320DCCB9C + 81CB621ED8A6177BA218245C9681D9B7360431A805AC03B37F306430FCF8C3C0 + F0E61B0483D8700382DC4CF0DAFC1B498EDD5785E1FD4A3417F83919319CBA78 + 8BA8FCF0DFCF908171139201A0DC3871C6529273637E46740C00F128724C706C + 80060000000049454E44AE426082} + Name = 'PngImage12' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002324944415478DA + 63FCFFFF3F03258011640023232386C4922BFF0D9818FFC57EFFFE57FDEFBFFF + CC8CFF19BEF0F1B36D5C73E9EAAAD5613ABF60166318505FFF9F4939F077F98B + 97BF6BEFDCFEC6F9EDDB3F86BF7F810A9918192424D9FEF3F1B32FBFFA93236E + 5528C35FB8018D9B7E2C6DF0E38859759581F5E7BF3FD36EDEF89AF4E51B03E3 + B72F7FC0867EF8F897E1EF3F06867F40ACA1C9F96FE392D5BA5737265D831BE0 + 58F9F0BF83A5F83245796696CB973E87FEF9C70CD6FCE2D92B86E78F6EFCFCF7 + EFEF17360E5E4151590326666626067D7DDE65F57E1CD12806288BB3FF676567 + 66E0E062036B7EFEF425C39307576E8A2A19B9EE6A557DA217B2A88E9B5FBA41 + 405C87C1DC9CEF01D0004514031444391804843918409ADFBFFFCE70E7EA91FB + 9F3FF06BDED9E1F513A450357481341FBBD03D611973362B4B2C067CF8C1C060 + A020C0F0E3FB4F86CF1FDEBCBE7FFD84C3B54DC9D760812B13DACB29CAAAF84A + 58C69AC7C61A8B01CF9FFF61E014646190E365627870FD40C3A535718DC8D1AA + E2B1988F5788E7B998823597A5392FA6010C1F1EC0157FF8F081E1DF9F4F0D1C + EC6AFDA7965A7C02899924ED550746C555793523665D1D2ED440C49690D08149 + D2A9764E3ED90A037DEEFF3696BC7161EA0C4B8836402FF6A41A37AFF0690E2E + 7E3E7B5B9E65C08494084C48BF8832402BF40A0F8F30DB3E0E2E4153277B9E65 + 0DFE9C60A7E34CCA280098ACCDDF3C5A2925C913ACAFCBB51CA6997803ECF7B3 + 301C74FC834D0AC5004A000026261CF09ABF155A0000000049454E44AE426082} + Name = 'PngImage13' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E64944415478DA + 8D936B4893511CC6FF67DA74BAC9BC9478C9357338CC4B0EBC1709F929A25414 + A13E48082D8CFC20267E1B925DD004B3120C75919AA99B5DADD485E56DA2791D + 739ABA2D9DB7A953379D6EEF5EDFDE14859C810F3C5F0ECFF33BFFF38783E0FF + 425902A13B668448DCB4C5B658709C40D8F0A4563120A97FB1B61F3AAC291008 + EDB1630ED7ECECA97C6F7F6FAEABB72BCDB46902B54CAD5BD4CCF7AAC68772C5 + 6F8A06C8286E05484EAEB3F10BB6A49FE2B2F2C2628318E0C440063300410050 + 910596D4B344F7BBB63169FBA7B4D6E65AA915205320E47A9EF4ECB89A7CCE85 + CDA021950141E2BD2E9049645029E683BB3301EB2AE5F657E15B4955457EAA15 + 205B5095CD8BE33D0C8BE0523C1002B50120E5C12EE03509D8A60078386EC1B7 + F2066DA3A89C8FFE1DBF9076CADFADFA4A467C829E70829C82AE43B79B97150D + B3522956F3F4C9B3030001DD87C3AE49C84CBCBC646640FCA5D29DF3A0B8A09D + 09F62469E1C3A4B4D7F2EAF1A3DA834FA064DC2D2D8E4DB9984E63F922ED2A02 + 161DE04EE1EE13D4ED7CB090CB5CD9C6E1439978A3FE655189D50E52D37263CE + 4486374725C5D2168DF6C88E2CE414ED02942400030246C6A7087149C5688DF0 + 7EC63EE0F38DB3C79974A8ECB70B7459649E0F64F17854767800C588D390830D + 02172A19226F5E58D211DFEB9AF40DD5CFCB46E5DD0568AFECC6C43FFA470747 + 2CEBF420D2048072C57ED3CB2F846005F9D19CBD4E80C96882B9F16942D1DBA7 + FBD15C2B960F77159355056AB919E0E3E24C17F9C58487E1737218966D429386 + 01F235CB8589854D87D3DCD0448613938D61669B89B1C1099552DEB9AA9B9790 + E559D204FA99C5EBF78D0A0FB5D5ABA0BF6F0D7AA66CA1757CC4B862D808E9D6 + 9826C990236927D236A4B748AF92C6F6FF82243F890861AE817CC8001D6A0A74 + 2A478D1AFD7A926CC6FC058E20743BEDFA2F1ECC70B45A0CDA2614CB5AFDFAAD + BE19B3E828E51D009FCFE710C6F546ED680F473DFF3B7E70DAFCFEA8E5BFFA03 + 503A4EA60D6AAC070000000049454E44AE426082} + Name = 'PngImage14' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E44944415478DA + 8D936B48D35118C6DFB379D9D4C9BC94A8CB399B38CC4B0E9C9A45427D8C5251 + 82FA2021B430F08398F4258650145A615642A12E4A31AF6565795958A69B685E + C7BCB4B92D9D3AA74E7771BAFD37FFFDA728E40A7CE0FDF6FC9E73DE877310FC + 5FA850200CC22C90ECB06EB1EC76870347D8F88C6E7244D4F8D2B06FFA172910 + 082998BBD7154F8A079F11C5E0043002A8D64D2BA8A56AFDB2463BA8928F1537 + BF2D1B21AC0E9780ECEC06323BCE9E17CE61DE4D4C8BA5812F0D996C00380EE0 + 81ECB0A25EC0FBDFF74C4B7E7CCAEDEEAC97B8041408849C906321BD97B24FFB + B36854A43221106B01ECCE007780203F1CCC2AE576BBF09DA8A6BA24C725A048 + 5053C43DCFBD9F98C4210523046A13C0D0320099BCBBF0360920D87B0BBE56B5 + E8DA9AAAF8E8EFEB3FA2864705D65ECC4FCF30E2BE70BB54ECD28F542485D676 + 3E2C482458DDD327CF0E04087CC222597519059917566C34B8F358BC031C94A8 + 8B0F339241FBEB870FEA0FAE40CABFF5A23CEDF2B93C2A3302E9D611307D0002 + 29006EC4D529A4DD2ED6B61DF0A1B279A3F15559854B0739B9C5A92792799D29 + 5969D4650B05791200C31B804A74E046B831C061423E8B3757544FD509EFE5EF + 077CBE76F208DD07DE0C7BC6F82FD3CFC430B95C0F162F9A64715091171981BF + 0761224E5E5AD1E3DF1A3A8C2DB5CF2BA764FDA5680F0EA43B3E469D8A4B5AD5 + 1BA149130DCA35CA66283B1E67C6B2A97EA147C16AB1C2A27C0E9F1C1CD27FEF + AC6F968D8BCB097412755D8F0EF3F7F36962A7F2121D8B3218976E4287860632 + 83FDAC6269D3EB38272193E64B6761988DAC981E55A894B2BE75BD5644C00BC4 + E0E867217738228597E06654C1F090010666DDA05B3E6159336DC4F76BAC3384 + 8968007C8971BE842D62D6C159C5DE5F109564E1F17403C8C64CD0AB26419F72 + CAA2319AB3A4F3B62F7008A19BB9577F71613E52A7C3A04731B9AA339A6F0CCD + DB9A0E03EF04F0F9FC48DC626ED34D0D44AAB5BFD347E76CAD87859DFA0386D8 + 3FA68502A9830000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000032A4944415478DA + 6D937B4814411CC77FB3B7777A5E7276969AA4648A20A5592A4585FE654122BD + 0CAA3FE2841EA45946697591BD8DB27748A2BDA0A43FA2420C893252D2A244B4 + 7C24495986AFBC3BDDDBDB9DDDBDDDDB663714B366F9B2BB33DFCF777E3BB383 + E0DF66235A19342370912538D0CAB2825BF00A6DA4EF2D1133D5A8AA2AA029EF + 4126B3292B2E21BA70697A5262626A9C393422040D0FBAFCAD6F3BF187C68ED6 + 9F5F472E2992524FBCE2F400735884ED40E6BAE58539F6CCD0B9F323009111C5 + EF075191600C7BA0ABEBAB5AF7A071A4ADBEE71CE7C615849126032823B52D77 + EFBAEBF6BDEBAD164B20E941A092EBF89ED75050960C6ECC805B6060D8E984E7 + 379B9C2D8F3AB71353CD4440CC8ACCE49725D7F2626DB3AC60A028C2535092FF + 4A2FCD5E1A0F2E3C062E9E8171D1034303A3F0E24CF3A7910EF72A1230826813 + BDAFF87CEE85ACCD19269AA2C16030C0093273EDC372C8DE92FFD7EACEDDE902 + 06B3D0F1A41777DEED2D5015F5369A1335BBB6ACFA4056745C24A22903941636 + EBF044C38204BCE003FBEE62B0DAFBC1237A61B8C7A9B69DE979ECF3F836A1A4 + 65F15F4EDD2A880BB606A12B45AD93B02C2BE023D2604D79FB8F02B5F533B022 + 078C9B55BBCF7EEBC43F8424B4243DE19BA37C678CC962844A47B71E204F8212 + 09F1EBF783474E02BBB105BC1207DE711EFACA06BE8B7D520C8A8A0D6F70DCD9 + 951E343B1061598067A54EA8AEBAA4435A0826D22A3976B21406B31B80F76160 + FB3975E8E2E84785F12F460166E3E91D17361D8E5D1E45F332062C8BD07EC300 + D7CA4EC1BEA292BF16B177751D6893304D5E9979E0AD5265354FDBC694B4EC05 + 7599FB57844906093862D04CCEBB913AE4D9F01EBC3E1EBC22AF87635680F1FB + EC4FB95DC922DBD8A105A0008BF1444641DAA1A88C8800CE8F8123656AA59A1F + A740FF9A7AF22CE8B0208AC035F258A8911C20C3D5A9BF72D8CC79C197E3D7CE + CBB12D0D09106862D4A13F9F343133F70E63F18D740F7E818330E3D30FD31CA3 + D5986F5B68B55B532DE128923248269F0EF2DF05856FC58372AF52013C5412AF + EB7FA7516B34512232C2063A944E44C1C82C7B14CEEFF2B793929F92B16E2265 + EA71FE0D330BBCF031BDB9A60000000049454E44AE426082} + Name = 'PngImage15' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000031C4944415478DA + 6D536B481451143E779D5D5D37D95AD354523445905AB32C0A0DFD653F92252B + 8BFA130A3D40F385D1C3B09766A5652548D23B34FA1115624894A0F6502845CB + 079298A5F8CA75737677E6CECCCEA3BB532DAB75868F3B73EFF77DE7CCBDF720 + F8374C045BFC97F8AD3504F8191D0ECEC639B91E32D741407B13154501E4F5ED + AFD3EBD263E2220A37A5C49BCD1B62F481214BD1F4E49CDCDDD18F3FB4F7758F + 8FCC5C9504A98570F9C506FAE01053715A46526166565AE0CA552180C88A24CB + C04B02FCC476181818519A1BDA677A5A862E32365C473482C740A3D5ECCFCECF + A8C9CADF613418FCC80C02853C678EB4425E5502D8300D368E8669AB155EDE7C + 67FDF8A4FF002135FE35884A4E4B787DFA464EB469B9117C341AA2D78008329C + CF6D55CBB39406C11C4BC33C6F87A989597855FEFEF34C9F6D2B319841948E2A + 387639BB327D6FAA8ED2505056F066C18E363DAE05CBBE5C30E7BBE02767071A + 3BA0EFD930EEBF3F9CA748CA5D141A1ED454F5A8383D22260C511A1FA8287CAF + 8ABC037302ECC92E0263D618D879274C0F59959EF2A1A72EBB6B378ADF1CFBE5 + FC9DBC9800A33F2201D547BB3C06A228818B80E55C2A728A4E01B3AB0B689B43 + 19BCF0B51F7FE7E2D1FA94B8AF25B587A274062DD971173C2C1D560D448F5020 + 26B23A1E3D790EA62C6DE09C6761B46AE21B3F2A44A1F0E8156D25F70EA7F807 + F9212C72F0A2C20ACFEB6B3C62F788094E9496C12411B32E0C8E314699BA32FB + 49A2E575C857AF2D3B58B9FB44745238C58A183AAF890BFEFF5259A947CC082C + B893D0EF9C22DDE0BCAD884A8EFB1813375A5637A71525070B3E023084E02631 + 24136E88564D262DADE0E4DD621EB08383F97AC7B8D82BA59363EC731B205F83 + F66C6ADEC6E3E1A921BE8C8C55B1BB54FDD34418DBD642DE3955CCF13C30ED2C + E61A85127251AE7B5FE5E0659101D5B1DB23334D9B96FA721421AA22FC3BEB9F + CC4C27C6FC5BE101FC8012A2995FDC4CA15AA336D7B4C69865DC605881C2343E + 82CEA50AD96F9CC476E3497158AA03166E11EEDCFFBAD11D1481196961271548 + 995100D28B768991E7E45E52F273B236482079B7F32FB7E1BAF0E8F71C040000 + 000049454E44AE426082} + Name = 'PngImage16' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000019E4944415478DA + 63FCFFFF3F4341F1F9FF0C6402469801BEFE4A0C0B16DD60583CC71CABC21F3F + FF327CFFF90748FF6128ABBCC2A0A5CEC0B072C752E20C40D6FCE3D71F86BAFA + 1B0CEB963B31A85A241336005DF38FDF7F18DA5AEE3098997032CC5D3D07BF01 + D834FFFCF597A1B7EB3E612FE0D20CC253263C625092FFC5B0F1C06AEC06E0D3 + 0CE2CF99F68C4152EC0BC3AE931B310D983EC908A119AA11A409660008CC9FF9 + 9C4180F72DC3E14B3B500D00019021840048F3F7EF3F19CEDCDE8F6AC09F3F40 + DB7EFC024B82E81FDF816C280D11FFC5F0F9D337B03C08DF7C79126180A7B73C + 86E6CF9FBF43C460867DFB09D70C32ECD1A7F308036CEC44C18A976E9A82D7F9 + 7CFF8DC19A4186BCFE7D0D618089193FD896B5BB67311CDA309341504A87E1C9 + ED930CEF3FFD60F8F0F927C3FD671F1956AD59CDF0EC96105833C8BBEFFFDF44 + 18A0A3CB0976EAB6C30B182E1CDDCBA06768C8B073FD02B8CDF79F7E64E89C34 + 87E1EE456EB06610403140599519EC827D6796312447F833F072B130B0B0B2A1 + 387FF5D6430C37CF72C0F9700318191919F49D72C9CAD200FAC9B5C145016BDA + 0000000049454E44AE426082} + Name = 'PngImage17' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000015D4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D1891F98CC80644FB98E3D50C54C3D0 + 3B6521C3F99DD3194936E0DFBF7F0CCBB79D6690161366B04C57058B715C6060 + 24CA0090E6DF7FFE31ACD9759621A4D68281352A97E1F7B2C90C8B2E10E10298 + E6DFBFFF325C5DC2C1F044E912C39B4B4B19984A3AB17BC171E64DACAEE860D0 + 60D0F399C2F0F2D636868587CC18A41A1A18D218F07801DD669866100E699161 + 10D5F6050726411720DB0CD35CDE369B61DED24DD80DF8FDE72FD856107D6319 + 1786E6ED7B4F311C387911BB01611E260C6E73EF80F9110C1F180C182C18C4D5 + BC5034830C3E7AF60A7603029D0D212E00FA7DEDAA2B0C2D2D210C6B6A9EA068 + 06E15317AF6337C0C75E8F2160D92330FF4E8B0B838B4B0D985D5CE907D70CC2 + E7AFDEC26E80BBB50E5CD11FA84B60E181C0FF18AEDCBC83DD0027734D829A41 + 00A701B6C66A0C9BF69C24265362370094D348012003002CB76B52FA97B19500 + 00000049454E44AE426082} + Name = 'PngImage18' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001B04944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305BB1603A2323BA66090111A9272F9F301CD9BE99119701110999 + FF616A189135FFF9F9430A9F4618B0F1F405FB1B6E0021CDD70CF8FF0B09B0D7 + 481C78D50AE2FF7295B1FBC82F7AF0C585F30C8C96EE5ED3E425E533618A1F3E + 7F385D4A5A79C3DA79937781F8C149B96E6627F7F4F8B23ED3DD226BC2F04840 + 96A19CE72DC3E7E387182EDEF8389911E49F1913DA192EBCE06778FBF727C3E3 + CF0C0C276614A2B860F98C690C9BAA5A1854F7F530282A4830DC7FF08261E657 + 318689B76F33820DC8A89806D70C026B1A43E19A65C46518C0F25F3F3048CE28 + 6050BFBC9A61DB7F198693AE390C535AF220068496F6C3355F7EFC9EE1E6BC34 + 782CC0E47F5EBFC060D7E5C170E8BD208301F73B06BE7F1FFD642E316C6604F9 + F1D9D3BB01CC4CCCE070F8FBEF2F4618FC7D723D22F3EF93C4FB37DE301C1296 + D9E8FBE68198BED87F4BFEBF1FED084619087CB4178BB974FFD3D42B8F7E7801 + 6D390A12DB28C4BA51558ECB8F2803D6F1B2C67CFEF5C728EEE7FF62A006701A + 98C0C0202ECBCDB00A00547CD715F016991D0000000049454E44AE426082} + Name = 'PngImage19' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001034944415478DA + 636498F123988181610D032A0861C8E058CB400460041AF07F8201AA60C10520 + 91C1C1489201604DC40114D7313234DCF84FB4561868D080BB8E71F3BEBBFF7D + 1C9550E4FFFCFDC7F0E7CF5F86DF60FC0F4C83F8DF7EFC66084FAF6738BF733A + 7603D6DEFBC710B2FB378A61732CFF307888FF061B7AEDEE4B86EAD6C9B80D60 + 9CF993015B803EF0FDCAF0EBF75F863B8FDEE036006403EB9CDF0CA40628D800 + 0F3B05B01F393BEE911C9E6003ECCDA4188E9CBBCFF0F70F3B03A9010A36A0AE + B307ACB8A9BC04C5005C9A91031425B52107283ECDC8018AD500429A41F8D1F3 + F7D80D8005283ECDBF81F8F99B4FD80D8005283100AB01B0002516000097A51A + 7A68BA98860000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001124944415478DA + 63FCFFFF3F03258091620340848147C2FF0B3B1630A24B1223CE08E20CAC0B28 + 0A0098010B361C807BE3E7CF5F0C5FBF7D63F8F2ED3B98D65455C62ADE599ACC + 886240BCBF3D58E19FBFFF18BE7DFFC5F0EDC72F86D6A98B1826D7E760159FD2 + 908B69C0EF3F7F810A7E337C072ABC71FF15C3FC556B1916F69463155FD45B81 + 3060DAF21DFF93835D18BEFF80D8F0FDC71F8647CFDF334C9CB38061E5D446AC + E21B66B7220CE89AB3EE7F6AA80754D16F862F409BDE7FFCC6D0D43F8561DDCC + 76ACE2FB574C4418503771F1FFB4085F86DB0F5EA3847049633BC3C6F97D58C5 + CF6E9B8730A0A86DE6FF6FC0D0FDF4F90BC3E72F5FA1F417867FFFFE33589818 + 601587A78381CF4C941A00005C20FBD97F751C0A0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000F84944415478DA + 63FCFFFF3F03084C59BC03C2200072E33C19616C905E46640372623DF06A06AA + 6198B77413C3F99DD3194936E0DFBF7F0CD396EE62D051576128AAEB031B42B4 + 0120CDBFFFFC6398BD720F43B0A70DC3CD7B2FC0869CDB318D91A00130CDBF7F + FF6558B06E3FD80B3040D00064CDBFFF40F0AA6D47C1722083F01A804D3304FF + 63D8B2EF147E03F06906D13B0F9DC56D0058E16F540D20FC07C607CA1D387911 + BB01E991AE043583F847CF5EC16E4052881341CD207CEAE275EC06C406D813D4 + 0CC2E7AFDEC26E40848F2D41CD20B12B37EF603720D8C38AA06610C069809F8B + 39C3A63D2789C994D80D404EA6C400900100F58BBFF09BC1E25C000000004945 + 4E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001A34944415478DA9D922177E3300CC7655636C3B20596CD702C86C7E6 + B141C342EF1BE42318167AECD81916BA6CD0638582852A0BCBA46CCDDAF46E77 + EFF4E2A7D8F2FF2759B6724FD9354BF30B09810EF5B16C43866FACAC7DA67DD5 + E364655A15020ECEDD42AD47C839EE4AE9EC5CE492EBB2CF9DFC676BCA83772D + 6C133CEFE14D395F066B0C032AA4346AD5B9905D20C49BD255350196D4BEF40D + C48A47657F44073D05CEDC9AFBF0585F63B61D1379AF7BF2B702C67D8509B0F6 + 4329E52D1DE8CE2CF557B6B93144CAF13C04767702CCED62B12433587FB99141 + 4E1C03C2B70011B72EC02E479843CEAD6E60D04BEED9C1825B47A54E6273CF15 + F73CE9095226D00B891000FB66C1733E2F71CCACCC08EA36043165755141D334 + 2CE6EEAFE429F0552F3468CD5E370CE05842F04E4FE2DFF6A05979CE04633524 + 15F08707024484E0F9EA36C880ACAE7A70DE87931D7B0190BCD0B1326F11E256 + 20FF0098C454D92324167A5320163B95FF47C0518EC02219F4E9D3AB01C780F4 + 3780910A46D167763E3FF508B95A59BA105F037E76038EC28FE6C9B58DCDEC3F + E273F115E07FEC1D6B02010E884AA1F00000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000011A4944415478DA + 63FCFFFF3F032580916203966D3945B60991DEA68C6003D4BD9919269F4CC6AA + E8F7DFBF0CDFFFFC61F8F6FB37C3C71F3FC0ECB9FE5B19523CE6309CDB310D61 + 0008C00C996B760EC3209B6D7270CD208062C02E9134B8429866E6534C1081AB + 0C0C7F13FF81999A6B4519BE035D02728DDCB204220CB80A118319A0B04200AC + 19843556A762370024B9DCFA328617903583BC62B83E13350C40FE074B421581 + 70EF05569C31907DD8036140F7E4F9180AA6DAEE60B04CAE6660905064F8717C + 2AC3F97DE719E6EE7BCE30A5C50BCE9EB3F73B23232E1B8EB528861E7CADB6EA + CEE58358E5939D24C32CABEFADC667C07F8A5D00A456811452D505208D5635F7 + 5783D480F211C92E98BBEF075C0FD8004A73230074DEE0E1BE54FBD500000000 + 49454E44AE426082} + Name = 'PngImage24' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001D24944415478DA + 635CBBFBE27F062C20D8559F1145C0600644DD850C1471469001412E7A286AD7 + EDB9846A08507365811743FB846DC41BD0D23303CC3EFF529F61E19464861B77 + 9E332C597190E1C7CFBF175FBFFFE10D34E8298601F7AD2419148F3D67F8FEF3 + 37C3F71FBF19841D16C335C380181F0B4365E7D62F4083344086C00D0069E6B4 + F26638B66E2E83C3F9AF0CDF7EFC62F08BAF02BBC0D74D9741474B96E1CAB5C7 + 60FACFE7370C0BD75FDEFA6A5FBC0FD800C33A77B06686FBFBC0B61C3B7F9F41 + 67FF2B8688F47A86F33BA73382C20064C8E65D97E186C1C2036C809FA30EC326 + 5566062B4345B8E66FDF7F312415B4420C408A85CF471354A21ACFDE3976F216 + C3DB838910035C2DD5C14E3E6ACAC7A0BEEB39C357A0E6DFBFFF32E4567533D4 + 94646044F1C92B1F19A6AEBAC5F0F5780AC4006BA0CDA0400369046190ED2050 + 54D70736003D96E6AC3DC35033E33AC3CB3D7110036051860DC00DF8788EE1FE + 726306C5C8B30CEB4EB3C0A39991810080C5D2EF358C0CAC16F10CF7B72C64E0 + 8F44C412710698FE81D86E0F8CA8830C6057DCFA200B8E25A20C30BCA3CFA0E8 + 130F8C82850CEFDF31307CB80CF491C313702C116580C8697D0C7166F77BE058 + 22CA007CB1449401F862090078951B407104A20F0000000049454E44AE426082} + Name = 'PngImage25' + Background = clWindow + end> + Bitmap = {} + end + inherited LargeImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000003CD4944415478DA8D96ED4F53571CC7BF17EC9315 + 11864234C607C6D4E9408621F88CBA88D0C64D48EA906C3E3459F40FD077666F + 7CEB62A2912C43F0A950A12A3001AD2613810908B46869E69E8B2FBA3087F499 + B6F7B63BF7E0BDB6D2A79BDCDE73EEBDE7F339E7777EE7DC3248E1303C346BC9 + A5812FDBED767AAF51D7B9C9F4A07E22595B2655F8DED202642D5E089F3F88B6 + EE415CF8BE857F9C54C2A402DFBD651D7296C8C5FBD3336EE87F7C8206DDBDA4 + 1226197C57493E96662D9A7BF9F810BD861A4BF1EFB4136D5DFDB8D2DC9550C2 + 2482EF2161C9266111E00D470B611C015A75D7E11FD6E2F51B176EF7FC8CA696 + F812261EFCC0F60D502AA451706DB902A7EB5F60D2F32195B8068EC1E5F1C1D0 + CD4B62878B4904F7F8392C3A3922C2C361D280B438736900B6D94FA9E4D5FD5A + C8A46968E9E8C555FDFC9130EFC3856C8984A72F90E0E31C274AD767A3EBF138 + 7A2D6E64AF2D82C99A4E257FDED320C4B1E87C34881BAD3D511226D1840A70E1 + B09AE7269987FB021CBCE49C9C545089AD5B0387CB03E39351E80C0F44892008 + 278207D830BE297F27FAB6DD41E182A4A9CF0698CDF8BDA31A334E2F7E7A6A42 + F36D2395303C3C56B644F69C09BA3139C5E2ECE11C5AE727DA9791274AF8B3C3 + 64A712ABE17338C9C4F70D3D4757DF2FA0829ACF8AE2C2BD410E013F0397C329 + 0A4E9CEB059B5B4005B38110825C083EF25EDFAFFF518959AF86E5E55F387FB9 + 19CCC5EB3D61AD661F14320915683616A2B24C22C2F9DE05FD0B10F4450B9C59 + 6B299C070B23197FE5A082519D0AD6DFFEC677F56F0599194AA8CA8BB1848429 + BDE40768EABEC6EE923431C6E1800C0C1B2D9852AE8E091FB959058F771643A6 + 0974F7BF04535C716A236963D1D6A95173601B9128A1286BA4924DEB58DA98F5 + C891217347096CD29531E16E12FFC1B109DC6A7F3837C9FCAF20397144854315 + 5B91A15C88CC9DD7A864F90A2F8A729538B6F7DD662748C602B9F37AFE74D422 + C2C5348D941CAF55A19A8C840B315855758B4A64996F909FEE84C7350D960D61 + C6C7D1364D7FC829BCFF4A05A97118187901FD1DE3FC85365FA28646BD132E6F + 0005070DC0E6CD5015E6C58C390F9748D2D03F3C8E9B6DD1AB38E66627488E7E + A942D59E2D9090945DA36EA392B2FCEC28F8B31B9598251FA061B335263CEE76 + 2D48BED25462DFF66228E4527CF4C55D2AA1C75B38CD16027F3F2C49059192BA + 9A0AEC2A2B2212193ED174D2673CDCED9DCB96D6F64771E109059192DAEAFDD8 + 515A08B94C0A8EAC5A9A2D6396A4F0A48248C9113292BC651F807C1260FFE735 + F4778D49E129090449E6B25516C7948DD64919A49CD2DF96FF0126B669571175 + 682F0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000032A4944415478DA + BD95CD4F134118877F5B0A22D84205341E30087E24021A45893131F1E2C178F1 + 2A26FE07C6C478319E8D9E8C8926EA49E217D1B328F142A24123070B2E6DB76C + 0B5DB6A585B614CA47BB1F6D7D772CDAD22DA0094C32997476F67966DE79F72D + 97CBE5B0958DDB1601C7719B7EE1D18B8F9768E8A17EB660FA2BF537D7AF5DEC + 2F5CCBD8FF22C8C3DF5FBED04D2F73882FAC40CF64114BA6E1F3F9797AC693E4 + EA7F090AE1FB9AEAD9DCD24A1ABA9E81AA6510239920C530CABB71F7E615EE9F + 0425705A6E80753D4B27C8A0AAD24A630EFE5002E25494242E26D994A01C5C55 + 7528AC6BC866B3A8B7D782B35830198A63C829E2D9BDDEFB4EE7F3DBEB0ACCE0 + AAA617C155EA29458546D2867A1B72D90CDEF67F41DFD37E3709DACB0ACCE00C + AA680CAC685A5EA4B13B38D97E00B14412BC57C2C0E0777C7A37545E50166E80 + F302E324EC37CD7775B4223EBF0861621AA35E19636322BE7D18361798C2159D + ED785550024F2C821F9F82673202419882382A221C0897DEC146F0D59014C213 + 0B4BF0D0CE9D8244F020FC3CC127C31819E92DCE2233785AF90B53F360632E43 + 1FD7098A79742E899F047691C0352621264F63C22D3178D177F0F8E540093C95 + 568BE29EA64C512834468A9EEA6CC34C7C1E6E5F082EA3BBA71097C310F9893F + F0B582D7C78EECEFE9EA6883B5C2C2629C5EB373259F9EDDC70F6226364FE020 + C6082E8E87200B0148A25C045F2B983C77FA684BE7E16696D3A9945A10EBBC48 + FB0D8FC617081CA44B0D421483181F19C7AC3C5B023715B43637D109AC58585C + C64A4A29806B043F84394AC561DE4FE560165E418668C083E6F01281A3CED6D2 + E4D8853D0D75D8595DC52ED2C89E2C8D5D14F34834C1B2E5873B00C123232147 + E017A4B2F0B582C14C8E3B5FBDA30A95560BF6EEB6A3916486A4C16187DD5603 + A77B025E2902371FC072740E9E51DFBAF0926A7AE7415FCE6677C052C1C1565D + 81C6FA5AAA2B39D45111CBD2627F7086761E424494E0F30436849B966B4362AD + AC84BDA69A5295C3F2D21295619D95E5C5E40ABC4E3F8B79FB99F68DD8ACBD7A + 728B332B153722B1F987E170181ADD81F1DCE8AECFDE4D410B1B950A6E7BFEF4 + B7B2FD02BC08E5EFAAF547E00000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000022C4944415478DA + 63FCFFFF3F032D0123CC82D53BCF13655398871123B18683CC46B120D4DD10AF + 06A01A86F6FED90CE7774E27CA12922CF80754B776D7050651415E86A2BA3EA2 + 2C21DA0290E17FFFFE63D8B0F712838DB12AC3CD7B2F88B284280BFEFDFBCFF0 + 0768F89FBF7F19B61EBC0A0E2218A08A0520D0B3EA2131410E06A5E10A704BB1 + 5AD0B2EA0186260E0646869230798286831CD2317B23C3DB3DF98C382D00F141 + 610E0E963FFF18FEFEFBC7306BEB4BA22D3051F8CD1052BD0D6C098605216E06 + D008FDCFF0FBCF5FB0E1A0C89DBBE335410B7EFDF9CF3069DD23866827617022 + 0059F266771E238A0541AEFA0CED6B1E91144440FBC186FF02FA76F69627E020 + 82010C0BFC1C7519DE7EF88661C8B203EFB15A806C388CDEB9FF2458AE6CC679 + 4C0B3C6DB5C061FF179A2C81084CAF3AFC096E4144CB159CC1D49EA60AB6E4E8 + F133D82D70B5D26098B2FD25C120C2E67264FAF4E9B3D82D70325763F8F8F907 + 8605EB8E7F815B40C87010BE78FE1C760BEC4C5418FEFD852451502A82E4E07F + 0CDBCEFE005B00323CBA0D7710954629327CFBF997E1F6B58BD82DB0355261B8 + FFF41D86C6A3B718180A43E419BEFFFA87D5C520F6CFDF08B187B72E61B760DE + 92B5E0B2071DB8FAA73164F8C912653888FDE2FE654C0B181971975BDD2B1FFC + 4FF292061B5030E5264E75715E32608BDE3DBE4ABA05316E52045DFE0B5CB430 + 307C7C4A8605614E1244190E026459106027CE70E8E869066201C916209731C4 + 02140B6805009C1383EFACA508270000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000E9C00000E9C01079453DD000004BF4944415478DA + B5D37B4C53571800F0737A5B6ECB4B2F2D2D2D2053408286870CD4C9C0B89989 + 8ACEB041F035064CEB365800D93235C0EA40FD836D380C085B44C7C30993111E + 93199411DE844029B80908586094577B81963EE8E3EE82D311662A35DB97DCE4 + 3CBE737EB9E77C07120401FECF802B010821A8ACACC7BAC453B54A95E6405AE2 + E111631B7C9E7E331102E87431313C76B1FFAFFD9E071492C0A3A109218D8AD4 + 68C68527040281E1799B9FCF2A738306439314971765244598060C3C9E1406FA + BA73EE36F6045E381DD6B672F39339393457C4BE748BFBFAE08AFBED572E9B04 + 94D7B20647645D7111FB7805E58D359DF2817DB97CBE76795E7246717450E096 + 5C7239E5C7AAA62B99C9260039F977B893B3AA9E84A8FD3603C313BA9FAA5B8F + 9C8F0B2D799A73F6AB627B77676E4750A0375BD43B0ACA6ADA7ECE4C8A085935 + 9097574B1F56C89A2342767A6356E6A0AAB6E3E1AF1DFD5B6E0822D5A1A1C588 + D71B66D7DF7B3BE0E862767BCF20A8691265647D1115BF6A6031522E9784B130 + EB9BEF066DA72C68B5C4F5D2BACF5262DF493F935E78684F804FE9C6F53CF8E7 + 040E6E57B7E04A9572DBB7C951FD26018BCDF8B4FCAC5DDB37F377F86C84AD5D + 0353F79A1FECD9ECC22B3EF8E6AB2EB25925B85327D4F70E8DC5640B22AF3E5D + 640A004EA7FCC046D7A06D216F6D73E230AD417E59BD243CF8353B081128FC43 + 0C6A9BBBEF4BF48CBD2582B085970296904B45611C1BEB225F4F67848A40E0FA + 0A178C4864A0F46EEB2C3E33BF332735BA6B79BEC9C062BD5B482D8A5998D5A1 + 0D8E6C60678B01D14331E81D94246509DE4F052BC26400B8FC821E0E5178D9D9 + 326A5BC516E6737225F0B09BEB1892500FB688E7A5A02E52FD72C08E026F3B1E + 2B92CBC676D3E9664E23A313A85EA7910368A6B1E3602C3A1D5DA0D210B14422 + BBFF6860FC3BD018DEB53AC03797C659E79062CF65C6418346AF981AD3E85438 + 9C56D3692C864A6EE1E0A3D62AA6AD0787261A210D250044BCD45A832DB93413 + A8E70544FB49AD5100DB5FF1D14667CE3732F103056A98EBA322C42D8D9ED239 + 348725AEB39CF56438FA2E5066FAB893B8C27D4C4A1D279770C9DF3E09CCE831 + 8002CF12F5C7B28C022E11BF89508DD489AA1ABE26421D12414998FEEF23BBEA + 6683EF46ED7D09BDACD756A61AE2492A05CAA539A73C3A60EB6F03338623D170 + C4D328E01E5DAF21A47D5A864EE92FACFAE49F12F42F28DA84C93CA9F67E2832 + 3FECA4C30739DD5567F067F3BEB9A90035FF9468388A1A053CF8CD7238FDFB3C + 55A7F2E92C8F1D7B329A42A1BCEE52ED8EC9AC11DE56E61A44EE3833DA13DC5D + 9E50B30CB848023124606514F03AD5D24F99E9B5D42B64FEDD5509834B837E37 + 98660CD8E7B616BF2745DD985C267D977E52745D88D49F0025254F8ED0EFFB22 + F21EFC48C0D52860B9B7347B2D9C896252E70E8B2AE24BC1CE142AD0B97ECD36 + 577DCC3197F3BB71762B8FC3CAD8C0D46D958FF59DEA2A4F2804DED99B009D71 + 0B204803D170EC43E3651A50E88F52F4D55C0B45E563B9F597900031185DF381 + BD85A262DA801F5FBAD8C0020F1EDBA61ACE8D40E50225145722C1804AE39355 + 7480A83FDAF8E287E69FCF275BE7C82EC7D152A1C650F5B529037EEE59D52C5D + 7AD166000C17C85610F94D904F2C0D341ECF79E143FBAFE32F16D672EF3D728C + 4A0000000049454E44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A0000043D4944415478DA + B5956D6C535518C7FFB7B7ED36B66E5D47D67663731BECD5B18605D8504C084B + 74982DC16468D4F881AD0305E3870550D100EABE482246712A8AA00182BA9828 + 84252006D7264AA2631B461325DD5C9ABDC0686B6F5FB7DEDEE373EF6869C736 + B6189FE4A4A7E79EFBFFF5799EFFE9E11863F83F834BFCF211506AD6A7585DFE + A99E3611BD4B1553DE7FC0DC797B64FC9C13387B883149017C0064549A528F56 + 5A2A9E31AE2CD00EDF700AB62B034DAD22EC8B117E07482B3019F61516E7ED15 + 6F8DA6BB6F79D84D1F0E5A197B8BDB06F06D7A743F5C8827B4997A684A6A804C + 031C7F8D78ED97FA9B5BB130E4531E9B2A2D655D191AA9CAE570201C61CC15C0 + D94911D60EC642DC4915DA9BCA714C97024E6E87C46BA029AE86DA5C08C79F4E + A1F7CAB566AB08DB3DC280C19CA77FBBA42877BB776C940F08018444B0DB3E1C + EE6178AD1B88CAFDE58E02797526D8561BB1324A00519A191A532174E535181A + 1A176C3FF42595EB6360836595E1AB1C9DB660CC39A1EC0F46204E06B0AF4DC2 + BBB17D0A409E1C032AD6E7E3C7223D8C31803C54E999C8B1AC85F3A6CF6BBFFC + 4BB30C3995A2B2D696E6BC2F8602691E6F50D9E79F4298CAD2DE069C4ECC320E + 90E32450BF6605BE37A623231122A9782CAF5A0DF7B44618F869F0FC9A55D94F + BB275DAA6058549EFB66C45BACC085D9654C02C8F1058F268B09DF64A5429B08 + 11A97419463304B707E1E014A669215696093F9EDB097C399701EE01C8714A83 + D60773F1499A1A7C1264D6A0864A54F397A8E65DF3396C4E801C67B4D85F9683 + 4EB50ADC5CE25351B04972CB76865716B2F0BC8083D4DFAA545C2DCEC6BA9868 + 34011096ED18C4E1768657659D2501C8519A2C9DB6AB7A6DB955F8E3376EBE12 + C959F8C238B003E85C3480C497E5E51BCE6C78AA79EBDF17CE21484D5DA80FD3 + 049916B1872047EE0B20F1ACE212F3B71B5B1EDD343E781DA3D7FA93C4C88E1E + 8941CDABA04B5C8F48F289C58BCF2BE76F1E00D55C5DBF42FF5D43D3238F07C3 + 115CEFB90831CAE222816984DD213446818954158E136463ECD413546E428446 + FB2E72FA9C80AF759A37B734D4BC9E663070FDBD5721787C890D955C41B45119 + 3E57F6D29FA31BE8500187E8F1B2B8D80CE459827427014EF0D8FC585DD1C53C + 935E3DEC9CC4B06334A9C6247EC4CAB06776FA1F02D5F4EB8ED3743D77F75EA1 + DE63DB6EE07C1CD05791FB7B6D85B1CAE70FE1D7010722E2DDD2FC13823D1C45 + 039DD4C83C76D61A8197497D3F8DD43B990428BBADF4CE6505602FCAEE7EA826 + BFA56FD0018F371417F747E017A650FB027003F70932482D099FA0A9E5CE9240 + A37127633F739FF16859579ADD3D36E1492A0DB176B72BB7E0E2E23D20450B1C + A0E95ECA86A7526DDEC5582F27A759A6852D330575316708615C1A91B0E50D32 + C9620109BDA9A78F27A9D91D7117D19D6A58AEC6E9340D1AC9350295A796360C + 2D557C76241D34D97E5E4A8F9270ED506EC4FF1E32E05FC9675CEF0AFC725300 + 00000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000027F4944415478DA + 63FCFFFF3F032D0123CC02464646AC0A66243060B820630103230391006EC1C9 + 898CEE406A07B2E4890B40C33AA6A268B8B8229761E9E67F0CD1BE4C1886FD67 + F8E76151C0B0139705FF154C1A18045444212EAFC8061BFEE5C54D86A6E24970 + 0D75BD790C770F4C015BD2B16802C3FFBFBF19FE01F1D7A7BF1836CC69C0F01D + 8A05061153510C7F7D7527032EF0ECF216B025AD73DAC016DCD8D2C870FEC23F + E22C787C6C21C3D64DA70886AFB79F1983988E07D8825B3B3B89B70066092100 + 331C84EFECE923CD027430F9A037410B61A0345C016E095116FCFFFF8F61CA21 + 5F869230798286F7AC7AC8D0317B23C3DB3DF98C445900321C9452A61E0D22DA + 021385DF0C21D5DBC096E0B50066F8BF3FBF18A69F8C2068C1AF3FFF1926AD7B + C410ED24CC70F3DE0BB025382D00451C03D00290E120F6CC33B1382DF8FB0F62 + F8AF3FFF18666F79020E22BC71003210968160ECD91752B05A806C388CDEB9FF + 2458AE6CC6794C0BB0190EF2C5DC2B59700B225AAEE00CA6F63455B025478F9F + C1B4402F740256C341F4BCEBF9283EC0E67264FAF4E9B39816E8067563351CC4 + 5F70AB046E0121C341F8E2F973981668FBB761351C8417DDAD045B00323CBA0D + 7710954629327CFBF997E1F6B58B981668FA346235FCFFBF3F0C8BEFD7321486 + C8337CFFF50FAB8B41EC9FBF11620F6F5DC2B440C3B306ABE120FE92474D0C19 + 7EB244190E62BFB87F19D302559712B8E1E8F4F2E75D0C495ED260030AA6DCC4 + 1944715E32608BDE3DBE8A6981B45E00C3B34B9BB06A3C24798F21C64D8AA0CB + 416C503C7D7C8A6901B8CABC7001BBCB3E7B3E6008739220CA7010C0B00057A5 + 0F03DD2B1FFC0FB013673874F43403B180640B90CB18620100261ED9D6E5FCF2 + FA0000000049454E44AE426082} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000037C4944415478DA + B595DF4F5B6518C73F2DFD4191B66C6C4E8512618376DD28B485B1C126D90F36 + 8D1B1726264B76B53BAF3431DE99F80F18BDD1449399254B644E1747743ADD94 + 48169C428131268366832D631BC838FC687B0A057AEA7B0EB692B562417D9393 + 9C93F33EDFCFFB7D9EE73C47974824F83F976E25A0E59BCE75D1DEFBF00CD72F + 7FA4CB0A70E268DD9AC4450C454F17F2E63BEF6784FC2780EAEDCFF3580A6784 + FC2B403CAE70EEBB007BFD4E22D15846C8BA01AA783C9EE0FC956E0EECDEC1C2 + E2524648D680E1FB9374760E119A95B1D99FA2AECEC5739BED5C68EBD58AFCE4 + CA1A1096635CBC14D084B7941761CECB25321D66EAFE440A343032811C959124 + 498B39DDF275760055BCE5B3761C9E321CDB1D42DC844EA7435114E6E57946FB + 4778187C44D3613F66B3414BDBC5B6AEEC0167CF77905FBC096F4D3936430EF7 + C2301E5D7E67B5409E3EC648D720F353111A1ADC28A226DFB607B203A839FFE1 + 4A0FF5C71B291169B1EBE14E086E882C0813E488E70D3630CA53F48B4EF2EE72 + 512852F6FDD5EEEC00EAE973375AA93C50C55C04CC0A8C89D3CB4B5060165D24 + C242E2DE4A98B1BE2114D1413E7F053FFEDC9B1DE0E34F2E535A5341597529C3 + 63301703530E3C9B07361308034C2E08A09009DD1A606CE801FB1AABF8E9D7BE + 7F06A8C5FAFCC235AC22FFAE3D2E46C661711136E5C266711905A8C0080BC255 + 707A9E4737832CCE84D95959C6D540FFEA80E32FD56A1FD0E8F8B45683FD279B + 90643D2191A62DA2B076215C201C6C109738070392CC2F5F75E0F26CC5969FCB + B59EDF5607BC7AB84673B0245A51EDFF925D4E0A859389591D46B1F519E1C022 + F2633588B489E79B771E70B73B48B5AF428B09DC185C1DF0CA419FB651854833 + B2E6C2DFBC1BEB461BB373A20E8A0EBB69B9931E4F4DD37BA90B5FA59D2F4F9F + E575DF755AF3DE5E1DD0BCBFFACF39B3EC22223EB6E488F01CF163C9B7109989 + 30D0D6A7C544676EE1609CA6E2DB58BC47986CFF9463AD957F0F78F9054F4A3C + 098A2B097E17436C38389A9A455B9D0E0C7A3D5F7CF02E45917BD497C6707B8C + E4541DD320C5AF756406BCD8B0334D3C39399F0427EF4FBD518FD751AB419C6E + 03267F730A920638B4C7BD26F1E4BE336FED4B41563A490334D63AB52075AEA8 + 814BF1BF84944422A37872AD846C739B18948CE980BDBE726D22AE77F59C3A99 + 829C934AD201997E1E6B5D55D1560A771C659BC7CB1F1C73BA92B5793DE80000 + 000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000B3A00000B3A01647F570D000002724944415478DA + 63FCFFFF3F032D01235D2C606464C42AB978D3F10C0E76EEE9E4181CEAAE0731 + 1B9F05AB775E3A1DE2A66B822E0EF2F3BF7FFF19FEFEFB8742FF03D217AE3F67 + E89DB19261F3BC2AFC16C05C0FB480E1E0E97B0CAFDF7FC5E95A51416E067D0D + 49B02513E6AC66D0D3353A03F481295E0B40AEB73751341115E2818BFDFB0F72 + 2DC4A5A82E87E0CBB75E3014D6F6309CDF391D6C204E0B905D4FACE120B9C9F3 + D6C05D8FD70264D713133C5A2AE20CD7EEBC44713D4E0BD05D4F8CCB4172A965 + 5318FC3C6C18EEDDBDCEC0C6C6CEA0A363C400348311C30264D7136BF88D7BAF + C129C7232C99C152959B61FDFA350C17AE3D63D834B712AB05FF41AE07197EF8 + CC7D82C1A3A620C2905E3115C570297975866DDBF7A35A50DBB3E03F30821880 + AE671012E0C69AC681086BFACFAE9ECED0589D07371C04502C689EB8E4FFEF3F + 7FC9C9B070C0CCCCC2202EA30C371C04E016D4F52EFCDF541C4FD0901FBFFE31 + 7CFFFD1F4CFFF8FD8FE1CF5F18FB3FC3E68D88A0F1F27444F5013116A01B0EA6 + A18683F0FE9DEBC0110B321C2388401650143EB060E2E063E0E6E165E0E1E621 + DE07845CFE1D2A7EE1C82686EF7F9818787878C0961C3A749AB005840C5FF4D5 + 8E61C1850B0C4BB5DE30DC38B585E10D304973F3F2822D397BEE067E0B8871B9 + F76901B0DAB9AAAF181E9CDFC670FFD173065E5E3EB025376F3DC16D01B1C1E2 + 9D21C43083D59481B5790BC38B2BDB192E5EB9C1C0C7C7CFF0F1CB7FD4FA0066 + 0138D9C10C40321C268E6C3848FC75B127D841300B4E9FBBC8C0CA210A361C24 + 8E62415D411CC3EC95BBC94E41CF9F3F07275398E12816C08A0A4A92A8B28621 + 43828F3E4AB90FB7809600004F6ECDEFF6DCFB3B0000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000B3A00000B3A01647F570D000002954944415478DA + B5955F6852511CC7BF3E9882694B723D6450D4A21ED61FB3879EEA295CABA058 + D1CB6A23A315C2A441AC4123368A82FE5011066D63D1ECAF6058291643AC8D60 + 966EB5FE3E64D4966B7B1841B1997A4FF75CF14E773DFE1978E070EE3D1E3F9F + EF399C9FCA082190C964284523F73A88AC54020A8F9E3323A7E0B6EB558352A1 + B2150BAF991C00852B0779742EC143EFDB40CDB64AA3241DDF398EC066F74ABE + 6399372AC2E93B53904ACF0BE00F7CC5C4E45FC99AB15FA3B054AD07ECE781C6 + CB4084876FD743D1DC01D97E736E014DBFC5B8DCA8D3CE17E7387E6D824FCE71 + 9CB083CE07BD387CA94AF84CE1FC88E8EE3550D45961F04411F2DAD882F4F42C + 78821FBB1D3E58E2EF10BD7A425CA7708FC0507F26B7203D3DEB78C423DABA12 + 38DD8868D02D1C0DF6D4C2B0D3CA16CC4E9F2D3927BC13F43CF2C3526B02EE5E + 037E8401F34940AB83C1740C2DC78F0AB74922484F9F0B4EFB1DD70B74D95D59 + 7717ACDF88AC75C00B084D4FE12F5F8799C7439B6EA10AAB962DC291E6EB30ED + 3B84CD152A389D0EB4E9E3D23A3875A19BACAD34804F0F6D994A4C3B939A8EC8 + 987378FA9975B0D770168FBB5A9282F62B3D24164FA0D8565EBE985907BB9E8D + CF085A2FDE226D4D07F302A7FF71988A11619C8E7178EAF531EB40BF64697182 + D9703AF6FAFCCC3A90088A3E9FD41131EAA0E01D644B9E7C267833D0C7AC8382 + 04B9E0B4BF0FF533EB20AF201F7C8A7FAE0E94096B3B2BC6F12DE446F87B046A + B5062AB51A9FBF8CB00585C0E97C75831637E49B206F7F82B1610F86863F41A3 + 5980DF7F8800A7AC0C413C91064883A7E6D3E1747EA2297945538240700872A5 + 4E8467085AAD0770F3FEF3B95C26A14522110C7EF899011705A99F8A39D3F9B6 + 62F506D4ED5827F9E71204A56CFF01E5E2820611E3A8010000000049454E44AE + 426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000029E4944415478DA + 63FCFFFF3F032D0123B2054BB79C24CBB6DE290B19CEEF9CCE882C063317C382 + 681F73920C07EA619016136628AAEB43B184AA1618682A30BC7EFB19C512AA58 + F0F7EF3F8615DB4F33D818AB337CF9F613C5128A2D0019FEF7EF7F86D5BBCE30 + 38596833FCFAFD07C592733BA6319265C1FF7FFF19FE02F11FA00520F6BABDE7 + C0918C0E48B2E0D687070C53AF4E62B8F0F6020348B59BB41F43A1661603EF12 + 0E8637E15F188E9C7FC0F0F5DB5786B76FDF82D5CF5BBA89780BE6DC58C0B0FD + D9620C4B4F3FBFCFF0E4EB038697219FC0C1F5E7DF3F30BD79EF29E22D38FDEA + 0283F906230CC303551CC1F4FA3BFB199E057E801BFE0F18275B0F9C26DE0287 + CD4E0C879E1F6028D56B606834AC021B62BEC582415D44106EC123FF7770C341 + 71B3E3D019E22C38F5F20283FB7627860D6EFB18CC8575A0A9E61F83D5762B14 + 0BEEFBBC811B0E8AF83D47CF116741FED12206676064BA49DAC00D1758CE8511 + 5C773D5FC30D07A9D97FE202610B400A6BCEB430D4E95532FC03CA234722321B + E6F2B92FA631C408A581C50E9DBE84DF82084F5370068219C4BF9413C3D5F7BC + DFC033DAD467ED60B164E112B0FA6367AFE0B720D4CD04C595422BB8E1A9E6E6 + 9BF70C5BACF7C00D7FCEFE942160971343B16E1D83277B3058CFE98BD7F15B10 + E46C84121CA2AB79512CD868B10B6CF8DC97D319BA2F3530D8493A30F42A2E84 + EB3977E5267E0BFC1C0D50C25A722D3FDC0274004A454DC67D0CAEAC81703D17 + AFDFC66F81B79D1E4A10C96C106490E15600E75A74806E3828C2AFDCBC83DF02 + 0F6B1D942092DF2CCC70DBE315C3F2D74B18763DDDC400D265206CC020CA2187 + 61380810B4C0C5520B45132C4271255564C389B2C0DE541D258DC33210580C4B + 9E40369C280B6C8C54C125222500AF05D82A0F7200CC0200F191E9EFB5062090 + 0000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300004E2000004E2001167D99DE0000035A4944415478DA + ED954D4C134114C7DFEC6E0B420B085A6A040DD88A45C0C4602D4A2D281F5589 + F1AB6AA2094A4C5502DC34F160EAD11BF1E4498D462F1A43FC408BA052C11435 + F8890AA222A2601B6B2D94B26DB73BEEB4168B16E1E2C1C4974C7627F37BFFFF + CB9B995D843186BF19E8BFC1940653012693897AF9CEAEA5696825732FE72B6B + 3877F2B6F01A982A77435595F48F0646A351E4E3E3342CE7BDFBD1F6F1E7024D + 957CE6BCED6FCC66EF6485D71D3DDE617FDFAD9ECC00E96B6BC5727FAC9A65DD + 41718EF795A6CBE6F9699A6925738F67ACE091A5A5235AB2C1502DA1E3F108E1 + A219A0CA4A530C15CFE68F7986DB0814F0072AAC2DD71BC9A276FDA69D98E7CE + 7198DFDC616E6C8866A0D6EB13C448E48AB6078278A5209E22888F05C531E075 + F76E5CBB11660B4AD716D30C732BC0F37A6B5363535403B56090F2BB01D209E2 + 4AA96C99DB1D6A0BE251455BD395C6C8E4253A5D929491248F70CCD7A796CBDF + A219E495EE8A4F605CEE09060683412C92CED6F03CB64C26FE830F9F6B4A187C + D41D144EDECAFBF7D50889AC41039D4EC7C83354050850B0721FEB392441D892 + 1827C62C93E892393F7F3863B1F822049142A110CB6473553C254AA431041806 + 80E3001266A7D8ED036FFA3A3333F94237CB1103B4AD72DF0A0A51EDD18AE91F + EA3F2191CCBADA7CE9ECCD88EA614B556DC9E0A7B71BE7CF997FE0579E773B2E + 386C0EAB5CA962D1DE9A835AD273B25873B41E66C602385900DB28C0C008C0F3 + 0127F49C3282D3ED2F7FD16626170C6FDB53534CE140F39FF8A10FB6D573E6A5 + DE463B761FC061F17C39C0A03B34C209244892F9702924C5607DD6E2A501719C + A4793A7C863203D05C450ED6166AE1C8B17A9821F4718C9B5811097A580CC7AA + F38070E1980E1FDC2C7966567ED1AAD50F4945E1707943C3EE9998402A229196 + 9A06D3E159AF6719D2EB6B63B20A942D19E5C6C2746908F0064209E449E0272E + 1BBC3D5F37D865BD6BCCC9CDE5E4694AB3667F3D4CC5B73E7EB020784CD76EDC + BE70C4EBE9D96ABA0831B470DC9CE2F1EA084CFAF9CDE95C33EAF8D49E9D9D0D + 0AC5224D5C72AA85984CC6B37E9FCAD1FFBA7BFCA269CACA14CB57569CEEEC68 + 2EECEBED1B4F50E6A8067BBA7B770F753F89FC4453E5DB77AE1A1D1EBE13C986 + F9AE675D455FDEBDEA0DEEC1BFFF47FBE70DBE03EC16D6DE8FAAF1BC00000000 + 49454E44AE426082} + Name = 'PngImage11' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000003784944415478DA + B5566B48544114FE362D31A3C78F104C7B50145A902FECE15299D12668ADBA61 + AE925AA405811585F4A31745FD308A0A42DB5EBBE96E56AE9AAF30CD2CC5C79A + BB998FCCEDA5640F15823233DC7B9BB9EBBDEEB65BAD5207863967E6CCF7CD39 + 6766EE15B12C8BFF29224AA0CCAF89237DD63F051689E21323C5D91CC1F5BC6A + 96186302A0EB68EC0CC3C2C430309918B34E7A2AF2DD2751A23A21B22210F965 + 9A17EB5304DD9ECD34256382FF25C11EA84D82DB8A6B9CDEFF301E771FE8A0D4 + 94E0E1ED745B020A36F69DD39EC5F4552A7CAA88437155A37D02478421FE96E0 + E6366293C610FD5E75D3F822A0E096B9363116E0C4765FA74677690CCA6B0D63 + 23287EDC850B375BF0A4AD177D9FBF63DA94499086CCC1B15D0198E2EA2C44E1 + 21D1E04DF16654D6373B4E702CF3098E663422FFAC049215B35050F5165BD22A + B8B9D0200FA84FAE11A2F00ACBC1CB42191EE99E395E03D76597F1FD8709BB36 + FB207DEF320E689A58C9CD393B89D0551243C6F81A985357D3D4EA5804F47424 + 1DA982BAD488C329FE48952FC6FDDA77901D28177C68CE79F0F91177D09E2B45 + DDD3F6BF13F005A5EDC730C3919C57B7C063E6645434F40804AF8B64233B67B1 + 28528B67B736A2B1A5E3F704F412D1313EDCEE8F0388492B87FE793FC2C45E50 + 1C0A86A7E4A64060BC1B2D6CC447560083261CFAF64E5B82046930B7800233FC + 1927FADAE462E85A7BB9B9B6DC284C759B08CF0D390241475EA4E0CBF7CD1D46 + FB04F4FA0F356CB75AE0BE2E1B43A4C854CA2E4AA02A3222ABE4A54060D044C0 + 89149BFAFAC616A1E146185A3B5FD912C46F5C8989810A7C23EF8AC9E22229B4 + 1D38AED07360625F77246E5A0065A111F7EB7AE03C4184D80DF3B047EE8D3A6F + 4F81D4455B694B200F5F0E97A02BF85293387A4B99D14233BF1C45ABB490A65B + 321B29CA73C84C48B54F10131664B573BB4056F3E6776778C447BF74EE9F09A2 + D707622AB9407D95F1E6428F000D5B00FFFA06D5FB8CA685CA8E3307A1D877CA + 6A4C2090860660C66A1537D853160B8FF51AC1E9457E14164AB582AD5787C34F + 5E840CC34E6ED7ECE057B0FD1FC0F4BD0778BDD380EB060B8288103F3B69F8F3 + EB49D36229DBB78A7145556D3F024A5058A973E89B604F86A242B02D7C01AE92 + 636C5303FAD1CFD196667D1B1C1A3741EC9DD348F40597168D6C3F92E2A4A31F + 7DF207306E605E3200E1FF6727C90CAFFF0482645308AD8246DC000000004945 + 4E44AE426082} + Name = 'PngImage12' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000E9C00000E9C01079453DD000003DC4944415478DA + BD947F4C1B6518C79F7BEF8EFBD56BAFC7951F33BA75E9822B88520C88D92C93 + 05C410CA70986D3261B1DB3F261B24D3F92331F2A799C6B0F96B666668165D88 + 12E7FE598CC14C639C43D0988D41B69974DD5A680B584A5B68EFFA7AAD81306C + 8D0BE2935CEE9E7B9FE7FB79DEF779DF97C018C35A1AF1BF020882C81978E004 + A6EB6BA106236D0B42E4BD080045E3AA8A35ECA3587A607709717531F60ECD7F + 0378FFDBF806A9807E2734956898F027A94844054D03C86310701C02AB950B47 + E3DA075D4EEEA5BB069CB898DCC671D03F3E1655BCDE0548A520F3A4D332DFFA + 9BA208D8B2D5047351B5EB48BDD09B13F0E27B41E7A580E5870B3D849AF64F5F + 49BA522AEE1B198E48B11806DE40416C4EBDA380A9192D03E278048D0DE61BDE + 49B2FAE5ED309515B0AFD7838D14FFEE3C6DE9AEAD559B6211AD7F642842A91A + B1243E3D1D85D999202416E2C08B0A30BC5907109999382A045C5E2674B6DAE0 + 93AC8096377EC7452C8F79237DB6AC5CAC1BBA14165329B4243EE10B82DF3B06 + 34237E93C2DA607C36F4B849595F67B26C22B03E0B399F82E626F9B3A76CB027 + 27A0D0600235F9D7325034B5241E0C84E1E6F591A02E7870F058D599F4F87AE7 + 295654882F8B37D434D08CA4C7226869967F7CA6143D9A1320911C305C5EC65F + 140F8713E0B9368C3535F5E4D069D7F9E53DB0EF38D526291BFB8DCAFD603090 + B0C3257DB7A79474660534BF12C0884A81C9844056988C7824A24168D283FDDE + AB472F7FD17164E52EB3B77D7C1FCF291EB9F8613D8F84D656F3B95D25A83927 + E076488375051498440C825E5178568399D0ED9F3DD7475CE35FB97D2B01B627 + 3EB218154B405E570D160B05AD2D52DF4E1BDA97133039A3427AD714EA0D33EA + 907455A169350E40BA075EB37CBA12B0A9ADEF1E91C9BF251557C1462B03CEAD + E25BED65E8705640E5013F9E5767F553A4014AA9A07700B4E43CA49271482EC4 + E7584172FD76A66E7039A0F2D9F35588CCFB49904BC1F1100F763B77F0390779 + 3C2BA0F11830E274805EF4037F3BD731F5428F757EF91FC7DEAFBB04B3ED6D82 + 12A0A9D1A4996554ED76D0C35901FF74D965B347BA6F725AD8F73D27592BD3B9 + 9DED66DF956B0B9547DB8489FF0450D171712F6750FA106D440F3EC0E9CBC39C + 7CBE266FFF5DDFA6D9CCDE71B98867F02F2C5F50C43024EC6C312646C763F6E3 + 9DD28D5503CADB7F1568160D7086C27A8AD42FB97A51CDB75087DD0EAA373DBE + 6A40C5FEB10F395674CB324B6C731A4010D09B7E0FF56ACFD34462D580C70E85 + 369BCC7874730987CB4AD9D1C980FAFA0BDBD9CF97C7AC0AE03C3423EDDA2D9C + 5414FADCAD089CEDAE20FE58199313B016B6E6803F0192C0D6E065D4DD9D0000 + 000049454E44AE426082} + Name = 'PngImage13' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A0000053A4944415478DA + AD956B50546518C79F73CE2ECB5ED9B3ECB22C48800A02CA45101BBCA005D9D4 + 4C17758C6FD57899FAE0D4871AB3CC6B5FD2748CA91877600AB3A949CA4427E3 + A65C1409729565B92CEEB2807B935DD80BECB2B773F6F4420A5841493D33E7D3 + 7BDEDFEF39FFF799F760F058C5601F2BAB443E079B0C077DF250304086432117 + CDC6AD3EA77FACAC6CAF77EAA5B93BB07F8B3EFD55A37872CC95C7E5725E6671 + 584F4570D871188E7182815068D2E3354E38DC17273C8E2B9DC33A4D735599E7 + B10495E76FC63B6CCED7F8A4708F58267A429620C5C4B1628C601310F006C06E + 1A656CF7ECA151B3ADDB366256EA07BB2EFEF4CD19FBF427FF13FCA4F29214A3 + 88BD9218F2CDB4DCA531B1F1122C40B0C11B02A0C37F74C822502A011F63EA37 + 33BACEBB8377BBD5A75B9B7EF956A3B9E15C50B063C77922AF20622B29979CC8 + 29484D4C7F428647E038DCF703BC70E826681A34F0F9B15720398F0452C0000F + 0FC1B0C640AB9A3ABA55ED8DEFFD5C5D797541C1A7E5D5F2E024766C59CEB29D + F96B5388380E0BC351CFEE2040E187B3024516096C1680044958FE71467D4D1D + AAABAE52B65D6F38BAA0E0E8890B05B21871E5AAC28C94D8043926A601F80480 + 651260DB47B382F47C12BC14008ED6A2793458D4FDE196CBB53D576BBE7B635E + C1543C2B32A8ED4B33932A5617670929161F761EB9396F330F6519EB49A06C56 + 4655D3EA3A5B7162DF0282C3112969A9AFA7E7A794E61467478E072360FD66E5 + CC7A6671E634746E4D0956AD2301BC4EE8ACFDD5AF2C3DF2C9BC824D9B0EB30A + 3624EF589EBDBC3CB7389B1F2004A06A76CEAC2B5BFA66BA9E5B1B3693601DB6 + 30B7EB5B3D155F1C2B5DF00C0E1CAE2C8C8E8B399BFB744EA2302E16333B3020 + D08E680EC09EE3B367B0BD98041A4D2A9A5AF08469E8EAE8635A2E5D19BCF07D + D9A90505EF1CA84814F1F92757ADCFDC96929F8A8F4DA2F9F7014421C1C62DCA + 9958B622C154518866754E80A6454D55559EA96F69AA3E3EAF40B57FCB726D50 + C0D2466DD9268D4F7C376B6396589A28C7EC1E0218344D7DEDB371BD84040CC6 + 80C31F64746A1DEABECE5873F9EBB33A9DFAB3BF15B41F78A690C7659A3D9152 + D044AE8500AE08B1F83266C593692C91428A071836BA0470E0A2B1E4A10747E1 + 38C6BD8C65C014EEBCFE9BA3B1EEC7DAB6EB57CA298A6AFB8BA0637FF18B3C11 + 5D91B03A534684ECA0712583C61D0316271EE408E4DEA495295162B904E39242 + 60B1D998DFE367D04507F6210BD577476DBD73BBF9467B5BED799FC7D38470EE + 47041D1F146D1788C22715B9EB92843C0A5CDA4EE8B708A163221E8C7E4269F3 + B0FB2339FC2269AC224D1EAF904444B2591E97276C1A1A720E1B740383035DB7 + 7A7B54F5341DB88D702E987BD94D752E10D3A58ABC8D4922AE7F1A6E30B2C130 + 26048DD50A23E38EE7CBEB354D19196B93A3158A748C2696D1B43F0AC5002EF7 + 98C334ACEFF47ADD030835821EDF432EF630733E9FFA217ECD3A998817828981 + 2ED0E93130B824A0350D41B7590F6E7FF0B9BA2E67CD833DE8E6017410403CE0 + 4C4D68706A90E0CF3F1CD5C1E2A24801D1B0243707F85C149AF60E188609E877 + 4483D6A8875E8BDEE5F4516F35F6B8CEC1220AEB39FE2CB3247B25F0055C14CB + 2D1834B2C0E010836678007AAD7ABBCB1B3C78AD775CB918F8B4A0FE5409B366 + 752A50860E1832A1CC4705A0351B416DEC7721F8FBD7FAC6CF2C163E2D38B4EF + 6D2647781F12682F82F3A0CF6C821EF3008C7A03AF2E36964704BB77EF629688 + F9407A6CE01CB987E006704FFA76D575BBBFFCAFF06941494949915020688811 + F1E15E4F2BD82CFA5D63DDEE732A80D0FF21F81D69327688E78891A000000000 + 49454E44AE426082} + Name = 'PngImage14' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A000005234944415478DA + AD956B4C53671880DF7329BD9CB6B4A5174A454005112F205E16DCD46C3097ED + C7B2690CFFB665BAE80FB3FDD8E2DC8C739AFD984EE3C8326203D9702E5B069B + 139D8E9B82283299454AB9147B81DA9BB4D00BB4F476DAB3AF80896E02D3ED24 + 5F4E4ECEF99EE7FDDEEF7DBF83C1135D0CF6B9BA4E18F2B0C4896848118B46C4 + 8958CC1767E1CE90373C5E59B92F98FCE8E119D8BF459FFAB6553435EE5BC7E5 + B25F23D9E4F3296C56068663EC6824169B0A04AD931EFFF9C980E7728FC5A0BB + 5657197822414DED4D95C7E57D93120BDE11C9848B6599524C942EC208160191 + 6004DCB631C675CF1D1BB3BBFA5CA376B571B8F7FCAFDF9F764F2F7921F809F5 + 05294613FB2472F1DEFCE225F27495048B102C08C600E2899908490265251262 + 6C4376C6D07377F86E9FF65447DBEF3FE87437BCF30A76EEAC25D695A4BC2E56 + 488E1795E465AD582CC353701CEE870106BD00D1F84C0E481C40CC678087C7C0 + A233C7356D5D7D9A5BAD1F5EAAAFB932AFE0CBAA7A45740A3BBAB468E9DB1B36 + E612196C12C311D11F05E81E07F044101F9B192C12408224647882D15ED5C69A + EAEBD49DD75B8ECC2B3872FC5C894C2EAA59B5A520373D53818950C41401E098 + 0218F2CD940B8F35B38A200D80A37769BC3838B44389F68B8DFD571A7EDC33A7 + 20999EE505F48E25ABB3ABD796AD11D024056EEFC2BBC6E502D02E27A369E8F0 + 9DA93EBE7F1EC1E194DCFCBCB7566CC8AD282A2BE44C445360EF6737E704EB5A + 7470E9B73D4071D043D00B3D8D7F84D5159F7E31A760EBD6C364C973393B9715 + 2EAB2A2E2BA422041F4AB6AAE78D3E295009019C1607D3DDDC11A8FEFA68C5BC + 0B3E78B8664B5A86FC4CF10B4559828C74ECBE77E1B6C9498D436FD720D37EE1 + F2F0B99F2A4FCE3BE3FD83D559428A3AB1EAD9D5DB7337E4E1E353A8FE4300A9 + 6C00394A059B98ED83590A8DEE4EEF24E8DAB5745DCDE9E6F6B6FA63730A3407 + B62DD347F9A43E75DB76A92AEB83359BD788A4590ACC1D208041D5244896650A + 2A4FD4033896DC7C063CE12863D01A50F44DD6868BDF9D3118B45F3D5670EBE0 + 8B5B785CE65A8023051D67234470658CA464CCF267F249A1528A4718549B0C0E + 5CB4021E1A3824C03311641C265BA2E7FA9F9ED6A65F1A3BAF5FAEA269BAF31F + 82AE0365AFF284F1EACCB5AB6544CC0D3A5F0EE8FC727078F1289BAF0866AFCC + 4D15292418572C0092C5C2C28130830E3A708F38E8C13B5AE79DEE6B376E7536 + D68602813684F33F22E8FAB874075F9838A12CDE942DE0D1E0D3F7C09043005D + 932AB08609B52BC01AE2B0A95269BA325FA1524A52382C32E00B246C23235E8B + D9601A36F5DE1EE8D734C7E3916E8443ADF850DB2423E78BE215CA759BB385DC + F034DC6C6581795C003AA71346273CAF5435EBDA0A0A36E6A429952BB038B134 + 1E0FA7A23480CF3FEEB1598C3DC1A0DF8450A368841E70B10739A728FA67D5FA + 4D32212F0693A65E30183130FB24A0B78D409FDD08FE70F4E5A65E6FC3EC1CB4 + C5903C2488590E3A57219A2C24F8FB0F4773A8AC94C3275A1615170185DADCAF + BF03660B01439E34D05B8D30E030FABC21FADDD67EDFD9059BE03117D67FEC25 + 6651E14AA0F85C9496DB306C25C1EC1181CE628201A7D1ED0B460F5D1D98503F + 0D7C5AD07CB29C59BF360F6873178CD850CEC7F8A0B75B416B1DF221F8475707 + 274E3F2D7C5AF0C9FEF79822C17DC88C07119C0783761BF4DB4D30168CBCF1B4 + 697944B07BF72E6691880271C005DED17B086E06FF546857539FFF9BFF0A9F16 + 949797970AF8FC16B990827BFD1DE07218778DF7F9CF6A0062FF87E02F9F6855 + 88E7298D620000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A000005A34944415478DA + 8D960B50546514C7CFBDFB625958DC455049C8074A3C44B490C67C8C5A098A8E + 8E61A0E68C363A4C884C5A3E7240D1F1C13496A58E634FCD0AABC9416DB29C18 + D9626C542052234904158170A10576F7DEBBDF7D75BEBB0B3E82F49BF9CF7767 + F7DCFFEF7CCF731918B8E950C1283B6AB8D96C8C62F5AC4994149EF0A4197F6B + 4575A13894D29F81AAAAC00C601EA6D3416A5090F9F9509B65AA2D3C74C490E8 + C121C19620D6E316E4F616678FCBD973C3E5723B445E2CC7F81A94F7710034EB + B17ABD7E516C42744E424AECA8F8F1234D23C63CC10C8D8900539001BC5E1E5A + 6EFD0DF57537D53F6A1BF9FADAC66B6D8D1DC7144529C3776F51DF8100D43CCD + 1E11B626754A52C69CACA9831252464358B815581DA305CB8A028AAA804F26E0 + 1638686DBBAB5EB9F417549EAA71D6573595096E72103DAEF442EE07B0A8F1B6 + 48EB96CC97A6A72F58362B3866F43046A763FBD2A1C6C5F90ED8F8EEB3C0893C + 78509C28809BF74243FD6DF5E7D2AA9ECB3F5DFF9678C91E0C6FF0FBDF034418 + 0CBA4DF397CE5CBD7CCD7C4B544C24A36391C930BDB940D19A735AE0EB7B9F06 + 0FE1347935103EFB38B8D3D0AE3A3EAD72D59737BD8361FB513DBD0093C1C02E + 9B38257157DE9625914F258F445F06588645E1D46048515E399C2E3D08F372F2 + 20B7244933778B5EF05210422888230234D5DC81F3876B9B3AEA5DEBD1F73402 + 240A181E3ED476287BD5EC3959AFA6B366B34903E8581DF66C9F396D14B0724F + 3CB87D1E70138F96B936020471124E57B7176A8F5F93AE7F7FFB33C9236D4440 + 07CE33A4C7A5C41ECDDF9A13999C1AA7654DB3A7806DF9157DE6BD80FE5AD4AA + 0EE071148244A0F9421B5C3DD2D0E469E65620C0C1982C86E21973D336BF5698 + 6D1844774C20FB9D05950F98D31D24490A88921C90FF39B7E02DB0AF6C418080 + 001F74B5F640DD478DA2EBF79E4259944B98109BE5544E6E46E6E2D5E98CDEA0 + 031617F7ED75171ECB9C2A7F7D21985FB901BCE407705E011A4BEFA8CE739D47 + 245E59C9D822C2AAF28AB3274E9FFB0C43E77EDF869AC736F71109DED85C0CCC + 92BAC0088876465ACF38D5B613CE5F658FFC1C631F32A8A660D7D209A93393B4 + 1D7968F3953E407FA6D243CF9B0A77009F558D009F66EE9345E83CD705EDDF74 + D6CA6E790263B5592A96AD9B37EDC5ECC98C04321045842FB7DE8413C7DE7FA4 + 39ED0B8B77C13F0BCE6BD3A3017C22749C76A9DD673DD58AA0A432C1A1410766 + 2C9A949BB576B60E8218201844213FEC76C1E71FEEFD5F73AAED3B4BA0655E05 + F81040307BA18B40676997CAFF269C54457521C31AD8E58993461F78796346A8 + 2DC61A18A61F72699F0A1FECDFDD6758F06651BFDBB431E34704F8DFE11A04E8 + FECACD49B7E5125556B7D383161F1963FB62F6EA2929492FC4323E55BC079125 + 683C6C85F7DEDEAE01E8822AD957B5E9E051DAB468BDDF5CC445F73838953B2B + FCA276AB5BF01C545240A8C1ACDB903C2B6EFDF455A966A3DD0082ECD3168B42 + 44EC5D47A361CF8E426D41DD8B2EF6ED169A756FE634195F1B016F19D72DD5C9 + 5B41828F11E0E9BDECE22DB6A092B4A5E3D3C7A63FA9978D0AC35388F6B27F67 + E8BF4ED602DB321D81D1899A4445F2F76E51E52A0442CAC5E340A010439BEFBF + 4D8DA8CCC1636D45E316C4260E993458279914C6171809096CBFF09393E166C6 + 59CDD01730A72324682E54119138C845F52E6C432F074A7AB8E0846255586C1F + 655D1B3D6D5842449A5DCFD870573DB026FE7511E994507311FF6B2720541322 + 568BD56A3BD0ABFA3B943050C9B4A266996C8615F6C4B099D6849060D3082303 + 363CD1264583116AEA45E05DEC9B7C2AA9177BA4EBF2192CFD9FE0BB9528FE51 + 45DF801AC31AD9857AAB3ED318AE8F3344E843749178EF5A8021DDA24ADA4549 + 724A3DB24BF95375AB65B8A02703F5587A54D1EF6DF477FAC91285953A99D1C3 + 38303276BC074D8A0CBC4A54271EFACBA8AB18D30EFE4F97FF340AF8172272E4 + FE66E507F40000000049454E44AE426082} + Name = 'PngImage16' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A000005A14944415478DA + 8D960B50546514C7CFBD771FC0C2E22E026A8A2F140145B490C65047AC0445D3 + F111A463A38DE608CA949A1A83864C2AD5E8543A4D33659AD360E3E8A036D958 + 069B943D80C8576E12A8BCC28559D8C7DDBBDF7D75BECB2EBE60F49BF9CFBD77 + F7DCFFEF7CE77B5D06066E1C2A0C65450D0F0D350C6375AC5194141FF19166FC + AD0DD58DE2514A7F06AAAA0233807924C7415A4848E8F31116D30C4B54C4A8D8 + 1183C3C34C21ACC72DC81DAD0E97D3E1FAD7E974DB449F7801E3EB50DE2701D0 + ACC7EB74BA25F14923F29252E3C7244E1E6D1C35EE2966485C341843F4E0F5FA + A0F5F67F60BF7E4BBD56DFE8B3D737DE686FEC3CA6284A05BE7B9BFA0E04A0E6 + E9D6E8C882B48C89D9F396CD1894943A1622A3CCC0728C162C2B0A28AA027E99 + 805BE0A1ADFDAE7AE58F7FA0FA4C9DC35ED35421B8C921F4B81284DC0F605193 + 2D31E6A29CA5B3B216AD9C1316377628C3716C5F3AD4B864A30DB61D781678D1 + 071E142F0AE0F679A1C17E47FDA9BCC675F9879B278997ECC3F0865EFF7B8068 + BD9EDBBE7045E6BA55050B4DC3E262188E4526C30473D12EBB0A2AB5E0B57B13 + C14378F06A201E3C7E1E5A1A3A54DB17354EFB85A6FD18F231CA150418F57A76 + E5D48CE43DF945AFC44C48198DBE0CB00C8BC2D260888A5192224169810DCE96 + 1F820579F9F0D2CE58F02284F68482782240535D0BFCF2697D53A7DDB9197DCF + 2240A280E151432C9FE4AE9D3B6FD96B596C68A85103702C87572C11CB8084CF + 7E4584F736546900DA2824638BB1B70708E2252C578F17EA8FDF906E7E7BE74B + C9236D434027D619B21252E38F6EDC9517939296A0654DB32F2DBCD8EFFCA500 + 3AD892A4C0D2570B21219F0737027CD80B4122D0FC5B3B5C3DD2D0E469E65723 + C0C6184DFA92D9F3D3776C28CED50FA2332690FDBB85D57DD9DEDF82E6A2246B + 5AF5FA56B0AE69458080003F74B7B9E0FA678DA2F32F57B12CCA654CB8C57426 + 6F7D76CEF275598C4ECF01CBB25A0FCADEB8F408E061733170BFBEF06D80BC6B + 1A80F70AD058DEA23A2ABB8E483E650D63898EACC92FC99D3A6BFE338C36B808 + A0A37F606BED038081CCA9FC44822D3B4AA07BF1AFDA1A693BE750DB4F392EC9 + 1EF939C61A3BA8AE70CF8A29699913B5A9884B09449C31878BEC7D80FE4CA587 + EEB7179742FB822A0488D055D90D1D27BAEA65B73C85315B4C552BDF5C30F3C5 + DCE98C0432109C2DA22CC189DD2D1AE049CDDB722AB5ECFD7E113ACF3AD59EF3 + 9E5A4550D298B0889083B3974C5BBF6CD35C0E421820184421DFED75C2A9631F + 3D91792BCD1CEB4F307BA19B405779B7EAFB5338AD8AEA6286D5B3AB92A78D3D + F8F2B6EC084B9CB9370BD4CFFB49BFD3F4C3F7773F98399AD3C1F54BBD89F10D + 02F47CEDE6A53B72992AABBBE9424B8C89B37C35775D46EAC417E219BF2AF641 + 08968ABE4402CF3D4747C2077B77DDCB9C9605CD8580B98883EDB1F12A7F5EB8 + A8F6A8453859AA2920421FCABD95322761F3ACB569A106AB1E04D9AF0D163515 + E5205004B97C02EC2B2DD6CC5B727ED4B20E664E93F1B713F056F03DD27519B3 + 80CF11E0096E7689264B4859FA8AC959E3B346EA6483C2F8E460B77BCD697DC3 + 4E3EAD05DFCAFE5E7BA6A2334EBBBA4595AF1208B9201E0702C518D67CFF6E6A + 40E50C1E6FD93969517C72ECB4C19C6454187FA02724D083A8D3D3D1FCBC66E8 + 0F98D31E1234176A88486CE477F52EBC835E3694F4F0811381A7C272EB18F3A6 + 1133872645A75B758C0567D50363D23B2E222D093517F1BF0E02422D2162AD58 + AB7600DDAABF4109031D9966D41CA345BFDA9A1C99694E0A0F338E323060C195 + 6C543418A1A65E04DEC56B935F2576D125DD94CFE1D17F18DFAD46F91E77E8EB + 51E35803BB5867D6E518A27409FA685D381783FBAE0918D223AAA443942487E4 + 929DCADFAA5BADC0013D1D388FA5C71DFAC1467FA79F2CC3F0A44E617430090C + 8C15B729A322834F25AA0317FD65D4558CE980DE4F97471A05FC0F622CD6FE88 + 2F15D20000000049454E44AE426082} + Name = 'PngImage15' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002814944415478DA + 63FCFFFF3F032D0123C8822F5C7FFED767DC625876E301458645692830B0B2FF + 67E8ECD06184391CCC282EBAF6DFC7478B21AA671BC3F36D5E040DFAF3E71FC3 + EFBF7F19FEFDFB0F66FF01B275A20E32AC28E766F0F2F26250538B63387F7E3A + 235E0B3AD73F25CAD571D6BC60DA28E108C3A783A160365116E07339C4D540FC + 07C1364B3EC6D0E0AFCDF0EBD72F8679F3FA48B7009FE1206C957682A1CA5395 + E1E7AFDF0C4B974CA65E10051AB28169FBACD30CC5CE0A401FFC6658BD6A06F1 + 3E20E4F2DF50BE73DE59862C2B09A0057F18B66C9E4F9C05C41A0E4A45EE8517 + 18524C44C03ED8B573097E0B40C9AF7BE333A282C8550D92DEBD4B2F31C4E9F1 + 03E3E017C3C1FDAB705BF0748B2786EB103EC04CFF3039FF8A2B0CE11A9C601F + 1C3FBA1EB7050F37BAE3351C3DB8FE41732CC882402516B005674F6FC16E0138 + BB032D2107C00C07E583CB1777E1B6E02FD07520853F7FFE82D0504DE86C506A + 8188C1F81039909A5BD7F763B7006678754D0159BE5056B303EB7FFCE038A605 + 6E6EC05CF813E292D6B60A9002AC86FCFEF593E1F7CF9F0CBF8018C4CE2E3A0A + 16BF7DF30083AC822558FFCB6767302DB0B757807BB3BBA70E6C0137373758B3 + 868605C3D9B37B310CFFF3FB17437EF969B805E252266033DEBFB9886981A5A5 + 343C0C274D6A065B2025A5C42029A9C8A0AB6BCD307B563586E1BF81EA4B6A2F + C22D1014D107B3B15A606C2C0A8DC4DF0C336674802D303676061BAEA666C450 + 90EB8461F81F20AE68BE4E9C053ABA02F0208216B70C09097560C385852519C2 + 8395300C07D1B59D77095BC0C8C8C8505478F5BF82222B72718B35CC910DFF07 + CC78F53D0F88B300040C0C32A8D202B87061066A9D4C4B40730B0038C31BFE85 + 5838D40000000049454E44AE426082} + Name = 'PngImage17' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000026D4944415478DA + B5966D48535118C7FF138A455F84588C0A7A27AA1163CDB69168929851CB5806 + 81D5878A7C29412428484264A85006814342E805112DE8436F94F43E74393775 + ABC1552C87B5EA6286B7B01AB4BBD3CE8D0DC57976B7D9038773B8F79CDFEF9C + F33C17AE821082FF198AE982F607CE946C4DCD3731D8D5A2A063FFDA73E4C9FB + 469C8CB0E30A4AF61A928247D660F9D225A8BE7019366F0B0CD595C8186B43AB + 4D9024F322D06E5C8521F75D2CAB2A85E94026E010C00533D1CD09E99D4014C3 + E87CE482F2A717D93B8A305AA381A97F4282D3484B40E1A248F0BAE33486825A + 188D464C0A5FF1A3AA002A9EC0C7837D457957C7124A6A958DD896AF4146C08D + 1B1E23D46A35789E87D56A452010483EC9244C20465A28B27B6767650CFEE5D7 + 38BE8F7F46AF5026C1559BCDB1AA922D48040F0A1E145B57E06C7D2BAEB5DF4B + 4E20176E7778F0F0A54B9E205E0EA6DF793C38DDC463BB5BFE0992D97974DED3 + 9E01798254E0B4745FF47A120BA2354EFB70E47D435D09FE902294177630E1B4 + D95D6FD88243BBB324F8AEEB01E95959A8166F3F4E4137F509CEC515B0AC3922 + C1D7D574CFC8CF95DC050885C370F4FBD88283057A69277432ED2FD51FC5999C + 85F03FE7E00F2A71E7C322D435DF8A9D303A2F3A767939B6C0B253175BD4D556 + 0197E3154EE95663D0FF1B8E491EE50D7D73C2693FE01B660BF6E569638B8E9F + 3886D1110E2B5504872D7AE8CD179970DABCDC085BB027678B34B1F8F604BED9 + CC385FBA1586FD4D33123F179C26DC37FC8E2D28DCAE99B5482E9C464241BE69 + 53CA705982DCAC0DFFEA5F24B36A9C7E132CB82C41B66E3DEE3FEB433AC114D0 + 3F84F988A8E02F75743575B8E251160000000049454E44AE426082} + Name = 'PngImage18' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300004E2000004E2001167D99DE000004124944415478DA + ED955F4C5B551CC77FF7DEFE61D0C204D7758139C15684752C1A565A47D7A983 + 1664449D75337301A7D68D8CBD69F4C11463627858427C30DD8B3A0C8B0FBA10 + 71B8F247470706A6996E93617173C060A56D645DD7526EDBDB7BBCE75E6F2D5A + 46E2E29BBFE4E49ED3F33DDFCFEFFCEE39B7044208FECB20FE07AC0A584DE070 + 38C889EB011345C1101EC798786D77D747DF72DDE46A6B1B0F1E54DE1560B7DB + A57136DB4033B17373FEB9BF262872978F898D5C73B9622B257EB4ED83B1C0B4 + 47BF1280B0B6B6CAD4892C3D4D477873868DD76C543D90A028C9101E47A34BC6 + 1FDD83639916DB6C2D0A2A0785B12E1380686A72C8C91CBA72297A67188B9289 + 64C3E8E0D7BD78D2F4F4B3FB11CB7431887D6ECCD5DB9D09A0B75A7365843494 + E91D70E64D9C790167BEC49B2340F5DF9D397D46D41A6BEA9EA024926F922C6B + 1DEDEBEDCB08D07380827F02083367AE55AAB64522425908966818EEEBE94D5F + BCD56C5EAB9428F2C38CE4D625F797B733012A6A5ECAC9958422CB00369B4D26 + 55AE33B02C72AF64FEA75E3CD724D7D88C6F903B79DBCF9FD7138474940798CD + 6689BAB8CC4800C1671EA7A36F2A08E4CECB96215A921752057D373ADDEE789A + 21A1D168642A5561194B4AF3280449890480610072D7150402B3D7A62E9494B0 + D5119AC100E285A6D71F27097224533233F3334E85E2FEAF064E7DDA2F663F57 + 21DC01DB867AE7A60D9B0EA7EBF3E6273EFB708DFF45DF758F90C9AB47DE30E1 + 9AE3C191B60EB82F0B204803F8170166C3003FCF0661F2633B042309CB956117 + BE60E83897EC6B4E07CC3BDF85503F9DD2FB16A2606F7F14C8DDCDFCDCE9CB1C + 605FF361249A57AA01BC11A189001C18E27ABB06D6CA91B574F3634959B66260 + E709278890E91E9AD737BE550E64FD81947957DD6E200A353A64AA36C13BED1D + B086ABE312B37C0738A83B32686FA900AC1303EB87D5592988BAA41408CBBE94 + F97B1A9D50226EA272E78E277FC03B102314135A20BA1C50AC2DE6C745EB8B40 + D48F3F9805AF580BF9BEDF7B93374FF4B3BC9E8E45B711566BABBCD4A81D2CB6 + D8AB372A05C3585200E02736BF18F2C36F278F7AC747CFD9755BB630EA22ADCB + 70A803B05E1EFE1D2C6D55BC398EEE636C4A3FF4D3F70FF1C7B4EE99BD0F8763 + D1C9E71D9F839CE2DE605096DA0D16E3FADF0E069F5A5CB839525E5E0E1ACD23 + 86ECFCF56EA3FD18B4BCBF19FC37A6F9CCF14E30A82AAA033A112F5B98F9D593 + BA6886DA5A4DD5F6864F2E8C0D544F5D9D4A01B4BA32EFA4E76AF3BCE762FA27 + 9AB4ECDDBFE340E897B37B923EE81CF0420F57B646EE0E8990A2CBC2255EF5FF + 60A548580BF7708F2FB0399344CD87003AF1EFDC1146E9907B01A0D1F1004CCC + 254E70E62FA7CFA543FE3560726B3E3A7BE916EE2A38C0E2DFE731A4A1E21E4A + 745CF86CE838F32B77D3FC01CF05F8A9B438C37F0000000049454E44AE426082} + Name = 'PngImage19' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001B74944415478DA + B5943D2C044114C7DF6A5CA150894204052AD14B7C14D7701D9D44EB4A854434 + BE3A89E28A0BD128080DA7388ABB444E88904B705710111FA5467D91DB9D9D31 + 6F6677CFB9B998DD75AFD8F9DCFF6FDEBCFDAFC118834686810063BB3CC9FB47 + 8AF52988475241C585B6036089C1DA0D7345FE88478C7F030841FF5137CB0A60 + F5395C2156FA95597A80D3F377161BEBF953C7223694BE4C20361563D324109B + 598442762B3800D75110C54DCB167D14C638CEDEC0CE7E3A3800D76C14E4E284 + C81641160761A4CFF2C100388745213617B628942DC2019801952D9180ECE55D + 30804D2950CAE0F0D586E98BDAFA27064A106D3321775DD4074C8C763B93F2E4 + 16BF92965D06F5FC5118FE84ABDB077DC0F88804C8821271E7AD074D10C61F6C + B639E501A2439D62567E2D4464D09EFC08A4EC65B0DC6754D520B997A9DAD0D5 + D10B61FC719FD9AC0096D6376A5E5C5B988730FEF00086A1FE9F9DE4DE42F9C3 + 37C0AF3F7C035C7FE049F1C41240C518A1652703D71F5A00953F4C47D86BC555 + 71805303D71F5A00953F4C2703B7B5BCB104E48B4FFA00953F7E9E5C05283EBE + F8ABC16F7FE8843640E50FDDF0008D8C6F397A5EEFE9EAF0950000000049454E + 44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000018C4944415478DA + 63FCFFFF3F032D01E3A8054459C0C8C8C860E091F0FFC28E058C843490AA8E3E + 16187A26D22C9C864910812CA079102DD87000251E40E23F7FFE62F8F90B827F + C0D8405A47439528753D15A98C2816C4FBDBA3D8FEFBCF5F08FEFD17CEEE98B1 + 9461626D1651EA26D565E3B6009BA64BB75E306CD8B183617A733E51EA66B414 + 60B7009BA6DF7FFE315CBFF78A61F9860D0C0BBACB8952B7B0A70261C1FCF5FB + FF270438E0D404A2EF3C7ACB307FC54A861593EB8852B7724A3DC282192B76FE + 4F0A76C6A9E91750ECD1F30F0CD3162C625833BD8928759BE6B4212C98B868F3 + FF9450379C9A40F8C59BCF0C7D336633AC9FDD4694BA5D4B7A111674CD59FB3F + 2DCC13A7A65FBFFF30BCFBF89DA175E21486CD73BB88527778F51484054D5397 + FFCF8CF4C1A9E9D7AFBF0C5FBEFF62A8EDEC61D8B6B09F2875A737CF415850DD + BFF07F76B43F3889E103152D1D0CDB164D204A1D4A5151D231FBFF2F600EFCF5 + EB37C3F71F3F187EFCF809A47F42E89F20FA0730DCFF8035DB599912A50E6E01 + 2DC1D0B7000029AD9AF9DFD03E1F0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001684944415478DA + 63FCFFFF3F032D0123B2054BB79C24CBB6DE290B19CEEF9CCE882C063317C382 + 681F73920C07EA619016136628AAEB43B184AA1618682A30BC7EFB19C512AA58 + F0F7EF3F8615DB4F33D818AB337CF9F613C5128A2D0019FEF7EF7F86D5BBCE30 + 38596833FCFAFD07C592733BA6319265C1FF7FFF19FE02F11FA00520F6BABDE7 + C0918C0EC8B200D9F0BF50FCE7DF3F8623E71F307CFDF695E1EDDBB76075F396 + 6E22DD025C86A3B337EF3D45BA05C41AFE0F18275B0F9C26CD02520C07A9DB71 + E80CF116906A3848DD9EA3E788B3801CC341FCFD272E10B60096C6C106FCFF4F + B4E1207CE8F425FC1644789AC20DC7662818FFFB8FD311C7CE5EC16F41A89B09 + 4986A3AB3B7DF13A7E0B829C8DC8361C449FBB7213BF057E8E06641B0EC217AF + DFC66F81B79D1ED98683D45DB97907BF051ED63A641B0E02042D70B1D422DB70 + A22CB03755C799C6B1E50964C389B2C0C648155C225202F05A80ADF22007C02C + 0000E2A9A9FE0847986E0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000003034944415478DA + ADD46F4813611C07F0EF392446538B289908A6537314FE4926362B933433536C + 1619F52202A1DEF8C250DF0596BD890489CC28EA456064E6D49588A583569BF8 + 27752ACE7F399550D3B09C9BD23677DD5DDD799BCBCCF983C1EE9EBBEFE7F9F1 + DCF31035EFF424D6A9EC9428021E1441038AE448B783CAE65E94DC7D88EEA68A + 4D23FF040E458720FD52E15F11694E9DD9F0224BF45F80328480628CE43A60CB + 15397051B564B5DA85C3D50A62C380512E86509E0E9DF2094E196CB0DAECD46F + 05272E1438017478464AB4B04AD58E31E5D98D016C388C6AE65AD76D4442BB09 + D58D5A3CAD5471001B1E112AC6B36AAD616CE29B3F4992361F91B0746864BADE + DA9E3BBC06700D678B46A68A1B39801FCEAF51E31C6A1A3E59C627E7066DB695 + F3B68EDCCF1C107323D56D381F2909BF06EBAE93665954B0282941CA8DD9571C + 004960D1628379C98EAA5A5D7DBF61E2384922103D57179C3B100BDD86F33B08 + CAA8215393A48E84B8302F7ABCB85485A3F15248820360595E81D962EFB9FFA8 + 76861A7A4301E50C9091B89F59C8D9E42027840E0F69F8828F9D7D4E6B4023FB + C2F62C9F498B1516DDAAC64E3FD1A240E0253A228F2604DEDBF0AA565D643299 + 6514708E0152E511DCD7B29419CE206CF84FEA7E87DEE004B088404058A6BFFE + D8BEDC7A85F0963D9644848B151249C49DE1D1C9DB0303C3E91410C30049B250 + 269C45F4C77673E1D4770EBD618403F8474BFEBD51CCCC7EC7F31219D77561B9 + 11FE01C1953A5D6B3605089917E22383A06C6AC57AC507F8FB666FA612E32A05 + 777DBD4C8BD71FE6313236050A209817F8BB75BD7207B856C5CB0E1494F5530B + 6EFD0D6C2899576E81852EC0EF201C0E1275EA3EDC2C7F0BFDB80F62FCF5F01C + A0C307F3A0516B1197BF7AB49CCE6B8275AE790B80B6C380AF96F93BD402ECC8 + 3131487D731BB36E9E017F66CF029A3A20F8F23CD341E3FBCE2D0078B3678BEE + C2913683165DB78780CBECD9A2BBF0CD5ADDFD9B02E8A3C5BB2B714D381FE90D + 6CF4A003991D9A07B1EB3EE711401F2D952ACD3F9FDD34B0D19D4FD72F7A80FE + E871245F980000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end> + Bitmap = {} + end + inherited GridPopupMenu: TPopupMenu + object N4: TMenuItem [8] + Caption = '-' + end + object Volcaradisco1: TMenuItem [9] + Action = actVolcarDisco + end + end +end diff --git a/Source/Modulos/Remesas de proveedor/Views/uEditorRemesasProveedor.pas b/Source/Modulos/Remesas de proveedor/Views/uEditorRemesasProveedor.pas new file mode 100644 index 00000000..358aadf7 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Views/uEditorRemesasProveedor.pas @@ -0,0 +1,196 @@ +unit uEditorRemesasProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorBase, ToolWin, ComCtrls, JvExControls, JvComponent, + JvNavigationPane, uViewRemesasProveedor, uBizRemesasProveedor, ActnList, DBActns, uViewGrid, + Menus, uDataModuleBase, ImgList, PngImageList, TB2Dock, TB2Toolbar, TBX, + TB2Item, StdActns, TB2ExtItems, TBXExtItems, TB2MRU, DB, uDADataTable, + JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, JvAppStorage, + JvAppRegistryStorage, JvFormPlacement, ExtCtrls, uCustomView, uViewBase, + uViewBarraSeleccion, pngimage, uIEditorRemesasProveedor, uEditorGridBase, + JvComponentBase, uViewGridBase, uRemesasProveedorController, JvExComCtrls, + JvStatusBar; + +type + TfEditorRemesasProveedor = class(TfEditorGridBase, IEditorRemesasProveedor) + actVolcarDisco: TAction; + TBXSeparatorItem17: TTBXSeparatorItem; + N4: TMenuItem; + Volcaradisco1: TMenuItem; + TBXSubmenuItem2: TTBXSubmenuItem; + TBXItem38: TTBXItem; + procedure FormShow(Sender: TObject); + procedure actVolcarDiscoExecute(Sender: TObject); + procedure actVolcarDiscoUpdate(Sender: TObject); + private + FRemesasProveedor: IBizRemesaProveedor; + FController : IRemesasProveedorController; + protected + function GetRemesasProveedor: IBizRemesaProveedor; + procedure SetRemesasProveedor(const Value: IBizRemesaProveedor); + function GetController : IRemesasProveedorController; virtual; + procedure SetController (const Value : IRemesasProveedorController); virtual; + + procedure NuevoInterno; override; + procedure EliminarInterno; override; + procedure ModificarInterno; override; + procedure PrevisualizarInterno; override; + procedure ImprimirInterno; override; + + + //Si queremos crear otra vista para el editor heredado solo tendriamos que + //sobreescribir este metodo + procedure AsignarVista; virtual; + + public + procedure PonerTitulos(const ATitulo: string = ''); override; + property RemesasProveedor: IBizRemesaProveedor read GetRemesasProveedor write SetRemesasProveedor; + property Controller : IRemesasProveedorController read GetController write SetController; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +uses + uCustomEditor, uDataModuleRemesasProveedor, uDataModuleUsuarios, + //uEditorRemesaProveedor, + uEditorDBBase, uBizFamilias, uFamiliasController, +// uBancaElectronicaController, + cxGrid, cxGridCustomTableView; //, uListaRemesasProveedor; + +{$R *.dfm} + +{ +****************************** TfEditorRemesasProveedor ******************************* +} +procedure TfEditorRemesasProveedor.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(ViewGrid) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(RemesasProveedor) then + raise Exception.Create('No hay ningún RemesaProveedor asignado'); + + RemesasProveedor.DataTable.Active := True; + ViewGrid.GotoFirst; +end; + +function TfEditorRemesasProveedor.GetRemesasProveedor: IBizRemesaProveedor; +begin + Result := FRemesasProveedor; +end; + +procedure TfEditorRemesasProveedor.ImprimirInterno; +begin +// inherited; + FController.Print(RemesasProveedor); +end; + +function TfEditorRemesasProveedor.GetController: IRemesasProveedorController; +begin + Result := FController; +end; + +procedure TfEditorRemesasProveedor.ModificarInterno; +begin + inherited; + FController.Ver(RemesasProveedor); +end; + +procedure TfEditorRemesasProveedor.NuevoInterno; +begin + inherited; + FController.Anadir(RemesasProveedor); + FController.Ver(RemesasProveedor); +end; + +procedure TfEditorRemesasProveedor.PonerTitulos(const ATitulo: string); +var + FTitulo : String; +begin + FTitulo := 'Lista de remesas de pago - ' + dmUsuarios.EmpresaActual.NOMBRE; + inherited PonerTitulos(FTitulo); +end; + +procedure TfEditorRemesasProveedor.PrevisualizarInterno; +begin +// inherited; + FController.Preview(RemesasProveedor); +end; + +procedure TfEditorRemesasProveedor.SetRemesasProveedor(const Value: IBizRemesaProveedor); +begin + FRemesasProveedor := Value; + dsDataTable.DataTable := FRemesasProveedor.DataTable; + if Assigned(ViewGrid) then + (ViewGrid as IViewRemesasProveedor).RemesasProveedor := RemesasProveedor; +end; + +procedure TfEditorRemesasProveedor.SetController(const Value: IRemesasProveedorController); +begin + FController := Value; +end; + +destructor TfEditorRemesasProveedor.Destroy; +begin + FRemesasProveedor := NIL; + FController := NIl; + inherited; +end; + +procedure TfEditorRemesasProveedor.EliminarInterno; +begin + if (Application.MessageBox('¿Desea borrar esta remesa de pago?', 'Atención', MB_YESNO) = IDYES) then + begin + inherited; + //Para que en el caso de no poderse realizar la operación se refresquen + //los datos y no nos permita eliminar un registro a la segunda + if not FController.Eliminar(RemesasProveedor) then + actRefrescar.Execute; + end; +end; + +procedure TfEditorRemesasProveedor.actVolcarDiscoExecute(Sender: TObject); +//var +// ABancaController : IBancaElectronicaController; +begin +// inherited; +// ABancaController := TBancaElectronicaController.Create; +// try +// ABancaController.GenerarFicheroNorma19(FRemesasProveedor.ID); +// finally +// ABancaController := NIL; +// end; +end; + +procedure TfEditorRemesasProveedor.actVolcarDiscoUpdate(Sender: TObject); +begin + inherited; +{ + if HayDatos and Assigned(ViewGrid) then + (Sender as TAction).Enabled := not (dsDataTable.DataTable.State in dsEditModes) + and not ViewGrid.IsEmpty + else + (Sender as TAction).Enabled := False; +} +end; + +procedure TfEditorRemesasProveedor.AsignarVista; +begin + ViewGrid := CreateView(TfrViewRemesasProveedor) as IViewRemesasProveedor; +end; + +constructor TfEditorRemesasProveedor.Create(AOwner: TComponent); +begin + inherited; + AsignarVista; +end; + +end. + diff --git a/Source/Modulos/Remesas de proveedor/Views/uRemesasProveedorViewRegister.pas b/Source/Modulos/Remesas de proveedor/Views/uRemesasProveedorViewRegister.pas new file mode 100644 index 00000000..2d361ee5 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Views/uRemesasProveedorViewRegister.pas @@ -0,0 +1,27 @@ +unit uRemesasProveedorViewRegister; + +interface + +procedure RegisterViews; +procedure UnregisterViews; + +implementation + +uses + uEditorRegistryUtils, uEditorRemesasProveedor, uEditorRemesaProveedor, uEditorRemesaProveedorReport; + +procedure RegisterViews; +begin + EditorRegistry.RegisterClass(TfEditorRemesaProveedor, 'EditorRemesaProveedor'); + EditorRegistry.RegisterClass(TfEditorRemesasProveedor, 'EditorRemesasProveedor'); + EditorRegistry.RegisterClass(TfEditorRemesaProveedorPreview, 'EditorRemesasProveedorPreview'); +end; + +procedure UnregisterViews; +begin + EditorRegistry.UnRegisterClass(TfEditorRemesaProveedor); + EditorRegistry.UnRegisterClass(TfEditorRemesasProveedor); + EditorRegistry.UnRegisterClass(TfEditorRemesaProveedorPreview); +end; + +end. diff --git a/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.dfm b/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.dfm new file mode 100644 index 00000000..fe4e00a2 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.dfm @@ -0,0 +1,164 @@ +inherited frViewRecibosRemesaProveedor: TfrViewRecibosRemesaProveedor + Width = 549 + Height = 376 + ExplicitWidth = 549 + ExplicitHeight = 376 + inherited cxGrid: TcxGrid + Width = 549 + Height = 351 + ExplicitWidth = 549 + ExplicitHeight = 351 + inherited cxGridView: TcxGridDBTableView + OptionsData.Appending = False + OptionsData.CancelOnExit = True + OptionsData.Deleting = False + OptionsData.Editing = False + OptionsData.Inserting = False + OptionsSelection.CellSelect = False + OptionsView.Footer = True + object cxGridViewREFERENCIA: TcxGridDBColumn + Caption = 'Referencia' + DataBinding.FieldName = 'REFERENCIA' + Width = 72 + end + object cxGridViewREFERENCIA_PROVEEDOR: TcxGridDBColumn + Caption = 'Ref. proveedor' + DataBinding.FieldName = 'REFERENCIA_PROVEEDOR' + end + object cxGridViewSITUACION: TcxGridDBColumn + Caption = 'Situaci'#243'n' + DataBinding.FieldName = 'SITUACION' + PropertiesClassName = 'TcxImageComboBoxProperties' + Properties.Items = < + item + Description = 'Pendiente' + Value = 'PENDIENTE' + end + item + Description = 'Cobrado' + ImageIndex = 0 + Value = 'COBRADO' + end + item + Description = 'Devuelto' + ImageIndex = 1 + Value = 'DEVUELTO' + end> + Width = 65 + end + object cxGridViewID_FACTURA: TcxGridDBColumn + DataBinding.FieldName = 'ID_FACTURA' + Visible = False + end + object cxGridViewFECHA_VENCIMIENTO: TcxGridDBColumn + Caption = 'Fecha vencimiento' + DataBinding.FieldName = 'FECHA_VENCIMIENTO' + Width = 78 + end + object cxGridViewDESCRIPCION: TcxGridDBColumn + DataBinding.FieldName = 'DESCRIPCION' + Visible = False + end + object cxGridViewOBSERVACIONES: TcxGridDBColumn + DataBinding.FieldName = 'OBSERVACIONES' + Visible = False + end + object cxGridViewNOMBRE_CLIENTE: TcxGridDBColumn + Caption = 'Proveedor' + DataBinding.FieldName = 'NOMBRE_PROVEEDOR' + Width = 205 + end + object cxGridViewIMPORTE: TcxGridDBColumn + Caption = 'Importe' + DataBinding.FieldName = 'IMPORTE' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + HeaderAlignmentHorz = taRightJustify + Width = 115 + end + object cxGridViewOTROS_GASTOS: TcxGridDBColumn + Caption = 'Otros gastos' + DataBinding.FieldName = 'OTROS_GASTOS' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewIMPORTE_TOTAL: TcxGridDBColumn + Caption = 'Importe total' + DataBinding.FieldName = 'IMPORTE_TOTAL' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + end + object cxGridViewFECHA_FACTURA: TcxGridDBColumn + DataBinding.FieldName = 'FECHA_FACTURA' + Visible = False + end + object cxGridViewFORMA_PAGO_FACTURA: TcxGridDBColumn + DataBinding.FieldName = 'FORMA_PAGO_FACTURA' + Visible = False + end + object cxGridViewIMPORTE_FACTURA: TcxGridDBColumn + DataBinding.FieldName = 'IMPORTE_FACTURA' + Visible = False + end + object cxGridViewNIF_CIF_PROVEEDOR: TcxGridDBColumn + DataBinding.FieldName = 'NIF_CIF_PROVEEDOR' + Visible = False + end + object cxGridViewENTIDAD_PROVEEDOR: TcxGridDBColumn + DataBinding.FieldName = 'ENTIDAD_PROVEEDOR' + Visible = False + end + object cxGridViewSUCURSAL_PROVEEDOR: TcxGridDBColumn + DataBinding.FieldName = 'SUCURSAL_PROVEEDOR' + Visible = False + end + object cxGridViewDC_PROVEEDOR: TcxGridDBColumn + DataBinding.FieldName = 'DC_PROVEEDOR' + Visible = False + end + object cxGridViewCUENTA_PROVEEDOR: TcxGridDBColumn + DataBinding.FieldName = 'CUENTA_PROVEEDOR' + Visible = False + end + object cxGridViewID_EMPRESA: TcxGridDBColumn + DataBinding.FieldName = 'ID_EMPRESA' + Visible = False + end + object cxGridViewFECHA_ALTA: TcxGridDBColumn + DataBinding.FieldName = 'FECHA_ALTA' + Visible = False + end + object cxGridViewFECHA_MODIFICACION: TcxGridDBColumn + DataBinding.FieldName = 'FECHA_MODIFICACION' + Visible = False + end + object cxGridViewUSUARIO: TcxGridDBColumn + DataBinding.FieldName = 'USUARIO' + Visible = False + end + end + end + inherited ToolBar1: TToolBar + Width = 549 + ExplicitWidth = 549 + inherited ToolButton1: TToolButton + ExplicitWidth = 62 + end + inherited ToolButton4: TToolButton + ExplicitWidth = 74 + end + inherited ToolButton2: TToolButton + ExplicitWidth = 67 + end + inherited ToolButton7: TToolButton + ExplicitWidth = 117 + end + end + inherited ActionListContenido: TActionList + inherited actModificar: TAction + Enabled = False + Visible = False + end + end +end diff --git a/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.pas b/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.pas new file mode 100644 index 00000000..cbdd300e --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.pas @@ -0,0 +1,130 @@ +unit uViewRecibosRemesaProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewDetallesGenerico, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, ActnList, ImgList, PngImageList, + uDADataTable, ComCtrls, ToolWin, cxGridLevel, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, + cxGrid, cxImageComboBox, cxCurrencyEdit, + + uBizRemesasProveedor, uRemesasProveedorController; + +type + IViewRecibosRemesaProveedor = interface + ['{033DF6AF-C694-4C15-A48E-C7BA42DFF9FE}'] + function GetRemesaProveedor: IBizRemesaProveedor; + procedure SetRemesaProveedor(const Value: IBizRemesaProveedor); + property RemesaProveedor: IBizRemesaProveedor read GetRemesaProveedor write SetRemesaProveedor; + + function GetController : IRemesasProveedorController; + procedure SetController (const Value : IRemesasProveedorController); + property Controller : IRemesasProveedorController read GetController write SetController; + end; + + TfrViewRecibosRemesaProveedor = class(TfrViewDetallesGenerico, IViewRecibosRemesaProveedor) + cxGridViewIMPORTE: TcxGridDBColumn; + cxGridViewOTROS_GASTOS: TcxGridDBColumn; + cxGridViewIMPORTE_TOTAL: TcxGridDBColumn; + cxGridViewREFERENCIA_PROVEEDOR: TcxGridDBColumn; + protected + FHayCambios : Boolean; + FRemesa : IBizRemesaProveedor; + FController : IRemesasProveedorController; + + procedure AnadirInterno; override; + procedure EliminarInterno; override; + + function GetRemesaProveedor: IBizRemesaProveedor; + procedure SetRemesaProveedor(const Value: IBizRemesaProveedor); + + function GetModified: Boolean; override; + procedure SetModified(const Value: Boolean); override; + + function GetController : IRemesasProveedorController; + procedure SetController (const Value : IRemesasProveedorController); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property RemesaProveedor: IBizRemesaProveedor read GetRemesaProveedor write SetRemesaProveedor; + property Controller : IRemesasProveedorController read GetController write SetController; + end; + + +implementation + +{$R *.dfm} + +uses + uBizRecibosProveedor, uCustomView; + +{ TfrViewRecibosRemesaProveedor } + +procedure TfrViewRecibosRemesaProveedor.AnadirInterno; +begin + //inherited; // No hacer el comportamiento normal + if FController.ElegirRecibosProveedor(RemesaProveedor) then + begin + Modified := True; + end; +end; + +constructor TfrViewRecibosRemesaProveedor.Create(AOwner: TComponent); +begin + inherited; + FHayCambios := False; +end; + +destructor TfrViewRecibosRemesaProveedor.Destroy; +begin + inherited; +end; + +procedure TfrViewRecibosRemesaProveedor.EliminarInterno; +begin + //inherited; // No hacer el comportamiento normal + FController.EliminarReciboProveedor(RemesaProveedor); + Modified := True; +end; + +function TfrViewRecibosRemesaProveedor.GetController: IRemesasProveedorController; +begin + Result := FController; +end; + +function TfrViewRecibosRemesaProveedor.GetModified: Boolean; +begin + Result := FHayCambios or inherited GetModified; +end; + +function TfrViewRecibosRemesaProveedor.GetRemesaProveedor: IBizRemesaProveedor; +begin + Result := FRemesa; +end; + +procedure TfrViewRecibosRemesaProveedor.SetController( + const Value: IRemesasProveedorController); +begin + FController := Value; +end; + +procedure TfrViewRecibosRemesaProveedor.SetModified(const Value: Boolean); +begin + FHayCambios := Value; + inherited; +end; + +procedure TfrViewRecibosRemesaProveedor.SetRemesaProveedor( + const Value: IBizRemesaProveedor); +begin + FRemesa := Value; + FHayCambios := False; + if Assigned(FRemesa) then + dsDetalles.DataTable := FRemesa.Recibos.DataTable + else + dsDetalles.DataTable := NIL; +end; + +end. diff --git a/Source/Modulos/Remesas de proveedor/Views/uViewRemesaProveedor.dfm b/Source/Modulos/Remesas de proveedor/Views/uViewRemesaProveedor.dfm new file mode 100644 index 00000000..8838266d --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Views/uViewRemesaProveedor.dfm @@ -0,0 +1,194 @@ +inherited frViewRemesaProveedor: TfrViewRemesaProveedor + Width = 451 + Height = 304 + Align = alClient + ExplicitWidth = 451 + ExplicitHeight = 304 + object dxLayoutControlRemesaProveedor: TdxLayoutControl + Left = 0 + Top = 0 + Width = 451 + Height = 304 + Align = alClient + ParentBackground = True + TabOrder = 0 + AutoContentSizes = [acsWidth, acsHeight] + LookAndFeel = dxLayoutOfficeLookAndFeel1 + DesignSize = ( + 451 + 304) + object eReferencia: TcxDBTextEdit + Left = 110 + Top = 30 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'REFERENCIA' + DataBinding.DataSource = dsDataTable + Enabled = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Color = 14745599 + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 164 + end + object eDescripcion: TcxDBTextEdit + Left = 110 + Top = 84 + DataBinding.DataField = 'DESCRIPCION' + DataBinding.DataSource = dsDataTable + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Color = clWindow + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 3 + Width = 108 + end + object edtFechaRemesa: TcxDBDateEdit + Left = 311 + Top = 30 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'FECHA_REMESA' + DataBinding.DataSource = dsDataTable + Properties.ImmediatePost = True + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Color = clInfoBk + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + Style.Shadow = False + Style.ButtonStyle = bts3D + Style.ButtonTransparency = ebtNone + Style.PopupBorderStyle = epbsFrame3D + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 170 + end + object cbCuentaBancaria: TcxDBLookupComboBox + Left = 110 + Top = 57 + DataBinding.DataField = 'ID_DATOS_BANCO' + DataBinding.DataSource = dsDataTable + Properties.GridMode = True + Properties.ImmediatePost = True + Properties.KeyFieldNames = 'ID' + Properties.ListColumns = < + item + FieldName = 'NOMBRE' + end> + Properties.ListOptions.GridLines = glNone + Properties.ListOptions.ShowHeader = False + Properties.ListSource = dsDatosBanco + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Color = clInfoBk + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + Style.ButtonStyle = bts3D + Style.PopupBorderStyle = epbsFrame3D + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 39 + end + object dxLayoutControlRemesaProveedorGroup_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControlRemesaProveedorGroup1: TdxLayoutGroup + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Datos de la remesa' + object dxLayoutControlRemesaProveedorGroup5: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControlRemesaProveedorItem3: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Referencia:' + Control = eReferencia + ControlOptions.ShowBorder = False + end + object dxLayoutControlRemesaProveedorItem4: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Fecha de cargo:' + Control = edtFechaRemesa + ControlOptions.ShowBorder = False + end + end + object dxLayoutControlRemesaProveedorGroup2: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControlRemesaProveedorItem9: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Cuenta bancaria:' + Control = cbCuentaBancaria + ControlOptions.ShowBorder = False + end + object dxLayoutControlRemesaProveedorItem8: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Descripci'#243'n:' + Control = eDescripcion + ControlOptions.ShowBorder = False + end + end + end + object dxLayoutControlRemesaProveedorGroup3: TdxLayoutGroup + Caption = 'New Group' + ShowCaption = False + LayoutDirection = ldHorizontal + ShowBorder = False + end + end + end + object dsDataTable: TDADataSource + Left = 8 + Top = 8 + end + object dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList + Left = 40 + Top = 8 + object dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel + GroupOptions.CaptionOptions.Font.Charset = DEFAULT_CHARSET + GroupOptions.CaptionOptions.Font.Color = clWindowText + GroupOptions.CaptionOptions.Font.Height = -11 + GroupOptions.CaptionOptions.Font.Name = 'Tahoma' + GroupOptions.CaptionOptions.Font.Style = [fsBold] + GroupOptions.CaptionOptions.TextColor = clHighlight + GroupOptions.CaptionOptions.UseDefaultFont = False + end + end + object dsDatosBanco: TDADataSource + Left = 8 + Top = 40 + end +end diff --git a/Source/Modulos/Remesas de proveedor/Views/uViewRemesaProveedor.pas b/Source/Modulos/Remesas de proveedor/Views/uViewRemesaProveedor.pas new file mode 100644 index 00000000..f68f9a0e --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Views/uViewRemesaProveedor.pas @@ -0,0 +1,106 @@ +unit uViewRemesaProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, ExtCtrls, StdCtrls, Buttons, DB, uDADataTable, + DBCtrls, Grids, DBGrids, Mask, ComCtrls, uCustomView, JvComponent, + JvFormAutoSize, cxControls, cxContainer, cxEdit, cxTextEdit, + cxDBEdit, dxLayoutControl, cxCheckBox, PngSpeedButton, cxImage, ActnList, + ImgList, PngImageList, cxGraphics, cxMaskEdit, cxDropDownEdit, + uFamiliasController, cxSpinEdit, cxCurrencyEdit, + uBizRemesasProveedor, uRemesasProveedorController, cxCalendar, + dxLayoutLookAndFeels, cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox; + +type + IViewRemesaProveedor = interface(IViewBase) + ['{A091444D-DA32-4577-9EA0-DE87D9C0F943}'] + function GetRemesaProveedor: IBizRemesaProveedor; + procedure SetRemesaProveedor(const Value: IBizRemesaProveedor); + property RemesaProveedor: IBizRemesaProveedor read GetRemesaProveedor write SetRemesaProveedor; + + function GetController : IRemesasProveedorController; + procedure SetController (const Value : IRemesasProveedorController); + property Controller : IRemesasProveedorController read GetController write SetController; + end; + + TfrViewRemesaProveedor = class(TfrViewBase, IViewRemesaProveedor) + dsDataTable: TDADataSource; + dxLayoutControlRemesaProveedorGroup_Root: TdxLayoutGroup; + dxLayoutControlRemesaProveedor: TdxLayoutControl; + dxLayoutControlRemesaProveedorGroup1: TdxLayoutGroup; + dxLayoutControlRemesaProveedorItem3: TdxLayoutItem; + eReferencia: TcxDBTextEdit; + dxLayoutControlRemesaProveedorItem8: TdxLayoutItem; + eDescripcion: TcxDBTextEdit; + dxLayoutControlRemesaProveedorGroup3: TdxLayoutGroup; + dxLayoutControlRemesaProveedorItem4: TdxLayoutItem; + edtFechaRemesa: TcxDBDateEdit; + dxLayoutControlRemesaProveedorGroup5: TdxLayoutGroup; + dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList; + dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel; + dxLayoutControlRemesaProveedorItem9: TdxLayoutItem; + cbCuentaBancaria: TcxDBLookupComboBox; + dsDatosBanco: TDADataSource; + dxLayoutControlRemesaProveedorGroup2: TdxLayoutGroup; + + protected + FController: IRemesasProveedorController; + FRemesaProveedor: IBizRemesaProveedor; + function GetRemesaProveedor: IBizRemesaProveedor; + procedure SetRemesaProveedor(const Value: IBizRemesaProveedor); virtual; + function GetController : IRemesasProveedorController; + procedure SetController (const Value : IRemesasProveedorController); + public + property RemesaProveedor: IBizRemesaProveedor read GetRemesaProveedor write SetRemesaProveedor; + property Controller : IRemesasProveedorController read GetController write SetController; + end; + +implementation + +{$R *.dfm} + +uses + uDataModuleUsuarios; + + +{ TfrViewRemesaProveedors } + +{ +******************************* TfrViewRemesaProveedors ******************************** +} + +function TfrViewRemesaProveedor.GetRemesaProveedor: IBizRemesaProveedor; +begin + Result := FRemesaProveedor; +end; + +function TfrViewRemesaProveedor.GetController: IRemesasProveedorController; +begin + Result := FController; +end; + +procedure TfrViewRemesaProveedor.SetRemesaProveedor(const Value: IBizRemesaProveedor); +begin + FRemesaProveedor := Value; + + if Assigned(FRemesaProveedor) then + begin + dsDataTable.DataTable := FRemesaProveedor.DataTable; + dsDatosBanco.DataTable := dmUsuarios.EmpresaActual.DatosBancarios.DataTable; + dsDatosBanco.DataTable.Active := True; + end + else begin + dsDataTable.DataTable := NIL; + dsDatosBanco.DataTable := NIL; + end; +end; + +procedure TfrViewRemesaProveedor.SetController(const Value: IRemesasProveedorController); +begin + FController := Value; +end; + +end. + diff --git a/Source/Modulos/Remesas de proveedor/Views/uViewRemesasProveedor.dfm b/Source/Modulos/Remesas de proveedor/Views/uViewRemesasProveedor.dfm new file mode 100644 index 00000000..aef1a64f --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Views/uViewRemesasProveedor.dfm @@ -0,0 +1,190 @@ +inherited frViewRemesasProveedor: TfrViewRemesasProveedor + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + DataController.KeyFieldNames = 'ID' + DataController.Summary.DefaultGroupSummaryItems = < + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + Position = spFooter + Column = cxGridViewIMPORTE_TOTAL + end> + DataController.Summary.FooterSummaryItems = < + item + Format = '0 almacenes' + Kind = skCount + end + item + Format = '0 Art'#237'culos' + Kind = skCount + end + item + Format = '0 remesas' + Kind = skCount + Column = cxGridViewREFERENCIA + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + Column = cxGridViewIMPORTE_TOTAL + end> + OptionsBehavior.PullFocusing = True + object cxGridViewRecID: TcxGridDBColumn + DataBinding.FieldName = 'RecID' + Visible = False + end + object cxGridViewID: TcxGridDBColumn + DataBinding.FieldName = 'ID' + Visible = False + end + object cxGridViewID_EMPRESA: TcxGridDBColumn + DataBinding.FieldName = 'ID_EMPRESA' + Visible = False + end + object cxGridViewREFERENCIA: TcxGridDBColumn + Caption = 'Referencia' + DataBinding.FieldName = 'REFERENCIA' + Width = 118 + end + object cxGridViewFECHA_REMESA: TcxGridDBColumn + Caption = 'Fecha de cargo' + DataBinding.FieldName = 'FECHA_REMESA' + Width = 74 + end + object cxGridViewNOMBRE: TcxGridDBColumn + DataBinding.FieldName = 'NOMBRE' + Width = 147 + end + object cxGridViewDESCRIPCION: TcxGridDBColumn + Caption = 'Descripci'#243'n' + DataBinding.FieldName = 'DESCRIPCION' + Width = 73 + end + object cxGridViewENTIDAD: TcxGridDBColumn + DataBinding.FieldName = 'ENTIDAD' + Visible = False + end + object cxGridViewSUCURSAL: TcxGridDBColumn + DataBinding.FieldName = 'SUCURSAL' + Visible = False + end + object cxGridViewDC: TcxGridDBColumn + DataBinding.FieldName = 'DC' + Visible = False + end + object cxGridViewCUENTA: TcxGridDBColumn + DataBinding.FieldName = 'CUENTA' + Visible = False + end + object cxGridViewSUFIJO_N19: TcxGridDBColumn + DataBinding.FieldName = 'SUFIJO_N19' + Visible = False + end + object cxGridViewSUFIJO_N58: TcxGridDBColumn + DataBinding.FieldName = 'SUFIJO_N58' + Visible = False + end + object cxGridViewIMPORTE_TOTAL: TcxGridDBColumn + Caption = 'Importe' + DataBinding.FieldName = 'IMPORTE_TOTAL' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + HeaderAlignmentHorz = taRightJustify + Width = 128 + end + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + inherited TBXDock1: TTBXDock + inherited TBXDockablePanel1: TTBXDockablePanel + inherited dxLayoutControl1: TdxLayoutControl + inherited txtFiltroTodo: TcxTextEdit + ExplicitWidth = 273 + Width = 273 + end + inherited edtFechaIniFiltro: TcxDateEdit + ExplicitWidth = 121 + Width = 121 + end + inherited edtFechaFinFiltro: TcxDateEdit + ExplicitWidth = 121 + Width = 121 + end + end + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38673.842406053240000000 + BuiltInReportLink = True + end + end + inherited dxPrintStyleManager1: TdxPrintStyleManager + inherited dxPrintStyleManager1Style1: TdxPSPrintStyle + BuiltInStyle = True + end + end + object PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000022E4944415478DA + 8D93CF6BD36018C7BF6997A45DD376EA70CA18D31D44981741280C44119DA83D + C87619781A1EFD1BC49B2028B28353141111A43BE8CD934E65A8D4A1686B61B5 + A31DD8CCBAFEDAACEDF226B389EFFB26CBCC54E6030FEFCB4B3E9FE79B9744B0 + 2C0B8220E0F7BA3AB2D75A282DE07F4AD82C60F0851B8F50530BF85EF98A6236 + 8DCCAB69B0B366BD8C95B24ACF4BB877FD226AFD635EC13A5CF99243A356869A + 4D51F8398799EC476D09E5621E0F6F5EC6C8D938EE7C503604EB7055CDA34127 + A8B90C3ECD3CE570A35AA2FD0DCB4B2AEE4F5CC29953C35094102667655B706D + 7480C3F97412AD951AAAC502E6DEBCE47031974673B942BB8AA9DB57103F7D12 + 9D9D413ED4154C8C0BD6FCE7AD2F6C2816C3CE9E6E8862077C3E9F57307CE2FC + 1F80655A308C35E844C7B3273318D8D78FE8B6282449A41211B7DE05FE2D304D + 13866EC34433F0FAC55BF4EDE945A42B0C910A6459C6DD94F27781D936F964B2 + AADB02DAEF9329ECEEED4138A240944548B2840773DBBD02B637596C6238205D + 352AD175643E66B1A3BB0B0A15489204292061AAB0CB2B68D3C96B34367120BE + 3AB2F96C01E1A8825028083920F35778BCD8B721387E6C9C42060788465C50A3 + 12B24AB0582C2110946907282C61BA3588442221B882C343E75C50A30093B104 + 84D849EAD53AFC1D7E0ECFFA631C76FF0526387470D4135977405B62A0D56CB2 + C791891C71618FE0C0FEB873618623B2E33361FB679B4A340A1FF5C01E41928C + 6DF9256E8659FD02D3B7960923D6946A0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000B1300000B1301009A9C18000001274944415478DA + DD923D4A035110C7FFAB60A208795B585865636795A4538CF0F4089A3EC113E4 + 0E5E20E00536584AD2682382BBA085A0984DC0D6B72FA0310AD9599068045947 + B052F015A97460986198F9315F5692249844AC7F08B02C0BDBA725C96E95557E + 857D56B7B979EEFFC8FF1E287BEB5208515FB49D3C5B2420B455802985CE2B50 + 3BD83AF34D00773957A8AC391B78E1E23E29DC50805069BC29344E76BA551320 + 5C2DCAEC92C88128C21D425C33208A34665A421FEF761D2360A558C8CE4160C8 + 1DDC33E096343477906A6574B0D73302DC944045D8027D068C10631C119EDA31 + E6BD4CE362BF671C41CE46A80FED383F1284078A31AD80670F9D054AD72E0F07 + BF2FF1F38CE5664912C555DEBC1C10214DF0DF69EC5E1D3D9ACF38F123FD3DC0 + 07A932AEE15E52559F0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000E54944415478DADD902172C3301045BF4F10C3320B9645B0ACEE0D7C + 83F806F5110C0BD51B6C99A160E1C2C085850B0D372C655965DCA28C3D9DB27C + CD8E44FEDBFF55E19FAAEE104013B77EF53ED100B3595967637A1B7813B098C7 + F8149E435DC3CE807C29F2943FD48C784ABC0520371FF64D83D377597FF201F8 + 28C899DE39D3B005D0AE8B0DB0FB3597143A2B98195EA3DA0248DBC67D79FF98 + B100682278857540224EF131BCD64BFF62363FE215540594C675C098728BB3F5 + 2184031C72DDAE1EFFC89EC85EE493D63FB1A81F526BA65D7808BDA8EE1C0611 + B969BE09F8ABEE007001C1D97F1131BF40440000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 160 + Top = 32 + Bitmap = {} + end +end diff --git a/Source/Modulos/Remesas de proveedor/Views/uViewRemesasProveedor.pas b/Source/Modulos/Remesas de proveedor/Views/uViewRemesasProveedor.pas new file mode 100644 index 00000000..abd6b6f8 --- /dev/null +++ b/Source/Modulos/Remesas de proveedor/Views/uViewRemesasProveedor.pas @@ -0,0 +1,92 @@ +unit uViewRemesasProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, uBizRemesasProveedor, ActnList, Menus, + cxGridBandedTableView, cxGridDBBandedTableView, JvComponent, + JvFormAutoSize, PngImageList, ImgList, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGridLnk, + cxGridCustomPopupMenu, cxGridPopupMenu, cxCurrencyEdit, cxSpinEdit, cxCheckBox, + cxCheckComboBox, cxImageComboBox, TB2Item, TBX, TB2Toolbar, TBXDkPanels, + TB2Dock, uViewFiltroBase, dxPgsDlg; + +type + IViewRemesasProveedor = interface(IViewGrid) + ['{969B34FC-84E0-4D62-B577-371F71F32FB8}'] + function GetRemesasProveedor: IBizRemesaProveedor; + procedure SetRemesasProveedor(const Value: IBizRemesaProveedor); + property RemesasProveedor: IBizRemesaProveedor read GetRemesasProveedor write SetRemesasProveedor; + end; + + TfrViewRemesasProveedor = class(TfrViewGrid, IViewRemesasProveedor) + PngImageList: TPngImageList; + cxGridViewRecID: TcxGridDBColumn; + cxGridViewID: TcxGridDBColumn; + cxGridViewID_EMPRESA: TcxGridDBColumn; + cxGridViewREFERENCIA: TcxGridDBColumn; + cxGridViewFECHA_REMESA: TcxGridDBColumn; + cxGridViewDESCRIPCION: TcxGridDBColumn; + cxGridViewIMPORTE_TOTAL: TcxGridDBColumn; + cxGridViewNOMBRE: TcxGridDBColumn; + cxGridViewENTIDAD: TcxGridDBColumn; + cxGridViewSUCURSAL: TcxGridDBColumn; + cxGridViewDC: TcxGridDBColumn; + cxGridViewCUENTA: TcxGridDBColumn; + cxGridViewSUFIJO_N19: TcxGridDBColumn; + cxGridViewSUFIJO_N58: TcxGridDBColumn; + procedure cxGridViewIDCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); + protected + FRemesasProveedor: IBizRemesaProveedor; + function GetRemesasProveedor: IBizRemesaProveedor; virtual; + procedure SetRemesasProveedor(const Value: IBizRemesaProveedor); virtual; + public + property RemesasProveedor: IBizRemesaProveedor read GetRemesasProveedor write SetRemesasProveedor; + end; + +implementation + +uses uDataModuleRemesasProveedor; + + +{$R *.dfm} + +{ TfrViewRemesasProveedor } + +{ +******************************* TfrViewRemesasProveedor ******************************* +} +function TfrViewRemesasProveedor.GetRemesasProveedor: IBizRemesaProveedor; +begin + Result := FRemesasProveedor; +end; + +procedure TfrViewRemesasProveedor.SetRemesasProveedor(const Value: IBizRemesaProveedor); +begin + FRemesasProveedor := Value; + if Assigned(FRemesasProveedor) then + dsDataSource.DataTable := FRemesasProveedor.DataTable; +end; + + +procedure TfrViewRemesasProveedor.cxGridViewIDCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + R : TRect; +begin + inherited; + R := AViewInfo.ContentBounds; + ACanvas.FillRect(R); + ACanvas.DrawImage(PngImageList, R.Left, R.Top, 0); + ADone := True; +end; + +end. diff --git a/Source/Servicios/FactuGES.RODL b/Source/Servicios/FactuGES.RODL index 0a243594..caef8471 100644 --- a/Source/Servicios/FactuGES.RODL +++ b/Source/Servicios/FactuGES.RODL @@ -476,6 +476,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Servicios/FactuGES_Intf.pas b/Source/Servicios/FactuGES_Intf.pas index c3e00bc6..e854e24c 100644 --- a/Source/Servicios/FactuGES_Intf.pas +++ b/Source/Servicios/FactuGES_Intf.pas @@ -42,6 +42,7 @@ const IsrvFacturasProveedor_IID : TGUID = '{7655160C-7023-452E-BB0E-C97E29B915E7}'; IsrvRecibosProveedor_IID : TGUID = '{22580F16-8FFC-4FE0-BCDD-5533D5DB1F55}'; IsrvHistoricoMovimientos_IID : TGUID = '{F1BE4D4C-017B-476D-A009-0D1B8D1A20CE}'; + IsrvRemesasProveedor_IID : TGUID = '{6540A037-9847-4650-89BB-7B349C6004DF}'; { Event ID's } @@ -69,6 +70,7 @@ type IsrvFacturasProveedor = interface; IsrvRecibosProveedor = interface; IsrvHistoricoMovimientos = interface; + IsrvRemesasProveedor = interface; TRdxEmpresasArray = class; @@ -580,6 +582,27 @@ type end; + { IsrvRemesasProveedor } + IsrvRemesasProveedor = interface(IDARemoteService) + ['{6540A037-9847-4650-89BB-7B349C6004DF}'] + function GetNextAutoInc(const GeneratorName: String): Integer; + function GenerateReport(const ID: Integer): Binary; + end; + + { CosrvRemesasProveedor } + CosrvRemesasProveedor = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvRemesasProveedor; + end; + + { TsrvRemesasProveedor_Proxy } + TsrvRemesasProveedor_Proxy = class(TDARemoteService_Proxy, IsrvRemesasProveedor) + protected + function __GetInterfaceName:string; override; + + function GetNextAutoInc(const GeneratorName: String): Integer; + function GenerateReport(const ID: Integer): Binary; + end; + implementation uses @@ -1893,6 +1916,67 @@ begin result := 'srvHistoricoMovimientos'; end; +{ CosrvRemesasProveedor } + +class function CosrvRemesasProveedor.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvRemesasProveedor; +begin + result := TsrvRemesasProveedor_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvRemesasProveedor_Proxy } + +function TsrvRemesasProveedor_Proxy.__GetInterfaceName:string; +begin + result := 'srvRemesasProveedor'; +end; + +function TsrvRemesasProveedor_Proxy.GetNextAutoInc(const GeneratorName: String): Integer; +var + __request, __response : TMemoryStream; +begin + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoInc'); + __Message.Write('GeneratorName', TypeInfo(String), GeneratorName, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __request.Free; + __response.Free; + end +end; + +function TsrvRemesasProveedor_Proxy.GenerateReport(const ID: Integer): Binary; +var + __request, __response : TMemoryStream; +begin + result := nil; + __request := TMemoryStream.Create; + __response := TMemoryStream.Create; + + try + __Message.Initialize(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport'); + __Message.Write('ID', TypeInfo(Integer), ID, []); + __Message.Finalize; + + __Message.WriteToStream(__request); + __TransportChannel.Dispatch(__request, __response); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __request.Free; + __response.Free; + end +end; + initialization RegisterROClass(TRdxLoginInfo); RegisterROClass(TRdxEmpresasArray); @@ -1918,6 +2002,7 @@ initialization RegisterProxyClass(IsrvFacturasProveedor_IID, TsrvFacturasProveedor_Proxy); RegisterProxyClass(IsrvRecibosProveedor_IID, TsrvRecibosProveedor_Proxy); RegisterProxyClass(IsrvHistoricoMovimientos_IID, TsrvHistoricoMovimientos_Proxy); + RegisterProxyClass(IsrvRemesasProveedor_IID, TsrvRemesasProveedor_Proxy); finalization @@ -1945,5 +2030,6 @@ finalization UnregisterProxyClass(IsrvFacturasProveedor_IID); UnregisterProxyClass(IsrvRecibosProveedor_IID); UnregisterProxyClass(IsrvHistoricoMovimientos_IID); + UnregisterProxyClass(IsrvRemesasProveedor_IID); end. diff --git a/Source/Servicios/FactuGES_Invk.pas b/Source/Servicios/FactuGES_Invk.pas index 84490aec..7f06247e 100644 --- a/Source/Servicios/FactuGES_Invk.pas +++ b/Source/Servicios/FactuGES_Invk.pas @@ -186,6 +186,14 @@ type published end; + TsrvRemesasProveedor_Invoker = class(TDARemoteService_Invoker) + private + protected + published + procedure Invoke_GetNextAutoInc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + implementation uses @@ -1043,4 +1051,52 @@ begin end; end; +{ TsrvRemesasProveedor_Invoker } + +procedure TsrvRemesasProveedor_Invoker.Invoke_GetNextAutoInc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetNextAutoInc(const GeneratorName: String): Integer; } +var + GeneratorName: String; + lResult: Integer; +begin + try + __Message.Read('GeneratorName', TypeInfo(String), GeneratorName, []); + + lResult := (__Instance as IsrvRemesasProveedor).GetNextAutoInc(GeneratorName); + + __Message.Initialize(__Transport, 'FactuGES', 'srvRemesasProveedor', 'GetNextAutoIncResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + + finally + end; +end; + +procedure TsrvRemesasProveedor_Invoker.Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GenerateReport(const ID: Integer): Binary; } +var + ID: Integer; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('ID', TypeInfo(Integer), ID, []); + + lResult := (__Instance as IsrvRemesasProveedor).GenerateReport(ID); + + __Message.Initialize(__Transport, 'FactuGES', 'srvRemesasProveedor', 'GenerateReportResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + end. diff --git a/Source/Servicios/RODLFILE.res b/Source/Servicios/RODLFILE.res index adca1c0bebe59f9ac542ba76984018bfff58ca3f..109b97f785c48b1fd668db95006731939ee74b34 100644 GIT binary patch delta 223 zcmWN}KS~2Z6o7GJWtkK%qzPe@!sfx7oj3DlM2q?xBbt z!p_1Icm$F3*{}Ml-}md_|8uaPp3K(o^-o*gs?p`Dd+2s|yTx|%*md`tZ9Tocj#u?l zN--020t#e+&;+nnW*}lOT((A|E`L=!*NV`gWUz)9NGk+my$AM^Y|w}lb9uSBn4^or zny7&LdNB| +