This is a multi-part message in MIME format.
------=_NextPart_000_0013_01C5816F.DA8E9EE0
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_0014_01C5816F.DA8E9EE0"
------=_NextPart_001_0014_01C5816F.DA8E9EE0
Content-Type: text/plain;
charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable
Joaqu=EDn,=20
Siento que est=E9s harto de leer la documentaci=F3n, pero creo que es =
importante.
Yo por mi parte intento tener paciencia infinita para explicar como =
funciona Xailer y no me canso de reconocer y arreglar errores cuando los =
hay, y de intentar explicar que se est=E1 haciendo mal cuando realmente =
creo que no es un error.=20
Realmente, y has de reconocerlo, tu inter=E9s es sencillamente de que no =
te gusta como Xailer hace una determinada tarea, y te gustar=EDa que se =
hiciese de otra forma, de tu forma. Yo estoy completamente abierto a =
modificaciones cuando cualquier usuario me demuestra que estoy =
equivocado en como hace Xailer una determinadla tarea, pero creo que =
diciendo que falla el c=F3digo o falla la documentaci=F3n, sin m=E1s, no =
es el camino.
Si somos capaces de mantener una conversaci=F3n inteligente, y no =
cerrarnos cada uno en nuestras convicciones previas estar=E9 encantado =
de revisar cualquier propuesta de modificaci=F3n de Xailer que nos =
hagas.
Un saludo,
"Joaqu=EDn Mart=EDnez" <
jmartial@interbook.net> escribi=F3 en el =
mensaje news:[email=
42ca6748@ozsrvnegro.ozlan.local...]
42ca6748@ozsrvnegro.ozlan.local...[/email]
Ignacio,
Mira, dejo ya este tema porque leemos muy diferente, la forma en que =
funciona me parece bien como otra cualquiera, simplemente te comentaba =
que no estaba tan claro.
Estoy "harto" de leerme la documentaci=F3n, no te creas que ni la he =
visto, conozco los eventos de TDataSet y s=E9 que se podr=EDa hacer de =
esa manera o de otras 1000 diferentes, pero si estoy usando el update() =
con datacontrols quer=EDa hacerlo por ese camino.
Un Saludo y gracias por tu tiempo,
Joaqu=EDn
"Ignacio Ortiz de Z=FA=F1iga" <
InvalidAccount@ozs.com> escribi=F3 en =
el mensaje news:42ca5ebc$[email=
1@ozsrvnegro.ozlan.local...]
1@ozsrvnegro.ozlan.local...[/email]
Joaquin,=20
>>>> Dime exactamente donde da esa impresi=F3n para corregirlo =
cuanto antes. Muchas gracias.
oField:OnSetValue :=3D {|oField, Value | Salvar( oField, Value ) }
Function Salvar( oField, Value )
WITH OBJECT oField:oDataSet
:Banco :=3D Left( Value, 4 )
:Sucursal :=3D Substr( Value, 6, 4 )
:DigControl :=3D Substr( Value, 11, 2 )
:Cuenta :=3D Substr( Value, 14, 10 )
END WITH
Caray, pues tienes much=EDsima imaginaci=F3n te lo aseguro

=20
Como viendo ese c=F3digo has llegado a la conclusi=F3n de que se =
ten=EDa que disparar autom=E1ticamente oField:OnSetValue en cada =
llamada a Update(), no TIENE MUCHO M=C1S SENTIDO, que Update simplemente =
actualice el valor del campo con el valor de su buffer, y punto.
Insisto, por favor lee la documentaci=F3n de los DataControls. Estoy =
seguro que lo ver=E1s mucho m=E1s claro. Leyendo tus comentarios veo que =
tienes muchas lagunas al respecto. Te aconsejo que te detengas en el =
evento OnPreSave del TDataSet, puede que te sea de utilidad.
Un saludo,
"Joaqu=EDn Mart=EDnez" <
jmartial@interbook.net> escribi=F3 en el =
mensaje news:[email=
42ca588e@ozsrvnegro.ozlan.local...]
42ca588e@ozsrvnegro.ozlan.local...[/email]
Ignacio,
>>>> Dime exactamente donde da esa impresi=F3n para corregirlo =
cuanto antes. Muchas gracias.
oField:OnSetValue :=3D {|oField, Value | Salvar( oField, Value ) }
Function Salvar( oField, Value )
WITH OBJECT oField:oDataSet
:Banco :=3D Left( Value, 4 )
:Sucursal :=3D Substr( Value, 6, 4 )
:DigControl :=3D Substr( Value, 11, 2 )
:Cuenta :=3D Substr( Value, 14, 10 )
END WITH
RETURN NIL
---------> Aqu=ED es donde me da la impresi=F3n de que el evento =
saltar=E1 al salvar
Mira, ya he entendido tu planteamiento, en cada "valid" de un =
control que no se pueda salvar tal cual, le asigno el valor al campo =
calculado, y luego s=F3lo cuando haga update() ya cada campo real tiene =
su valor.
Y mi planteamiento que me surge como primera impresi=F3n l=F3gica =
de como lo iba a hacerlo despu=E9s de leer la ayuda era la siguiente:
oField :=3D ::oDatosemp:AddCalcField( "MiCampoFicticio", {| =
oField | oField:oDataset:CampoReal } )
oField:OnSetValue :=3D {|oField, Value_de_MiCampoFicticio | =
Salvar( oField, Value ) } <---- Esto se ejecutar=EDa al hacer Update() y =
en vez de hacer internamente algo como:
Replace (alias)->MiCampoFicticio WITH value ( Que =
ser=EDa incorrecto porque el campo no existe )
Har=EDa el replace que yo le indique en mi funci=F3n salvar(), =
internamente yo lo ver=EDa como:
Reclock()
Replaces autom=E1ticos por xailer
Replaces seg=FAn usuario de campos calculados
commit()
RecUnlock()
Un Saludo,
Joaqu=EDn
"Ignacio Ortiz de Z=FA=F1iga" <
InvalidAccount@ozs.com> =
escribi=F3 en el mensaje news:42ca3d06$[email=
1@ozsrvnegro.ozlan.local...]
1@ozsrvnegro.ozlan.local...[/email]
Joaqu=EDn,=20
> Yo lo que quer=EDa es que al hacer oDataset:Update(), salvara =
cada campo y el
> calculado de la forma que le indico,
Update() graba el valor de su buffer. Si el buffer no ha =
cambiado, pues se queda igual

> pues si se hace como dices da error de "requiere bloqueo".
Si te da error de bloqueo es sencillamente porque no est=E1n en =
modo Edit() o AddNew(). Si quieres cambiar el buffer del DataField pero =
no su valor en la base de datos sin estar en modo edici=F3n, tienes el =
m=E9todo VarPut().=20
No obstante, y de la documentaci=F3n:
> Si tengo 20 campos normales y 3 calculados, seg=FAn me =
comentas al hacer
> Update() grabar=EDa s=F3lo 20 y luego uno por uno habr=EDa que =
grabarlos
> manualmente???
Me temo que yo no he dicho eso. Tan s=F3lo digo que hay que =
asignarles el nuevo valor. Perd=F3name pero es como lo llevas haciendo =
toda tu vida. No puedo entender la complicaci=F3n.
ODATAFIELD:VALUE :=3D NUEVO VALOR
Y da igual que sea campo calculado que no.
> No entiendo muy bien como trabaja, porque incluso viendo la =
ayuda pens=E9 que
> el evento saltaba al hacer Update() en la base.
Dime exactamente donde da esa impresi=F3n para corregirlo cuanto =
antes. Muchas gracias.
Te recomiendo que le eches un gran vistazo a la documentaci=F3n =
de los datacontrols. Y all=ED comprobar=E1s la existencia de =
disparadores que posiblemente puedan serte de ayuda.
Un saludo,=20
"Joaqu=EDn Mart=EDnez" <
jmartial@interbook.net> escribi=F3 en el =
mensaje news:[email=
42c969d9@ozsrvnegro.ozlan.local...]
42c969d9@ozsrvnegro.ozlan.local...[/email]
> Ignacio,
>=20
> Yo lo que quer=EDa es que al hacer oDataset:Update(), salvara =
cada campo y el
> calculado de la forma que le indico, porque adem=E1s no tiene =
mucha l=F3gica
> pues si se hace como dices da error de "requiere bloqueo".
>=20
> Si tengo 20 campos normales y 3 calculados, seg=FAn me =
comentas al hacer
> Update() grabar=EDa s=F3lo 20 y luego uno por uno habr=EDa que =
grabarlos
> manualmente???
>=20
> Y aparte, si estoy en un "edit()" al hacer lo que dices estoy =
con el buffer
> por lo que en ese momento no quiero guardarlo en la base de =
datos.
>=20
> No entiendo muy bien como trabaja, porque incluso viendo la =
ayuda pens=E9 que
> el evento saltaba al hacer Update() en la base.
>=20
> Un Saludo,
> Joaqu=EDn
>=20
>=20
>=20
> "Ignacio Ortiz de Z=FA=F1iga" <
InvalidAccount@ozs.com> =
escribi=F3 en el mensaje
> news:42c96648$[email=
1@ozsrvnegro.ozlan.local...]
1@ozsrvnegro.ozlan.local...[/email]
>> Joaquin,
>>
>> El evento se evalua cuando hagas algo as=ED:
>>
>> oDataSet:MiCampoCalculado :=3D "lo que sea"
>>
>> Y entonces recibir=E1s en la funci=F3n SaveLogo() como =
segundo parametro dicho
>> valor.
>>
>> Un saludo,
>>
>>
>> "Joaqu=EDn Mart=EDnez" <
jmartial@interbook.net> escribi=F3 en =
el mensaje
>> news:42c91e5d$[email=
1@ozsrvnegro.ozlan.local...]
1@ozsrvnegro.ozlan.local...[/email]
>> > Hola,
>> >
>> > He intentado usar por primera vez un campo calculado, y lo =
lee pero no
> lo
>> > graba, este es el c=F3digo, es igual que en la ayuda y =
nunca llega a
> grabar
>> > ni
>> > a mostrar el logdebug:
>> >
>> > oField :=3D :Datosemp:AddCalcField( "MiField_c_nomlogo", {| =
oField |
>> > oField:oDataset:c_nomlogo } ) <-- Esto s=ED funciona
>> >
>> >
>> >
>> > oField:OnSetValue :=3D {|oField, Value | SaveLogo( =
oField:oDataSet,
>> > Value ) }
>> > <--- esto no lo eval=FAa nunca
>> >
>> >
>> >
>> > Function SaveLogo( oDataSet, Value )
>> >
>> > logdebug( Value ) <---- esto no se eval=FAa nunca
>> >
>> > ::oDataset:c_nomlogo :=3D Value
>> >
>> > Return nil
>> >
>> > Un Saludo,
>> >
>> > Joaqu=EDn
>> >
>> >
>>
>>
>=20
>
------=_NextPart_001_0014_01C5816F.DA8E9EE0
Content-Type: text/html;
charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dwindows-1252">
<META content=3D"MSHTML 6.00.2900.2668" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV>Joaqu=EDn, </DIV>
<DIV>Â</DIV>
<DIV>Siento queÂest=E9s harto de leer la documentaci=F3n, pero creo =
que es=20
importante.</DIV>
<DIV>Â</DIV>
<DIV>Yo por mi parte intento tener paciencia infinita para explicar como =
funciona Xailer y no me canso de reconocer y arreglarÂerrores =
cuando los=20
hay, y de intentar explicar que se est=E1 haciendo mal cuando realmente =
creo=20
queÂno es un error. </DIV>
<DIV>Â</DIV>
<DIV>Realmente, y has de reconocerlo, tu inter=E9s es sencillamente de =
que no te=20
gusta como Xailer hace una determinada tarea, y te gustar=EDa que se =
hiciese de=20
otra forma, de tu forma. Yo estoy completamente abierto a modificaciones =
cuando=20
cualquier usuario me demuestra que estoy equivocado en como hace Xailer =
una=20
determinadla tarea, pero creo que diciendo que falla el c=F3digo o falla =
la=20
documentaci=F3n, sin m=E1s, no es el camino.</DIV>
<DIV>Â</DIV>
<DIV>Si somos capaces de mantener una conversaci=F3n inteligente, y no =
cerrarnos=20
cada uno en nuestras convicciones previas estar=E9 encantado de revisar =
cualquier=20
propuesta de modificaci=F3n de Xailer que nos hagas.</DIV>
<DIV>Â</DIV>
<DIV>Un saludo,</DIV>
<DIV>Â</DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Joaqu=EDn Mart=EDnez" <<A=20
href=3D"mailto:
jmartial@interbook.net">
jmartial@interbook.net</A>> =
escribi=F3=20
en el mensaje <A=20
=
href=3D"news:
42ca6748@ozsrvnegro.ozlan.local">news:
42ca6748@ozsrvnegro.oz=
lan.local</A>...</DIV>
<DIV><FONT face=3DArial size=3D2>Ignacio,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>Mira, dejo ya este tema porque leemos =
muy=20
diferente, la forma en que funciona me parece bien como otra =
cualquiera,=20
simplemente te comentaba que no estaba tan claro.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>Estoy "harto" de leerme la =
documentaci=F3n, no te=20
creas que ni la he visto, conozco los eventos de <FONT =
size=3D3>TDataSet y s=E9=20
que se podr=EDa hacer de esa manera o de otras 1000 diferentes, pero =
si estoy=20
usando el update() con datacontrols quer=EDa hacerlo por ese=20
camino.</FONT></FONT></DIV>
<DIV><FONT face=3DArial></FONT>Â</DIV>
<DIV><FONT face=3DArial></FONT>Â</DIV>
<DIV><FONT face=3DArial>Un Saludo y gracias por tu =
tiempo,</FONT></DIV>
<DIV><FONT face=3DArial>Joaqu=EDn</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ignacio Ortiz de Z=FA=F1iga" <<A=20
=
href=3D"mailto:
InvalidAccount@ozs.com">
InvalidAccount@ozs.com</A>> =
escribi=F3=20
en el mensaje <A=20
=
href=3D"news:42ca5ebc$
1@ozsrvnegro.ozlan.local">news:42ca5ebc$[email=1@ozsrvnegr]1@ozsrvnegr[/email]=
o.ozlan.local</A>...</DIV>
<DIV>Joaquin, </DIV>
<DIV>Â</DIV>
<DIV>
<DIV>>>>> Dime exactamente donde da esa impresi=F3n para =
corregirlo cuanto antes. Muchas gracias.<BR><FONT face=3DArial=20
size=3D2></FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>oField:OnSetValue :=3D {|oField, =
Value | Salvar(=20
oField, Value ) }</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>Function Salvar( oField, Value =
)</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>ÂWITH OBJECT=20
oField:oDataSet<BR> ÂÂ:BancoÂÂÂ& ;nbsp;Â =
:=3D Left(=20
Value, 4 )<BR>ÂÂ:SucursalÂÂ :=3D Substr( Value, =
6, 4=20
)<BR>ÂÂ:DigControl :=3D Substr( Value, 11, 2=20
)<BR> ÂÂ:CuentaÂÂÂ&am p;nbsp; :=3D Substr( Value, =
14, 10=20
)<BR>ÂEND WITH</FONT></DIV></DIV>
<DIV>Â</DIV>
<DIV>Caray, puesÂtienes much=EDsima imaginaci=F3n te lo =
aseguroÂ;-)=20
</DIV>
<DIV>Â</DIV>
<DIV>Como viendo ese c=F3digo has llegado a la conclusi=F3n de que =
se ten=EDa que=20
disparar autom=E1ticamente oField:OnSetValue en cada llamada a =
Update(),=20
no TIENE MUCHO M=C1S SENTIDO, que Update simplemente actualice el =
valor del=20
campo con el valor de su buffer, y punto.</DIV>
<DIV>Â</DIV>
<DIV>Insisto, por favor lee la documentaci=F3n de los DataControls. =
Estoy=20
seguro que lo ver=E1s mucho m=E1s claro. Leyendo tus comentarios veo =
que tienes=20
muchas lagunas al respecto. Te aconsejo que te detengas en el evento =
OnPreSave del TDataSet, puede que te sea de utilidad.</DIV>
<DIV>Â</DIV>
<DIV>Un saludo,</DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Joaqu=EDn Mart=EDnez" <<A=20
=
href=3D"mailto:
jmartial@interbook.net">
jmartial@interbook.net</A>>=20
escribi=F3 en el mensaje <A=20
=
href=3D"news:
42ca588e@ozsrvnegro.ozlan.local">news:
42ca588e@ozsrvnegro.oz=
lan.local</A>...</DIV>
<DIV><FONT face=3DArial size=3D2>
<DIV>Ignacio,</DIV>
<DIV><FONT face=3DTahoma size=3D3></FONT>Â</DIV>
<DIV><FONT face=3DTahoma size=3D3></FONT>Â</DIV>
<DIV>>>>> Dime exactamente donde da esa impresi=F3n =
para=20
corregirlo cuanto antes. Muchas gracias.<BR></FONT><FONT =
face=3DArial=20
size=3D2></FONT></DIV>
<DIV><FONT face=3DArial size=3D2>oField:OnSetValue :=3D {|oField, =
Value |=20
Salvar( oField, Value ) }</FONT></DIV></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>Function Salvar( oField, Value =
)</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>ÂWITH OBJECT=20
=
oField:oDataSet<BR> ÂÂ:BancoÂÂÂ& ;nbsp;Â :=3D =
Left( Value, 4 )<BR>ÂÂ:SucursalÂÂ :=3D Substr( =
Value, 6,=20
4 )<BR>ÂÂ:DigControl :=3D Substr( Value, 11, 2=20
)<BR> ÂÂ:CuentaÂÂÂ&am p;nbsp; :=3D Substr( =
Value, 14, 10=20
)<BR>ÂEND WITH</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>RETURN NIL</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>---------> Aqu=ED es donde me =
da la=20
impresi=F3n de que el evento saltar=E1 al salvar</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>Mira, ya he entendido tu =
planteamiento, en=20
cada "valid" de un control que no se pueda salvar tal cual, le =
asigno el=20
valor al campo calculado, y luego s=F3lo cuando haga update() ya =
cada campo=20
real tiene su valor.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>Y mi planteamiento que me surge =
como primera=20
impresi=F3n l=F3gica de como lo iba a hacerlo despu=E9s de leer la =
ayudaÂera la siguiente:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>oField :=3D =
::oDatosemp:AddCalcField(=20
"MiCampoFicticio",ÂÂ {| oField | =
oField:oDataset:CampoReal }=20
)</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV><FONT =
face=3DArial size=3D2>
<DIV><FONT face=3DTahoma size=3D3></FONT><FONT face=3DTahoma=20
size=3D3></FONT><BR>oField:OnSetValue :=3D {|oField, =
Value_de_MiCampoFicticio=20
| Salvar( oField, Value ) } <---- Esto se ejecutar=EDa al hacer =
Update()=20
y en vez de hacer internamente algo como:</DIV>
<DIV><FONT face=3DTahoma size=3D3></FONT>Â</DIV>
<DIV> ÂÂÂÂÂÂ ÂÂÂÂ =
Replace=20
(alias)->MiCampoFicticio WITH value ( Que ser=EDa =
incorrecto porque=20
el campo no existe )</DIV>
<DIV><FONT face=3DTahoma size=3D3></FONT>Â</DIV>
<DIV>Har=EDa el replace que yo le indique en mi funci=F3n =
salvar(),=20
internamente yo lo ver=EDa como:</DIV>
<DIV><FONT face=3DTahoma size=3D3></FONT>Â</DIV>
<DIV>Reclock()</DIV>
<DIV>Replaces autom=E1ticos por xailer</DIV>
<DIV>Replaces seg=FAn usuario de campos calculados</DIV>
<DIV>commit()</DIV>
<DIV>RecUnlock()</DIV>
<DIV><FONT face=3DTahoma size=3D3></FONT>Â</DIV>
<DIV><FONT face=3DTahoma size=3D3></FONT>Â</DIV>
<DIV><FONT face=3DTahoma size=3D3></FONT>Â</DIV>
<DIV>Un Saludo,</DIV>
<DIV>Joaqu=EDn</DIV>
<DIV><FONT face=3DTahoma size=3D3></FONT>Â</DIV>
<DIV>Â</DIV>
<DIV>Â</DIV>
<DIV>Â</DIV>
<DIV>Â</DIV>
<DIV></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ignacio Ortiz de Z=FA=F1iga" <<A=20
=
href=3D"mailto:
InvalidAccount@ozs.com">
InvalidAccount@ozs.com</A>>=20
escribi=F3 en el mensaje <A=20
=
href=3D"news:42ca3d06$
1@ozsrvnegro.ozlan.local">news:42ca3d06$[email=1@ozsrvnegr]1@ozsrvnegr[/email]=
o.ozlan.local</A>...</DIV>
<DIV>Joaqu=EDn, </DIV>
<DIV>Â</DIV>
<DIV>> Yo lo que quer=EDa es que al hacer oDataset:Update(), =
salvara=20
cada campo y el<BR>> calculado de la forma que le =
indico,</DIV>
<DIV>Â</DIV>
<DIV>Update() graba el valor de su buffer. Si el buffer no ha =
cambiado,=20
puesÂse queda igual

</DIV>
<DIV>Â</DIV>
<DIV>> pues si se hace como dices da error de "requiere=20
bloqueo".<BR></DIV>
<DIV>Si te da error de bloqueo es sencillamente porque no =
est=E1n en modo=20
Edit() o AddNew(). Si quieres cambiar el buffer del DataField =
pero no su=20
valor en la base de datos sin estar en modo edici=F3n, tienes el =
m=E9todoÂVarPut(). </DIV>
<DIV>Â</DIV>
<DIV>No obstante, yÂde la documentaci=F3n:</DIV>
<DIV>Â</DIV>
<DIV><IMG alt=3D"" hspace=3D0=20
src=3D"cid:000e01c5815f$16feca00$
0e00000a@ozlan.local" =
align=3Dbaseline=20
border=3D0></DIV>
<DIV>Â</DIV>
<DIV>> Si tengo 20 campos normales y 3 calculados, seg=FAn me =
comentas=20
al hacer<BR>> Update() grabar=EDa s=F3lo 20 y luego uno por =
uno habr=EDa=20
que grabarlos<BR>> manualmente???<BR></DIV>
<DIV>Me temo que yo no he dicho eso. Tan s=F3lo digo que hay que =
asignarles el nuevo valor. Perd=F3name pero esÂcomo lo =
llevas=20
haciendo toda tu vida. No puedo entender la =
complicaci=F3n.</DIV>
<DIV>Â</DIV>
<DIV>ODATAFIELD:VALUE :=3D NUEVO VALOR</DIV>
<DIV>Â</DIV>
<DIV>Y da igual que sea campo calculado que no.</DIV>
<DIV>Â</DIV>
<DIV>> No entiendo muy bien como trabaja, porque incluso =
viendo la=20
ayuda pens=E9 que<BR>> el evento saltaba al hacer Update() en =
la=20
base.</DIV>
<DIV>Â</DIV>
<DIV>Dime exactamente donde da esa impresi=F3n para corregirlo =
cuanto=20
antes. Muchas gracias.<BR></DIV>
<DIV>Te recomiendo que le eches un gran vistazo a la =
documentaci=F3n de=20
los datacontrols. Y all=ED comprobar=E1s la existencia de =
disparadores que=20
posiblemente puedan serte de ayuda.</DIV>
<DIV>Â</DIV>
<DIV>Un saludo, </DIV>
<DIV>Â</DIV>
<DIV>"Joaqu=EDn Mart=EDnez" <<A=20
=
href=3D"mailto:
jmartial@interbook.net">
jmartial@interbook.net</A>>=20
escribi=F3 en el mensaje <A=20
=
href=3D"news:
42c969d9@ozsrvnegro.ozlan.local">news:
42c969d9@ozsrvnegro.oz=
lan.local</A>...</DIV>>=20
Ignacio,<BR>> <BR>> Yo lo que quer=EDa es que al hacer=20
oDataset:Update(), salvara cada campo y el<BR>> calculado de =
la forma=20
que le indico, porque adem=E1s no tiene mucha l=F3gica<BR>> =
pues si se=20
hace como dices da error de "requiere bloqueo".<BR>> <BR>> =
Si=20
tengo 20 campos normales y 3 calculados, seg=FAn me comentas al=20
hacer<BR>> Update() grabar=EDa s=F3lo 20 y luego uno por uno =
habr=EDa que=20
grabarlos<BR>> manualmente???<BR>> <BR>> Y aparte, si =
estoy en=20
un "edit()" al hacer lo que dices estoy con el buffer<BR>> =
por lo que=20
en ese momento no quiero guardarlo en la base de datos.<BR>> =
<BR>>=20
No entiendo muy bien como trabaja, porque incluso viendo la =
ayuda pens=E9=20
que<BR>> el evento saltaba al hacer Update() en la =
base.<BR>>=20
<BR>> Un Saludo,<BR>> Joaqu=EDn<BR>> <BR>> <BR>> =
<BR>>=20
"Ignacio Ortiz de Z=FA=F1iga" <<A=20
=
href=3D"mailto:
InvalidAccount@ozs.com">
InvalidAccount@ozs.com</A>>=20
escribi=F3 en el mensaje<BR>> <A=20
=
href=3D"news:42c96648$
1@ozsrvnegro.ozlan.local">news:42c96648$[email=1@ozsrvnegr]1@ozsrvnegr[/email]=
o.ozlan.local</A>...<BR>>>=20
Joaquin,<BR>>><BR>>> El evento se evalua cuando =
hagas algo=20
as=ED:<BR>>><BR>>> oDataSet:MiCampoCalculado :=3D =
"lo que=20
sea"<BR>>><BR>>> Y entonces recibir=E1s en la =
funci=F3n=20
SaveLogo() como segundo parametro dicho<BR>>>=20
valor.<BR>>><BR>>> UnÂ=20
saludo,<BR>>><BR>>><BR>>> "Joaqu=EDn =
Mart=EDnez" <<A=20
=
href=3D"mailto:
jmartial@interbook.net">
jmartial@interbook.net</A>>=20
escribi=F3 en el mensaje<BR>>> <A=20
=
href=3D"news:42c91e5d$
1@ozsrvnegro.ozlan.local">news:42c91e5d$[email=1@ozsrvnegr]1@ozsrvnegr[/email]=
o.ozlan.local</A>...<BR>>>=20
> Hola,<BR>>> ><BR>>> > He intentado usar =
por=20
primera vez un campo calculado, y lo lee pero no<BR>> =
lo<BR>>>=20
> graba, este es el c=F3digo, es igual que en la ayuda y =
nunca llega=20
a<BR>> grabar<BR>>> > ni<BR>>> > a mostrar =
el=20
logdebug:<BR>>> ><BR>>> > oField :=3D=20
:Datosemp:AddCalcField( "MiField_c_nomlogo", {| oField =
|<BR>>>=20
> oField:oDataset:c_nomlogo } ) <-- Esto s=ED =
funciona<BR>>>=20
><BR>>> ><BR>>> ><BR>>> >=20
oField:OnSetValue :=3D {|oField, Value | SaveLogo(=20
oField:oDataSet,<BR>>> > Value ) }<BR>>> > =
<---=20
esto no lo eval=FAa nunca<BR>>> ><BR>>> =
><BR>>>=20
><BR>>> > Function SaveLogo( oDataSet, Value =
)<BR>>>=20
><BR>>> > logdebug( Value ) <---- esto no se =
eval=FAa=20
nunca<BR>>> ><BR>>> > ::oDataset:c_nomlogo =
:=3D=20
Value<BR>>> ><BR>>> > Return nil<BR>>>=20
><BR>>> > Un Saludo,<BR>>> ><BR>>> =
>=20
Joaqu=EDn<BR>>> ><BR>>>=20
><BR>>><BR>>><BR>> <BR>>=20
</BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BODY ></HTML>
------=_NextPart_001_0014_01C5816F.DA8E9EE0--
------=_NextPart_000_0013_01C5816F.DA8E9EE0
Content-Type: image/png;
name="Image1.png"
Content-Transfer-Encoding: base64
Content-ID: <000e01c5815f$16feca00$
0e00000a@ozlan.local>
iVBORw0KGgoAAAANSUhEUgAAAoQAAAG8CAMAAABwqEQgAAAAB3RJTUUH1QcF BywC2akXGQAAAAlw
SFlzAAAOwwAADsMBx2+oZAAAAARnQU1BAACxjwv8YQUAAAAJUExURf///wAA AAAA/1NTRtAAADN6
SURBVHja7V2JduSqDkTz/x/9zkvaoKVKgO3eclVnJt1m0UYZG6M4rRUKhUKh UCgUCoVCoVAgkB+4
kuaKVF0mydQ/vmY9CoUf/JBEM8VxCbRO6gIJi4OFOe4lYaGwBvGc68T7vRA/ LtCPy/S4Wv/UmpLx
/VGn6nXT3vPdrhc+BPYmsN8TKiKG/4+WTXyhZa871odSE2VBwZOw5QTUJGwJ CX0dlVMorJNQXVZb
ixVdVpGwsI30nhBOdv2LZxObEVuRsLAOTULJyHjtnrBIWOAYF1dHHLWy7U0v rI5//7/b20KhUCgU
CoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVC oVAofCJE7KtpjmL9
i+r0ZYVXdd8tcC5L4oGcU6tfCYAqw6/6SyrljDN5a9kVEwZ8y+KLYyeLZVuN VgQ89X0MCyRsj1cm
Xhria4PyFBLSLqtiioQ34ckknDrxbhJeEfMuEv5clNR7ZR4j1N+venw7WvTx G+860k36S167kiHJ
ye26nKKHbePQWSde41DzaONk2dLWvXZeuQ9f4jzTZeptPMCd46V6xMqgqKn3 ipJgCrZZkIig7bBT
G2i7SQPBiIXCG9MX8BMSGiqIiqL5FspjoTlqzuMW5QpTpMwSppTYEOpb86XR d2gjNV5VQjtQUJrp
He2RhjsRe5jNVIQRM87PZAxhMGZKg6XLJGxAB9PbvF4+hsqaxvtDR+Kw4Aac Faks67vtTM8gG6mG
tFoGep0wzjhKuCIGE5k+O5NaZ2DOMhfClhbC8m0SPt7pNidhb6gD73vrV8L6 uAmbfZSUOQmNRis4
IaHoa0vsPC645nW0o2JobkirmwZN1cFEYOWUhDiY5u32KyTUYoDtngH2BgLH tQ8marxLQjgtIafC
mRJnEKceVkqqck7CWSWfCRsxJ84q2pigriUmCamaqKUkpM2iaykJtS9ZxIRE QYC2rPEJEuIbNDhj
LRGAs0/ct6jopx9S4+8HaSUl4cSqWbOjaUMdPQn9ZL2ryCoBjkzCyCcHPOZz ORMyRKU7JFQLqENW
WG0dR9bI2ASvjtWbW0VLgip/zTKXwGb62qV1FOdkNX+1kK4CrVbpolXp8eEI JHSrf+N+sMcrcoM5
nqoLCQodr4a1gRj2VbyRM1kdD2dJ5D4fsl33JY4Vvgd7JFyf4QuFZWzOhF8z wxcKhUKhUCh8JWSp
6IxYSerutnkmUtaa3WjRWjPZ6U1kmj87qIVR4TidFNj2xhvxm0h4Rb5s1sqk 54csayQcH89rzxso
9IB6vkb9IuFmbZFwx8/PIKHK2FOJPekOgs8qFFcZn/yb3YLeqZnn7K2Ffj1X r4sR1zwKGCUudw9s
woC8vcQzklMJ3IUtc8MHCYnZODbeNatAEqNMFzcwKA80G6nrJDw40joJNXP0 TlS/nTJbdgIr3ebi
cHV0alFwA4JdL9s8LZGWW++kTj1DZlF3Y8vMcGTrNDYSXRtJSJOU0EDC3Ofc muskdBFk7JDQxVVY
82wDO+njTs3rwGMSVcXYNNrTx3Xan6qLJgXFuCUeQuxlYMucqMDHRrz9qbCZ bdxnSsI7gEiIcsxA
lphKYov5daaBDL9AvqBPlMP5dkTV0AYtUyVxgFyy34pnXqsEn4S0BCa4lEUT LNTnGSQ0dIw+a6v8
nGvsu5uE8ESmgYhTHzyN1GwYz/ZF+cLkM2dy6ZnFubrYeTITUiaZCpmY3bKg aEadIOEsZkTTPbMh
+J0Qae5WB9/2uWZwVMJ9i+rUTKsW+wXLsCpM+3SkjORNz3BOuHDBmQnq1Pz9 hCJjny0SMm99l8Tn
qQcXSagWi4dIn+92HNkuMbOvDQG2gTSXS6dIGBPlehudvydRFU7IU0pEi/Sd eqGJbeIZWR37CEXB
cKVrDLckhEHHuYZuYERdJqVlRukBODpnPqfW3EDCV3R5kWWvUPkGs/48ioSb KouE96NIuKmySFgo
FAqFQuE/D9mueIdBS8aI/7bogpysW+4ii99Su/d8Om3rnZF4I3atlYXumzLv G7AXrPJkrWuR8EmO
ofZFwmf7dM7WPcXpy/l8DhveOjnevhdy3NKXCE5eZChAe3PtecJjLOz7UdGV 7HV8yiaz+aC2dHB4
QMYEMcV5qDeLWoM7Hj78fjMnq4MD3JAzMK2wURl5uuSEhGZfMP0wLXVf9SGg R1oZNs5Cz1GiGjQh
7RoyvfeBumOGoR9sV7ngD3fJm4I8RBYpwWHoggpaJ41ZyUbORaARGS78MYop CRtwETichddWxIDR
SkzChkrdvIJp17wQO28EawC7XC/nfxb3RkSg1qYbjZaAsEDB6dAsDzCJNiQh CgumxQo69U1OnLjL
nsw8dTyDyXax8vgIKYVijchJiPP1YqFEa5wlJE3O/WYC1m+9gwmMloQmgXCB hDYODdhNhsaHuxnT
WyixI6f44Ejow+J1i6xejyHJsylwdSYkhJmcL+l5hWXCeRQVMlfCkMcQ0Klr NgVyEsJ5LCEhnbwm
sxE0D8YMj2XLPmjAraUbJMxGB4+5EMPdR1pJKRe1UxKCXzUJhcCaeBRcbA03 y6SkpyowZUbCoBSS
kCnNzINjmaYVOtmrDq+RcLI6NsSASzBLp5BshysPP/E6LGg/gmVvE1DCIyiE 1uSv41M6nd1IChQx
zPQk1N3EVeqIEqUN2M3quHmLSaJsdZw6fFey4QSv0PFOyMm6d9r1STJfgq81 /KJ/Gxeal9r1aTJf
gq81/LLjL7nQvNaldxtQKBQKhULhE7B7S7B/CyHo63PuRDakSlLhzTxprHuC tm7NxkO22ZHsdCJq
SCPo2rlQyWbHvXC6ki8h4XmpodtueM8rhGSYObOg6SnnT5RRJDwpY03NO0l4 utl6k2skHOlm9PH3
ECz2Ef6jp2koPU0QbJ80sP3g+zbzh4Nfm/cWt4h4yp6KCTFMBa1HBL9ZEBpu 4+7fvZDneNJUyeh3
EgU9GmJ1qiEiAp2HKQePKOmdNRCC41toD/YXobDRjCZ1KIkuVVHZE5RHYzOL bGvaP2zrOoWAhJOo
AOcWDJ+4sRifzO80ikiEBC+gQBeeFSKq2PIway98qFxXacFvFtLm9WECC7BH 24xHjxrWEuGWOcwS
GxPsGCAhVbxFSWoVrV9oQq1gHmCCh9DPYdLaSG6eDjhLg7P5bsZSUJFlqC2R 8Cl5byHV8VUkdBdg
HEp/OV6Mj+iCtijiFAlBpsba9RiIQqb0gEObnM3ByvS8Zm6nJAQBabnUlolq xI6XkXAeFWjHYnzW
mlwlIT8jFki4cptlzGIkFGipqpgzM2RhB78ENL0r7y2JOyHhOKBRWSHh7ESF tJo4BXMg9+OyRUKQ
2LlCwrESxLl5WUaeWdG5Ze/jq5geTRcaesPExZ+JRqwRz817i7/PQFL2bEys YS4qeI0FFVM3xNuW
5HgeJb9K/Qo2iEij4CgZQjAqokA3NN8LWSh5r2HxS+GPoUhYeDs+loSHNcOc zzKsUCgUCoVCYQun
bmUEdb12UyTbFTt64b3lifu50GXW88Y7xX1R1EYR/HoEMU12fX2la6zn15Hw kukfS0IJX9dXd/y0
fO6y6z7pRcLbg3JG1LeSEDy5Z0l7SX5d3DKwz83D0/3jkTt+/wH4k8hLqY1r aYN+EwCnHDo9yy81
9C+DIPWz9MnMB7alZPejUDahppROj9Qq5IiQTjb1fw87sWKfhIovXYuuiDuM sa6FTkYo3KQcVEM9
FRGWey6ob4mHEz2ki7AoMuuBo3Brb+YD2AxUypGN6iR4bCcKUSFQgIlHasU2 CVtj4RkfzXxdCH3L
8kt6s8DroArYoYXDUQuyKAkoa7Ae6H/U2EhLV+fk0rhPfABDCDUjA/iZwZzM +OK0rOOnf7j+PD5C
0t4KCcVeTonQPsSRhEaVGSZ96dcNtQaWESnIS2I60xOPBGm0AUXWe0fxebrm AxjCLJtwRkIdVELC
BSu2SZidDmaIlkg4WvOZUA8xY4RQA3FP2641Jq/lKlM98INqTKzHAcunt2xu RHMBCNAKCbXdmIQp
Xy6QMNyJo3hPxl2cNO0pvltzAbMCIglBT3wTlZ4cjXthDQV6YiMWieyOlqij 7ix4RYdw2Lg6E5o+
gcXSoLKGtGyRECXkhdw4my1ovzlGHS/aHzpo4loDIn3+oa7wPXsEtKGhLblc Ri/AOtrpGUdkUa8d
TuqRXB/3ZR+sRmKjiamI7R5UsGlBrHvUihtwiyShBwWCipJCkfA9qCgp3BAM d3NQ4V1BRalQKBQK
hcJXQcxHC0eS93MPXq8oLfwnQbk2J6FM6qdKi4CFH1wg4XI961Ak/JvomWN+ u+S30mxqHKlmYHvB
PEUP+w5uI6BBEQ2aIUopS2srfDeOLRm1SSNm4gkVdA/V7pzO9jkFtky0jQ/9 s/AHoEa3NT3erZkx
JnwgnaAYtEWO+1JtY4+1FQn/DjQJw6Y23KZ21IGdHrvn50hotWHdRcK/BE+p pSlsNi+6RzD7M2EQ
UyT8y8D3g2HoJWFfegcYSwwJcd/JPaH9X/h+qEwzCTMMSnxTqXh2hWsv3tnq GC+wWzfjsfLQR4Cz
7k2Aha/GO8dRtisKfw7vnExS3UXC/xDe+cg3010kLBQKhUKhUCgUCoVCoVAo FAqFQqFQKBQKhUKh
UCgUCoVCoVAoFAqFQqFQKBQKhcLLQP4GuG91s9LddsK63WCYemeO+u189e15 wfE9D60XZC52fPbv
Mu7JJ8N7zshtcm01k3mTE5ok/ugxkSUZsly44OCLfg/8s36h9pNJeIOk1WlM 4reXk9CpfSo+lYTi
34zK/uJ5U3+rPL7EdfIXzr26WI+1AinwRa/WMO9H/KtxCyTEZjZjXBaKETLn NXoRz9Cs/uy6DYtT
3d9SFv+cfW5zeEOQj0xQnEQ6NN95rYIJOHz9FfiL57g0XE+cyDDQrlkikUpx klBH8MYxp5yS0MQR
GtAkd8OEzCsmb4O0LyyLYaGhhRGkNsMB98FE0kikyYAtkbD/zWgU0ZSdeSXj YgsfkJbBHCwFlhAS
BicpCfV6JPzha2jAhuJZVKYk4aGViQXoA/qig5kppuOzSUKv00ynyQta1XjZ yskbWpuS3sfZ/r1S
J3FGwvCHyJORgH8XHqmKIYp/nVWVsHDNSRjCRUhodJlhCiRkf1Hej4m5Z4CR sePRYKTdgOm/HH+a
hDRamISMZzMSzhTszYQ+bhMCOOMoCQW3pLMK8HZlJvTaJA2Ebk9nwpapZeOR DVuc+hYHbAWehDRw
nIQzSxkJ/ev+RVeEvukwzkKT8FHiD07CjEebiokpekIzH5YrOPwyscBzlV/o GhsPSUyFA7ZFQreU
lfH1+G+PUOlkdWwj4f/wyVhemRAK1v+QaxUCw2xP8DfV0cNqU+e8cQbAI8EB DMGRaEpTg0hWnS60
0l3rcfP+EivdH6JxkYnjocbM+pQN2Hfh+yx+LsR87HS5Vf8bOr8R32r3s7BJ wo2r35b+N3R+I77V
7mdhdya8++p3QdoXXocLhUKhUCgkV//stsTm3In+clH7vOCE4DvvUpCTz7gL Eve5rWx7NN54Lyfs
KCXh8aM/0X2aB9uPPN3hzYZdOkk2bcFr3nMBeUKHG3GehIN7n0fC7f6nzXky Ce8PyMfBp7W5TDj3
+Nvv/FMS4g12/zj+kTUYdgXwNoFPT7QlNAdS/Sk9v10Cc+XgFkCzeoJi9/fo V1MuURJl7ynBdDRg
DcbMRaWhLNAGDQVbXolDcBNqm4MNpbWJqZHm2WRIaO4JfWBYbzEKvBK4YeqE UfGwP/UBBkDS5lii
/rmechnbzOMumReuKRNsDMjGmLdjvU6RELILk0BsRz4TBkILrJBET9BqlUtD 9UwgNN5XZLZREury
6EB2pnBdQRG1Lh1CKhiOEBnjNLghFOfQaW3T2mCa4O+HGbE9EoZ8tBkJbcLe IdsnuGmZITcRcM1k
LFhRwDbUXKLiPg2GZL5ZyqVEswMJWQ9AQlNBSJglBoKEkDZzyPQ6T8JQYl3A p9AmCWczAItdOhXE
mTB8TZu5gWhEeQsSQQeZW6f0NNYGT7mCetBYpiRMZzgQmLbm0GkWci89CdFv RIxjQELd/vgxJhVC
NqNLaW2gOprJyR3Eg+FTYzcZfzzu0aS8LYsDVETmvZa7xwVDcpHlQZs75E6u XRaGOfj38Ncmknz2
6Cf9S7DB5Lt1pqrbJr56ll6tc9m0zF5orOI5kKKPbCbjOE18fiNI+Au5ck6+ tS541Qefr44pK4zN
0SwTREMckgUKJ18/xnmqJgrFR0Mmx3vVr7f32/UUWpHw3XoKYA+zSPghjhYK hUKhUCisQk7UzCpp
G/PAcfmWKXS542brtAzb0e+pPx5qSWx5NmCvdE+YgCff3p6k2mkSXnIsI+Gm uLtIOIrEmSfbOm4c
6iIhbfNHSXhQsUgIhaKkN1MBH6M/WocsvqaFdePwk3Ukum83pDlrffuhm+G7 II0xVRK+40Aa2xpp
sFmw1e8tjZ+MhPytFWi7xpufjB5yz/m9l00JtpWUmyd3T+zGGcwugxuKw/xm ejuZUYMRRDP5BB6Z
ERXSqB9BjchT1H8mA6QzDsWxh9ENy3C0YBibHyg6er1p5nc2KtgyOnih0zoJ g+88/LpetFHuKyZh
Fm9bAlsrx1DunrdbQK+5p9YfLANyZxK3GQnT8aBhFF6YTwKwhDfPRhWGYAur JARZdSoAJr0OZ9u5
bW+lCGXGxb5DxCBhSB60JMT5cTHhL0bQJw6Gi6sWBZIvMQn9qngcY/FuQoNB RbE9QcKtbEo6eHao
bychmhAFdWmgIThZWuyVkJBrzz749NUWPM1kNObHhITjUEwFFS+TehuqazNh Y83bxMAWDLAS51g0
8Yf0wX9zylgSyiQIk3hB7TpcTq2gIybfewpVyprVSDEajxgedTylDAsq9vQc CRWZ1w2AM4yj9QoL
aUKbyQgMSXh6tFzeX1hHiXhFoGKUSLQnrqObUauMSFa2KOPwhwQuBGGVThaJ IcFRkFc+3zKSMFkd
Nxd2cjqx0Qsl5uQLngxv0mxKOHg4WoU1VMA8KiIvR4XcoyLyclTIPSoihUKh UCgUliDJUax44S3G
OVWiEwV6mYRHDWeePMikUCad7wze1WEDaZBvvH2UtaMXkXB1SLmASMKRj+IK Lxg3sVgWOy+6ORW3
P2wyE/JSFAnPGDex+EtIaMvvGVuWT8hfP5dlknVBJLcvCN7OZjOvM3iYGzTS dLzmO2u9j22X3+9H
coFJUkC2KIm9pRhv1pLywA5F35UTOw4kMdKVQHGnh82QkAX8LAeV1HH+qw9T 35qui7uGSqKVoesl
aGTCo9Qs3ZDWa6saqmzHLWBL//uYdQH9bHJzBfTPbsACb0Ml35l2Q8aicsew eRJiZedJqELWiLtg
CKz94SN2FtQ/hgpTvzGrBGlsjccQC58RUCYRMMfSEk0uItHaYKYbFRhjGhzu 9d6wja8CXLiHhJMs
O3A1cylo5gik2IHUfJmFyl7Z6IQgwAFxpz0wYJGEx1VZxSxIF2Ntb5q60Zi1 mIShIxgyGHVhtuwN
2wtIGM+e9MwJc2MMnpUhrP90JmysQuZWA6v2STjqccwGCW11m7jREjcACaFq Ok1GXlwdtqH9OSR8
SPWnVT6ctkQPV/PiXD0UrEQxrcKswhph/4SE/Z5Q9i/Hxg1JGirDsuBjEmYe p6fmHcPWSTg73U+x
EObE/ZzcYupF9RBTIr3/QTKU26dmDSUxCteXAbBW7J3tWFiNzp1mDADX6jae 0rgFyrAkxMyTEK6O
6ZLX1is3XJzFxkhZE4bM2oXFnRo2be4gokTVd+MZMtcEy5XOhb+EImHh7SgS FgqFQqFQKPxnIHup
dK7QfV40hQg6Jf3Wm0dZKroiIHvA0R8d3efCoqxTwyFLrbyHO1lM0JebWCLL LU+JX6mT5dK9IIMe
mySUW8+rK6KWFpab5+gNJLzJl48l4T1GFQnTThupdDBfj24KxGf2/cOnG/Q4 i3myb989OCxgVlhh
y5l2or6M7L2+9cC3dWzc1QkdlLvXUHgBbg/FbP30TZNJgPEmlwhqCfqZNzPi gXWF5IUL+6/+PG4B
W/pfhT/uXdo9sFEeK/DWpmKgbmg16O2lLH9O0zlv6ewag3MU6Z/cwxasJWa2 YJz1ynWzW9mNqfeh
IXGOHsR+84FtiYarJJz/H/KBI8rINrFQfDMrTbQgLEUyK4IwNiDALude65Oi MTt6mJbMzjpGwmMq
1KScBjhWNHQEP6iBSScQNNPkHhKCVLrj/zxf8PExzaXTFSrWKH+Q9jMxlDjh pZl20fYhRHkwzaik
JJzlaiIS+qsTJyG1wuRTgDGi/ZKBtX1jxsYTSGgDBALQP2bno6toxOUhZna6 Z9cdPBNCrhjmOYar
mdAGd2NunDnMSBj+cxJOrLDf2BEloWuWaLhKwjOpdOJtVScMncPQxKUrDAmn MyFsE4Uxnjq7vPBA
yITLG+fKNgnvvCfUY+SUBudRJ1uIz+mzJBzPQw3xQCpdN5TnC6ql3+OjhYoW NCjvXFmzUiRaMdp4
Ya6/4VewawzHMLWNlllqnr0xiGZqh6EAURf93uLwxpGQBni+OjbWoT8+jVbH Sq8rDBrOk/AJ+Awr
/hLcZU9Im7Oyb5L0UfgTTnwUioQ3uFW4CLsALRIWCoVCoVB4DdzjhsUe/HCr LxIXnsv79jfcyMzu
jvRjiCV1AoS4ovF0KIhMEjtXbHcKrofn1TgeTJ0yPT6+XNQWysaRf2IJRFwP 8/ot+o4uScs4Cf1O
wQjEXEt8aveFJDzsPk3Cy70WJ4Crtk4Mv4OEef8iYQsJgt1g+a2U/q01tHWg W7dj308feYFGsZI4
S7jTmwtqZlS7Nm4HQPs0SXc83oDgShpwQ+Uk6pTHEB6ffGfflei2cUbxcKul iZ1RqrHU5WTGjaeP
gttvtJtOtiLs76q9Kc1D/6EFjvkqSrR8dttgYz/Ljhbc4Y+mG0vAhnPQaXdZ Y2cQGsEhAK4HEwZz
smwStIlvpaKhiRZ/HCJtMAlDU0rCFppM+nIdJmh9HuhT4STNpEWfmCWy0sub Fs2O/dMz0mpqUwLy
dKbGPqKev0dCPT25K4y9fuQkXEi4a0O4yvlpfecfkVDXJEl3nkg66zG6MSWh z5rkJLSaMvKBxE6c
MmGT/5Ksz4/C5Znw9xNOLPTkN0xZmBvJKOmBASQEJGGVWHVDRs9IGHxKg2Ec nM2AfiZsxDYaTB/P
T0G8k7FhmpLw9z8b2rWZMGOCHgCfaKaLmm071Pd5Z4xVMNGqdjOh65yEBmid n5GahFfekYgD7k35
0JkQ5oSNHHmJkZ6tjofryTsBo8Q04U5d+m1dujrugyw83VG18SXNuyHI2eCM rzTNgndmJhyGu/Ot
BwiGHliqXPF5gB/Hw48z6IIjmjj/Daf/CP7MeKyS8FPvi/7L+Dvjoa7ck3Z/ x+dCoVAoFAqFQqFQ
KBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAo3IPx+rGfw3+/ +P3clhUP9G/ArfyS
202/CCfg25tw1YDF/k/3c0PBti3x9yT/2R+qEOEfktWPAC1fHBg52/3t7D1r x/MMX5V8KwkVw4qE
70KRsP1coB8/Hj/Nx7hoh3erPl6TNF6aol+/clys/QtOXRv22pv4blehYqCW 8GrYUQneG+sr9Utd
JEhtpqN428ILXoHH9m06VpqWCDyOQfEWQeNba8AcJUBQSJgcH64ZCe09YSDh P/MRS/4Nxf7dquMl
RaL+mVdHhTcu2Tbx/Unwo2VioBbx3akKWkle92olE9tSq2wPEgYBhpGgJBb5 CoEG+tGby0GFKQnD
l3g5Vlz7pwsdCYNW/SXESXVi7NFCIheaaQMrQuxWedbWKqfimG3UqpYJbqyE GU4tWhEuQdbSSQtd
ukrC32XycQEeV+V/qkJZJGZ2//kQfV7H16A2V6Pt19Li5djJ9wMhccKT0FgZ bN85N68kUpXyEySM
Bk5IiN9BN7EoGh/HkJBwTY416SoJ4+VYVTQ4E8YSMxPq+IWOdF5xzqUDiadW zgMfgeVKOndm00JK
wnSKzSwXZDi1CE9W1B0XyDaX49RdIOFBwH/wa5tcjpXx4twgJBQQeaGRs20g 5SEJKc/3KiUTZw3n
ymXVG05CFrjcIiycyYlncy6HnSyUhGRh0h9W///J9S/7Hl/tIlmtju3iSZSh ygfzclLjJ7iquFe9
BjXuzapeDIidvZoag7WKNqkMr3uV4A2asMMCPr4mN3gTzXCDGwI3swga36A5 gMVhdYzk+HB9F77I
5BtMfZ+3slz4Bg/+ncDTg/OZKBK+1YOn4avm7iLhWz0oFAqFQqFwK+wWx1Hw WF/fIP5EzRuCcINJ
t/izIUTOdJRJxV23imfcPp7pWVPkBvWfRkLZKD0r+U7PVuN3SqeErysPlm/0 zsp8ULFIeIfkIuE5
Q1IS0j2FRp+1myy0QxR81p5IBnmCselGZ/EbHN58WEeFM3/8X97zOo4mfdtG uAVEFskz5Lqi/GaF
478O71IySSeXJHqJhGKOwraNKlK7Xt20UCG6TcyKy9MFowDWdKOzSw2B5oM6 Kpz5I9hIHwn9k1og
zGEQ0UQXSAq0o5vVw3jg8D6VhKbxnAZZCRcwlHABMYJUqmRG0GhP1KX9sfWN C0AmpqHEsvYiEYM+
qefMRX0vkdCvisexWz6fJiFLXDPx8KlsUde4IshG6HVFSALQpzyqWyUhzOKb kNAnEPKUxyjLRZRk
+oFxUK5BdTbS0VfbyWXAXCGhsstU4I9zM2EckJTemYD9zpocjZiP6xZJyPUk JMwtAIFj8ZMFYxcm
NRjpWdia7bSLg3DuJFPH02Bno5COP5mLrADJdeXahRlBtW+7lluv2ggygpJg g/TNaMe6zD1fuCA5
/XFCnTHXnRLbJJQ+5xISJsvQaJnPRNPSQ1YclBynC9A5K6Gd5TE8wHyYIj8R Dv3pY8hXx6oyyA0W
0NUxTOEbw+F1mdWvPi+6zaAeX47BOBsG/UFccu2T4vJKW2ShpLCOIuEtuj4p Et+HIuEtuj4pEoVC
oVAoFL4JG3cRslYma/1FZw+AxqJ+EkmfdAeE3BER/cAleHdW1VbTq0F6RZCv 6ZDJcVK5QkL76OoF
gTkvGLgzEnGwdy+w85NO05eZWSR0LhQJndt6j4KkCIasOt3G7E2YjRyThcb2 P/z2gxoKGWq7+ONK
Iqo52JaYJAbGkhN5iEu5hoOHj2oZb70YuRg6b2B5VNJXCNp8ybjzI2q7zCYE 0mzBuHkEWpIbjZSD
DaXCtV5qK/RmkmkTvumvzZdoNaaHI6Ho2j6CnoTQaG5CIyVn8hCpgHCSiG6Q /N8blaCV2IkGUkzw
9Ki2PAhWRGxpfF8lIRbgiBJa20PMVTrerIKQ8JgzNCkxCYlBrRG/gAnUjZlI 3EafS+l/PXCbcQxu
k7E04ynaBTyq7iNwIW15noQhJ03lm7Ve/wQSmqtRIKGfShZISN8cdHMe4iUS jnPLXo5no+JMceOA
8yX1tb+TRfqwUhKqSssFZuapyzFmMaywHzfPhEq3I2H4v0DCUNcacnGHhFDd JRIad/XN6sKoWAK6
mbBNvpqmcbLDIx9KUjP3SEjuPoa1VB0iYS5NuBo3amT0ZIOEM02Ua/gmZ0eA c0es+RNSZnGcWJba
aUfIkBDNhHB6EaCNzjDrLMxeMmfqW/+gJLTSUPDQCtUqfpSZa9Q4nqyOlxMD Y4kZqbgMnIs0/9Hq
2N9VDN+Vq7NRoRo7SaKdYmwdQ6bDqs9quDr2XIiaTq+O7XDeATlZt6njXqOf Y+b9RrzQshcH4T51
s6m4SHjRiCLhiqh8Kr5N06kZf136M4VfMuLvkrBQKBQKhcLbIUmFuFbTO4UL txKyVJQvS/rTnefE
BkTEqd8KyhAnC+1vv0tc7PuSu1NZr5irXlm4rsd4n4RPiRC250x4WHtIQmGt L6i86rQqvFX1BgmX
hN04WxYJF4LxbDyfhBLy+eLLEEj+2FFo+rm/ixvltmPrTfq31r+7Dtg0YxbI P3G2ZpskKBFObE5k
028sEBQH41iy6QL3IdCu1OGFxFLwZgce6ztSAvkgsD22ExxsJl+umehL88Nh OjTWzxyxpr1W/3St
uGlIgyGhTCRAB63jeisMdhBkMhGdlGcaqVVAZXQTDtuSWYuDQAZ4n4SNKVG6 mLdjmlBtxBx5bc0L
aP5FfQumwQ4/TfTCxNrSGvcRFwZ3QkSiXCaa0YdRKpLQtWlIMwydi5Tk5s4G AY4z4MIG+pmgrykx
V4IFUit2mWohMSHmKvYuyoIwvUPT9HkILsfGHK85htZkGu6T0IhfJCHxZEpC HCUWOhNBE3Fi7sIg
4HG+hYRhGLdJmE7TjQXXzITMglghSIP56gcvI6EnzB4J4UQ2IaGRBaswCaEr M/+wtMTc6SDAcb6F
hNkgCImE/ULvQVS9D0cgZD7GbOgSc4DmyQe8EtA4WPEJ2aASppiSEISVdbwh JRCfaGGcXfC3WYgu
m6Ni1LlvUfHIVJN+BNZZbcShN7JqZ6YZs0CKozNHayYZgGB17K46NCLWMdsq iZ1O61N5heqo9UCq
4YhhZbH+VXQ9JRANAhjnayS8ircpLqc+zo0i4Z0O/RGn/iMkfG5e37t8+itO vdaPPxO2QqFQKBT+
49BPIx7fplf5S7cBuPParYWAxEHacVHiadPlZCB+O/37xe/nGTH7vnJPdFjn hBAk42bz58LvJ+Gi
RDnf9X5Pzvbt/f7ZH6oQ4V8ibNuU5DyeE+L+pcgZiUXCK30BCRXDTpHwou0T Et7leJCzkT2Istlw
Rh7uaEvgI/rHezKo0OC+T270pv2+w6/FlwfaTEOul/itXIdbOM3VIYGMhD+X 5d9r8+MKrT/GRVsr
pLtLLiBkcyiwajGddE6WFQ4eEd3IHlTxYxl5pKMpWcyPi00eHj72xwR01aap D+jXRC/xW0tbTMbD
AgEJ/5mPWNI5CO3lIYeD7IOmMpUWCCFJnR2wNRIqadlgQFdVDzZmaYlYg5i0 Fpox87IhcgIl10v9
ZpGbmjAloeKi/cpJ2KA/UOn0dHPdZ4RgZ2CzXzNsZg/qxDvjmElTi4lxLFVO 9dfe62tLzHHLSBhM
AySkmYZQL/ObkpCaAHM2EQl/l8nHBXhclf+pihAZ789CduKdJAzqdKbhjIQ7 OlVFsDWekytTKGwD
p9fW8FdJuvKZ0I7JTC+0hJFwb7r/xexyrCqanQmDPfOr1tNmQqxuATCUMtWJ ToWJbysUWZOWk1Dn
QVES6vkp10vNzyKnWs0EOhIeBPwHv7b5PaFkNp8l4ZwQOESLJNzLHkSrxEdT 1YN2dCVCJaKVs8sb
FHK9QX/0180TMb0u08v8VtJM5Gz2omoyXR33h9X/f3L9y77HV7tIhqvjkN0X Qh5DAH4vQNQ1fk4I
ycmyOhP+XXxIAD7EjMJb8CGjPzfj3wm826vCGr6GhIVCoVAoFAqfClkqWuwZ yhak2yyANh5CQJ3Z
g9H9mzL9BO/xTUCbPZdMop55hhatR8mSxLB7AGXJy/5SsyyXrpNwNkACCqck TJ59xkfZJ+xOe6xx
MHVJGz9OK2z90vl0iYST6B9W+ogno3A/CS+0XCDhQhh0AD6AhGtNtkjYP4uE j8fifZgfQSGJcXGr
BOcMoqYul83tlzjpIwBy9DxKRgKX2SEB+zordqNdkU6LLI9u2yX95dHx1ylv vf4aEzCjOT6D0uVM
khIQFZC2OYLeDT7iPwZjPVGBsvBQ0R5k7D/BPmDcA4LJhmi7aLR10gVJ194f pDN/kkvPjn4YN+wG
FcBO4uueSyr/UZQjmIQkWRKZY1TANlkvJTwM+oORxtjk/1USju8nXhXo2omR p1XYLrykNXP6mXnD
FcBhTK3EJciWbHzOuhS9ms2E5BxvE6tmFqUk1GfDyv+L86Cy5Niwluby1LTD LFWuaQlaHhoxm3iw
TMJ+zVNT4yoJqd0s/26ThKsuvZOE3j9MwnA5ZsRTd0X3XI618YLCsTc3Rg99 fNKIHYwgJFSM19mp
KQmZ3dmEuDkTzl16Mwlhr0hCY8ns8vv4vMpCc65AR2aU044YErKZEMbHyOq+ mTsoG4LxxGqNhLAk
WhlOpVUSbsyE83vCKQlnVs0soiS0lqh7QskIeZWEPQ77rwp0NvflW19SwBHr SzOjyEgfJFRrydFF
WjMlfhg37B5WWluUnfbbWZf6Fcx7pK23bUN4gWFWRbSIlWyujrXRehRuuhy/ As82MZzAX+XSG6z/
L6JI+GHW/yfxdBa+fhTvZGFxsFAoFAqFwtdClorWhcgFMc9xbceOszbLtFBO CIjlWI/YhzTj0dAH
DMISTpBQspKvJuFpkxkJZdJkVisrzRTbxDn9Jb8yXCTc8Hyv4w0kXNXTOhXf ScL4R3DHh3nQbvYc
jAfSwOaC6LY99wA9vwe6Yt+mtxlaeLafvywhyuFuqR5COiEVmUTWy3rdrAy9 hzGUhNAEIxMLsdk5
CVlgQeb/BcTMivGh68QHQ5NQdRnNXVtNQL9PJcGO2HK0sTvUbnycquabwyMv Q4A7LE66Lw0U6yVC
jBcrlTrph0gSXdBsryaW8eG4j4SeViuxM62Nm7ZS+w/doiqbkUEJjMcnjR6T 0Rr1kAcIB5E6kBlm
m0oLzd0lkvoSogudGAbOSEhjczMJVUpUpLzfSfetDwnQUyTZ9tAqQ6EVsULC cSVLZ2OaIOB7CJ2i
48UOzGtKMMuCMGtUlJIJSGjNChEC6RPM7CFBXfvHsW/8RBImatK55ojMaOtI SEYvn1syc+YktAaw
XnResj02YrFYiWfCRhSTmTA1S4gRbAhFfdE/lobjHtDB/TlBkhH3AWEkxOm8 qmISVCsiqqIEGjM3
4VOQEWdCaD8/CVigpoG0NohxVc1/6gs1C8QsMxsMpWM9HaN7Sbi0Ola2uYtE byuh0gl5fBXTo+nC
qEfLPgJwaXXcqFuDtmp1bJSvrI6JA4tJmopDJsXTkFCJjL5IUAmtf3T3Q+mO +er4ThKmeJGa51r1
CieeqUPAt/8KXsj1E5Y9r/krTDop+zOH46n42KTtDyThE5XoS3WhUCgUCoXC qyEnat6NGy2T2/2c
iYP1AjIFxm9cg9aqEbup908Kb4/UfUupDyThVPG9JDyt4pwZqyRMftlc/PBD pj5+3BUsSUqKhE/R
9f0kPCo+iIQov05njNm/CgyexW+k/bmNB9jG5quZPRK7PYATAcnGxIqBcONC eS/YBiRcsEv5Xg82
fvDwoUzG6xlGrkZ8C4I4maJLfi0RE1tvjPMr3TyRIR+nhs5IeMjou0Uua0/t WjVSkgtgTaN23Saa
ZbaVSCIg1LFmIHQy36FdsNMaMNv1jqa04xawLf0HJFSmOWOYF4QWNKJefsw7 mpKQhjiUEB4ZWVxA
O84o3QtGPXZ2LsEeDTZdN9D1ENS6QRtkIWYJyVLjDz5M//vhHslYIXaOhHRU rV1u1EwYoPy7SRhT
7WzJ4fUiCVmuX5QDXJokAnYDfCLc1MBw22C91+5GUdFqmyXIQ5Ibn5LwuCob Mc7riyRUvgeHTPaj
l2+CdgsJYXPr7ZIA0fWYhNnUsnrShhlo1cDQlNbxaTLGrHlxG8anJBz1nrh3 kTC2sQ6lM2GMwlUS
LrBmmvZ3nFKtSSYO3GvZD9ijQbPXDcQ92oIN2cmSjvuC8Q92jUXJnJT3kHCw yzoNI4pJKNqLFRLG
nDSdazbJgXu0CS7Fpd5x0oZ5Ja5M3Yzfg2D1AHF8dZwbGJwU673JifRcs/df MEKSuMuNb+MpjVug
jKEY3y0ZnHbvWzjP4OpYhUFF3FZKkL+3On4eZLFsufMrDCz84q/Epkj4xfgr sYl+yLprRcL3omJT
KBQKhUKhwfs5e6TT1czzICH9p+oklGzL2Ogki4Xe7RbvbPmd7sY98NTzPVGy 2olnHUZHTrlzAVMS
7jSeBkMmClZNvkhCYMY2Cd33E8N2Jwnn7ZBDrNmrlysXSXgmJu8nIarYJKF8 FwlX57ZnkxC+1Y48
1o9JAWbzYGwauJS/SSKg79hUM/aiBNQj6A4pcVYiamf2g6LbBwn9LsaxD2Hy /JrXY2xJEh5bGw1M
HiDfDHJOhzcsgk6HP0eZNOOX35RZd+cECcMGzihwG5y6pKdwoN62iyIRLA0d u1m+SbTFVVgtocQp
Zd4ngRgkdPu5Wpb2ErsTLDcGOCracyzrqZwRH5DQyZAQ+OV3CZfdOUNCxIbU V2WMZ1AmoLFSTEL/
VRqyJZDQaQl1sSmRiHVAsqmpg44atMUHc8QBtrXnD+xJT2zXyZMQ2d9OunMC OySMSYQ7JISJgDMS
iruYhpM/pOP5VD+dEtf8oda/kBDJSWimDZ2Eh9xR4VBx0GkT0W4xQtywJ6bj ToGEIg2SUHFz2Z3n
ktD22iRhLA3NscrZTGgkpfNZ9EVmJYskBAOIRi1aR+IA7fZnNQ8WjykhIfFB VLstd55LwnwmlImA
TCyrE/EKJ/eEcVLwM8oK5WYkXMjxa7ZjsE6grxLj1ag9jTs9GwzjEPHhlDvX SGgvC249ZUvGw2p1
JQir4zB44kMgDXQ0ZonxfpREk3QHCSLE9o8k7AvjWSDUuI0vqiJfHXflwtPz mgRD3fi0rKc1IVsd
a7vNybS8Okbu/FkIPXiPOSsmOAp9O/6YO+ciQA7eY06R8D8HN+bvj8Ha/Y+6 Ar7b4Hud/hPuFAqF
QqFQ2MTiDZnJMbQdZN77sl3aCt1AmXWD8qmIr7hdumbkW1xcJeFK+SUHJD1U hfL4KqbhHU+yvoyE
slV8Vwye78k3kPCgYpHwGUY+wUWQkkb3MqSxP06kbbMpg2MrAyjoJSQvzpWA XZUorv+88Dd8d97a
mOVdIgU80I1W0FzMUNm36XzE8AsEW+jZ7DsvgELKgPMcPIzu+38SCvNqZaXL uUB9xHcV3CbrpYQH
S0R7pSlpt+gS57tR0CDzEXXn2+NRTpRBRsAbGHVMIibcSKBS/wQKMQMukXB8 VcIbOBLUKkiCgwBH
xXHDVUpS0ZglayS0JlOjZgYB3eiUcNamkYz+xf6zoYuC7dcVZ4UrpAw4jW6b SBCuU+wEnPz0cnwf
CbHeOKzxcuxXxSbnIkT1DAmhuGE0jS6SDDI3YiqFBIl46NxAhsREYKS0EHKq kDLgKgnhCZRNgfBU
v5+EsFcMhv8Q9UX/gI0vzIQ0iFl000jCCh41JpGGcjqBd6mZQsyA01A0STzJ ql3AExKm4VwYc0pC
H5MYc3U85doGCbNeNLrqEPQgAY83m/4mL4kzmgkXnE0UQgZcYCFMSYur47T6 ccSuGmJlDQneYZGs
ZGl1LM6qQMJk8RrPDG+QyRVEmXrSsIJA3enq2PrXQmDd15U3OmIjlbNaZfDN BOfW1XHhLZDtitMS
CwWMImHh7SgSFgqFQqFQ+AOQ5ChW1O1K4QmQtaMiYeF5KBIW7sR2xhtKSFNH LoctbpEUCg5gk9Fs
VsKtRrCRaY7iDultu4yFPwh78aRb9e4aG2kXPmLnImEBA2QaNJhUMcmaczl0 McetrscFBpjOk2RJ
kbmRXI77R12OCxyKJ46EyT0huEs06WYgHW7UFwoe2xlvJCFN/zZXF4cSEguF VRRfCm9HkbDwdhQJ
C4VCoVAoFP4a/gftI3XQlaYIlwAAAABJRU5ErkJggg==
------=_NextPart_000_0013_01C5816F.DA8E9EE0--
Attached files