Re: [Boost-users] Deriving Serialization classes

Hi Miguel, you can find what you seek in the documentation under Reference, Serializable Concept, Pointers, Pointers to Objects of Derived Classes. Two possibilities: * eiter call ar.register_class<A>() * or use the macro BOOST_CLASS_EXPORT(A) Have fun, Christian Pfligersdorffer Software Engineering EOS GmbH
-----Ursprüngliche Nachricht----- Von: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org]Im Auftrag von Miguel Silvestre Gesendet: Montag, 15. Januar 2007 16:30 An: boost-users@lists.boost.org Betreff: Re: [Boost-users] Deriving Serialization classes
Anyone???
In the boost code I found this comment:
// note:if this exception is thrown, be sure that derived pointer // is either regsitered or exported.
How can I register a class????????
Just make the test without a pointer ant it works just fine.
I've looked at the documentation and it only refers to this
On 1/15/07, Miguel Silvestre <msilvestre@gmail.com> wrote: problem on
derivated classes! But I'm not deriving any class. I'm just including the ponter of a class :(
On 1/15/07, Miguel Silvestre <msilvestre@gmail.com> wrote:
Ok!!!
Now I'm getting unregistered_class exceptions when trying to seryalize a class that has another class. Like:
class C : public Serializer { typedef Serializer Parent; public: std::string text; A* m_owner; int32 dasse; C():m_owner(0) { text = "Ola sua puta rabeta!"; dasse = 69; }
void Serialize(IArchive& ar, const unsigned int version) { ar.Serialize(dasse); ar.Serialize(text); //ar.Serialize(m_owner); } };
class A : public Serializer { typedef Serializer Parent; public:
void Serialize(IArchive& ar, const unsigned int version) { ar.Serialize(dumbi); ar.Serialize(vectorTest); ar.Serialize(matrix); ar.Serialize(testing); ar.Serialize((void*)test_void, sizeof(Vector3f)); }
int dumbi; float dumbf; Vector2f vectorTest; Matrix33 matrix; C* testing; Vector3f* test_void;
A():dumbi(12), dumbf(69.69f) { testing = new C(); testing->m_owner = this; matrix.SetIdentity(); test_void = new Vector3f(1,2,3); }
A(int dumb1, float dumb2) : dumbi(dumb1), dumbf(dumb2) { testing = new C(); testing->m_owner = this; matrix.SetIdentity(); test_void = new Vector3f(1,2,3); } };
If I comment the line that serializes C object from A (ar.Serialize(testing);) everything works fine. I can serialize Object A. And I can serialiaze the Object C to. But when I have apoibter to C on object A It throws the unregistered_class exception?
Why?
How can I avoid this??? On 1/12/07, Robert Ramey <ramey@rrsd.com> wrote:
Use binary_object.
Robert Ramey
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Miguel Silvestre
-- Miguel Silvestre
-- Miguel Silvestre _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users

Now I have the Unregister_cast exception :S. On 1/15/07, Pfligersdorffer, Christian <Christian.Pfligersdorffer@eos.info> wrote:
Hi Miguel,
you can find what you seek in the documentation under Reference, Serializable Concept, Pointers, Pointers to Objects of Derived Classes.
Two possibilities: * eiter call ar.register_class<A>() * or use the macro BOOST_CLASS_EXPORT(A)
Have fun,
Christian Pfligersdorffer Software Engineering EOS GmbH
-----Ursprüngliche Nachricht----- Von: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org]Im Auftrag von Miguel Silvestre Gesendet: Montag, 15. Januar 2007 16:30 An: boost-users@lists.boost.org Betreff: Re: [Boost-users] Deriving Serialization classes
Anyone???
In the boost code I found this comment:
// note:if this exception is thrown, be sure that derived pointer // is either regsitered or exported.
How can I register a class????????
Just make the test without a pointer ant it works just fine.
I've looked at the documentation and it only refers to this
On 1/15/07, Miguel Silvestre <msilvestre@gmail.com> wrote: problem on
derivated classes! But I'm not deriving any class. I'm just including the ponter of a class :(
On 1/15/07, Miguel Silvestre <msilvestre@gmail.com> wrote:
Ok!!!
Now I'm getting unregistered_class exceptions when trying to seryalize a class that has another class. Like:
class C : public Serializer { typedef Serializer Parent; public: std::string text; A* m_owner; int32 dasse; C():m_owner(0) { text = "Ola sua puta rabeta!"; dasse = 69; }
void Serialize(IArchive& ar, const unsigned int version) { ar.Serialize(dasse); ar.Serialize(text); //ar.Serialize(m_owner); } };
class A : public Serializer { typedef Serializer Parent; public:
void Serialize(IArchive& ar, const unsigned int version) { ar.Serialize(dumbi); ar.Serialize(vectorTest); ar.Serialize(matrix); ar.Serialize(testing); ar.Serialize((void*)test_void, sizeof(Vector3f)); }
int dumbi; float dumbf; Vector2f vectorTest; Matrix33 matrix; C* testing; Vector3f* test_void;
A():dumbi(12), dumbf(69.69f) { testing = new C(); testing->m_owner = this; matrix.SetIdentity(); test_void = new Vector3f(1,2,3); }
A(int dumb1, float dumb2) : dumbi(dumb1), dumbf(dumb2) { testing = new C(); testing->m_owner = this; matrix.SetIdentity(); test_void = new Vector3f(1,2,3); } };
If I comment the line that serializes C object from A (ar.Serialize(testing);) everything works fine. I can serialize Object A. And I can serialiaze the Object C to. But when I have apoibter to C on object A It throws the unregistered_class exception?
Why?
How can I avoid this??? On 1/12/07, Robert Ramey <ramey@rrsd.com> wrote:
Use binary_object.
Robert Ramey
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Miguel Silvestre
-- Miguel Silvestre
-- Miguel Silvestre _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Miguel Silvestre

Could it be the RTTI? I'm must use RTTI Disabled for my project. I'm reading the documentation, and trying to use the BOOST_CLASS_TYPE_INFO BOOST_CLASS_EXPORT now, but without any sucess either :S On 1/15/07, Miguel Silvestre <msilvestre@gmail.com> wrote:
Now I have the Unregister_cast exception :S.
On 1/15/07, Pfligersdorffer, Christian <Christian.Pfligersdorffer@eos.info> wrote:
Hi Miguel,
you can find what you seek in the documentation under Reference, Serializable Concept, Pointers, Pointers to Objects of Derived Classes.
Two possibilities: * eiter call ar.register_class<A>() * or use the macro BOOST_CLASS_EXPORT(A)
Have fun,
Christian Pfligersdorffer Software Engineering EOS GmbH
-----Ursprüngliche Nachricht----- Von: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org]Im Auftrag von Miguel Silvestre Gesendet: Montag, 15. Januar 2007 16:30 An: boost-users@lists.boost.org Betreff: Re: [Boost-users] Deriving Serialization classes
Anyone???
In the boost code I found this comment:
// note:if this exception is thrown, be sure that derived pointer // is either regsitered or exported.
How can I register a class????????
Just make the test without a pointer ant it works just fine.
I've looked at the documentation and it only refers to this
On 1/15/07, Miguel Silvestre <msilvestre@gmail.com> wrote: problem on
derivated classes! But I'm not deriving any class. I'm just including the ponter of a class :(
On 1/15/07, Miguel Silvestre <msilvestre@gmail.com> wrote:
Ok!!!
Now I'm getting unregistered_class exceptions when trying to seryalize a class that has another class. Like:
class C : public Serializer { typedef Serializer Parent; public: std::string text; A* m_owner; int32 dasse; C():m_owner(0) { text = "Ola sua puta rabeta!"; dasse = 69; }
void Serialize(IArchive& ar, const unsigned int version) { ar.Serialize(dasse); ar.Serialize(text); //ar.Serialize(m_owner); } };
class A : public Serializer { typedef Serializer Parent; public:
void Serialize(IArchive& ar, const unsigned int version) { ar.Serialize(dumbi); ar.Serialize(vectorTest); ar.Serialize(matrix); ar.Serialize(testing); ar.Serialize((void*)test_void, sizeof(Vector3f)); }
int dumbi; float dumbf; Vector2f vectorTest; Matrix33 matrix; C* testing; Vector3f* test_void;
A():dumbi(12), dumbf(69.69f) { testing = new C(); testing->m_owner = this; matrix.SetIdentity(); test_void = new Vector3f(1,2,3); }
A(int dumb1, float dumb2) : dumbi(dumb1), dumbf(dumb2) { testing = new C(); testing->m_owner = this; matrix.SetIdentity(); test_void = new Vector3f(1,2,3); } };
If I comment the line that serializes C object from A (ar.Serialize(testing);) everything works fine. I can serialize Object A. And I can serialiaze the Object C to. But when I have apoibter to C on object A It throws the unregistered_class exception?
Why?
How can I avoid this??? On 1/12/07, Robert Ramey <ramey@rrsd.com> wrote:
Use binary_object.
Robert Ramey
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Miguel Silvestre
-- Miguel Silvestre
-- Miguel Silvestre _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Miguel Silvestre
-- Miguel Silvestre

Try the following:
class A : public Serializer { typedef Serializer Parent; public:
void Serialize(IArchive& ar, const unsigned int version) { ar.template register_type<C>(); ar.Serialize(dumbi); ar.Serialize(vectorTest); ar.Serialize(matrix); ar.Serialize(testing); ar.Serialize((void*)test_void, sizeof(Vector3f)); }

I can't do that. It gives me a compilation error. My IArchive class is pure virtual and without templates.. I just don't now how to turn around this mess :P. Running out of ideas. Recapitulating: I have a pure virtual class IArchive with the funtions: virtual void Serialize(int & t) = 0; ... virtual void Serialize(Serializer& t) = 0; virtual void Serialize(Serializer* t) = 0; And my BinaryOArchive extends the IArchive Class and the binary_oarchive_impl like: class BinaryArchiveO : public IArchive, // don't derive from binary_oarchive !!! public boost::archive::binary_oarchive_impl<BinaryArchiveO> { public: BinaryArchiveO(std::ostream & os, unsigned flags = 0) : boost::archive::binary_oarchive_impl<BinaryArchiveO>(os, flags) {} FE_SERIALIZATION_SERIALIZE; virtual void Serialize(void * data, size_t size) { save_binary(data, size); } }; the macro FE_SERIALIZATION_SERIALIZE; is the implementation of the Serialize basic type functions: virtual void Serialize(Quaternion& t) { *this & BOOST_SERIALIZATION_NVP(t.q); }\ virtual void Serialize(Serializer* t){*this & BOOST_SERIALIZATION_NVP(t);} ... And I have the classes I want to serialize derived by the Serializer class: like: class C : public Serializer { typedef Serializer Parent; public: std::string text; A* m_owner; int32 dasse; Vector<float> vector_test; C():m_owner(0) { text = "Ola sua puta rabeta!"; dasse = 69; vector_test.push_back(1); vector_test.push_back(1.2f); vector_test.push_back(1.3f); vector_test.push_back(1.4f); } void Serialize(IArchive& ar, const unsigned int version) { //ar.template register_type<C>(); ar.Serialize(dasse); ar.Serialize(text); //ar.Serialize(m_owner); //ar.Serialize(vector_test); } }; but if I do something like: int SilvTask::WriteObject() { Serializer* testC = new C(); std::ofstream ofs(m_filename.c_str()); TextArchiveO oa(ofs); oa & BOOST_SERIALIZATION_NVP(testC); return FE_OK; } It gives me a cast_exception or a class_exception as I said. :S On 1/15/07, Robert Ramey <ramey@rrsd.com> wrote:
Try the following:
class A : public Serializer { typedef Serializer Parent; public:
void Serialize(IArchive& ar, const unsigned int version) { ar.template register_type<C>(); ar.Serialize(dumbi); ar.Serialize(vectorTest); ar.Serialize(matrix); ar.Serialize(testing); ar.Serialize((void*)test_void, sizeof(Vector3f)); }
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Miguel Silvestre

And here is my Serializer class: class Serializer : public Object { //RTTI_DECLARE; typedef Object Parent; public: virtual void Serialize(IArchive& ar, const unsigned int version) { }; template<class Archive> void serialize(Archive & ar, const unsigned int version) { Serialize((IArchive&)ar, version); } }; On 1/16/07, Miguel Silvestre <msilvestre@gmail.com> wrote:
I can't do that.
It gives me a compilation error. My IArchive class is pure virtual and without templates..
I just don't now how to turn around this mess :P.
Running out of ideas. Recapitulating:
I have a pure virtual class IArchive with the funtions: virtual void Serialize(int & t) = 0; ... virtual void Serialize(Serializer& t) = 0; virtual void Serialize(Serializer* t) = 0;
And my BinaryOArchive extends the IArchive Class and the binary_oarchive_impl like:
class BinaryArchiveO : public IArchive, // don't derive from binary_oarchive !!! public boost::archive::binary_oarchive_impl<BinaryArchiveO> { public: BinaryArchiveO(std::ostream & os, unsigned flags = 0) : boost::archive::binary_oarchive_impl<BinaryArchiveO>(os, flags) {}
FE_SERIALIZATION_SERIALIZE;
virtual void Serialize(void * data, size_t size) { save_binary(data, size); } };
the macro FE_SERIALIZATION_SERIALIZE; is the implementation of the Serialize basic type functions: virtual void Serialize(Quaternion& t) { *this & BOOST_SERIALIZATION_NVP(t.q); }\ virtual void Serialize(Serializer* t){*this & BOOST_SERIALIZATION_NVP(t);} ...
And I have the classes I want to serialize derived by the Serializer class: like:
class C : public Serializer { typedef Serializer Parent; public: std::string text; A* m_owner; int32 dasse; Vector<float> vector_test;
C():m_owner(0) { text = "Ola sua puta rabeta!"; dasse = 69; vector_test.push_back(1); vector_test.push_back(1.2f); vector_test.push_back(1.3f); vector_test.push_back(1.4f); }
void Serialize(IArchive& ar, const unsigned int version) { //ar.template register_type<C>(); ar.Serialize(dasse); ar.Serialize(text); //ar.Serialize(m_owner); //ar.Serialize(vector_test); } };
but if I do something like:
int SilvTask::WriteObject() { Serializer* testC = new C();
std::ofstream ofs(m_filename.c_str()); TextArchiveO oa(ofs);
oa & BOOST_SERIALIZATION_NVP(testC);
return FE_OK; }
It gives me a cast_exception or a class_exception as I said.
:S
On 1/15/07, Robert Ramey <ramey@rrsd.com> wrote:
Try the following:
> class A : public Serializer > { > typedef Serializer Parent; > public: > > void Serialize(IArchive& ar, const unsigned int version) > { ar.template register_type<C>(); > ar.Serialize(dumbi); > ar.Serialize(vectorTest); > ar.Serialize(matrix); > ar.Serialize(testing); > ar.Serialize((void*)test_void, sizeof(Vector3f)); > } >
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Miguel Silvestre
-- Miguel Silvestre

The following changes would make your classes compatible with all archive types and might well fix your problem. class C : public Serializer { typedef Serializer Parent; public: std::string text; A* m_owner; int32 dasse; Vector<float> vector_test; C():m_owner(0) { text = "Ola sua puta rabeta!"; dasse = 69; vector_test.push_back(1); vector_test.push_back(1.2f); vector_test.push_back(1.3f); vector_test.push_back(1.4f); } // standard way of specifying serialization for a class template<class Archive> serialize(Archive & ar, const unsigned int version){ ar.template register_type<C>(); ar.Serialize(dasse); ar.Serialize(text); //ar.Serialize(m_owner); //ar.Serialize(vector_test); } void Serialize(IArchive& ar, const unsigned int version) { // forward to correct function from virtual call serialize(ar, version); } }; BTW - if you want a virtual function interface to the serialization system you might want to check out "polymorphic archives" in the documentation. Robert Ramey

I've just tried that! Now I have this compiling warnings: d:\flow project\flowengine\3rdparty\include\boost\serialization\extended_type_info_typeid.hpp(92) : warning C4541: 'typeid' used on polymorphic type 'FlowEngine::Serializer' with /GR-; unpredictable behavior may result d:\flow project\flowengine\3rdparty\include\boost\serialization\extended_type_info_typeid.hpp(86) : while compiling class template member function 'const boost::serialization::extended_type_info *boost::serialization::detail::extended_type_info_typeid_1<T>::get_derived_extended_type_info(const FlowEngine::Serializer &)' with [ T=const FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\serialization\extended_type_info_typeid.hpp(111) : see reference to class template instantiation 'boost::serialization::detail::extended_type_info_typeid_1<T>' being compiled with [ T=const FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(131) : see reference to class template instantiation 'boost::serialization::extended_type_info_typeid<T>' being compiled with [ T=const FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(128) : while compiling class template member function 'bool boost::archive::detail::oserializer<Archive,T>::is_polymorphic(void) const' with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(264) : see reference to class template instantiation 'boost::archive::detail::oserializer<Archive,T>' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(263) : while compiling class template member function 'void boost::archive::detail::save_non_pointer_type<Archive,T>::save_standard::invoke(Archive &,const T &)' with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(322) : see reference to class template instantiation 'boost::archive::detail::save_non_pointer_type<Archive,T>::save_standard' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(310) : while compiling class template member function 'void boost::archive::detail::save_non_pointer_type<Archive,T>::invoke(Archive &,const T &)' with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(536) : see reference to class template instantiation 'boost::archive::detail::save_non_pointer_type<Archive,T>' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\basic_text_oarchive.hpp(78) : see reference to function template instantiation 'void boost::archive::save<Archive,const T>(Archive &,const T &)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\interface_oarchive.hpp(78) : see reference to function template instantiation 'void boost::archive::basic_text_oarchive<Archive>::save_override<T>(T &,int)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\interface_oarchive.hpp(86) : see reference to function template instantiation 'Archive &boost::archive::detail::interface_oarchive<Archive>::operator <<<const T>(T &)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\engine\include\core\serialization\textserializer.h(66) : see reference to function template instantiation 'Archive &boost::archive::detail::interface_oarchive<Archive>::operator &<FlowEngine::Serializer>(T &)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\smart_cast.hpp(76) : warning C4541: 'dynamic_cast' used on polymorphic type 'boost::archive::detail::basic_oarchive' with /GR-; unpredictable behavior may result d:\flow project\flowengine\3rdparty\include\boost\smart_cast.hpp(87) : see reference to function template instantiation 'T boost::smart_cast_impl::reference<T>::polymorphic::cross::cast<U>(U &)' being compiled with [ T=FlowEngine::TextArchiveO &, U=boost::archive::detail::basic_oarchive ] d:\flow project\flowengine\3rdparty\include\boost\smart_cast.hpp(135) : see reference to function template instantiation 'T boost::smart_cast_impl::reference<T>::polymorphic::cast<U>(U &)' being compiled with [ T=FlowEngine::TextArchiveO &, U=boost::archive::detail::basic_oarchive ] d:\flow project\flowengine\3rdparty\include\boost\smart_cast.hpp(293) : see reference to function template instantiation 'T boost::smart_cast_impl::reference<T>::cast<U>(U &)' being compiled with [ T=FlowEngine::TextArchiveO &, U=boost::archive::detail::basic_oarchive ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(149) : see reference to function template instantiation 'T boost::smart_cast_reference<Archive&,boost::archive::detail::basic_oarchive>(U &)' being compiled with [ T=FlowEngine::TextArchiveO &, Archive=FlowEngine::TextArchiveO, U=boost::archive::detail::basic_oarchive ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(145) : while compiling class template member function 'void boost::archive::detail::oserializer<Archive,T>::save_object_data(boost::archive::detail::basic_oarchive &,const void *) const' with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\smart_cast.hpp(76) : warning C4541: 'dynamic_cast' used on polymorphic type 'boost::archive::detail::basic_iarchive' with /GR-; unpredictable behavior may result d:\flow project\flowengine\3rdparty\include\boost\smart_cast.hpp(87) : see reference to function template instantiation 'T boost::smart_cast_impl::reference<T>::polymorphic::cross::cast<U>(U &)' being compiled with [ T=FlowEngine::TextArchiveI &, U=boost::archive::detail::basic_iarchive ] d:\flow project\flowengine\3rdparty\include\boost\smart_cast.hpp(135) : see reference to function template instantiation 'T boost::smart_cast_impl::reference<T>::polymorphic::cast<U>(U &)' being compiled with [ T=FlowEngine::TextArchiveI &, U=boost::archive::detail::basic_iarchive ] d:\flow project\flowengine\3rdparty\include\boost\smart_cast.hpp(293) : see reference to function template instantiation 'T boost::smart_cast_impl::reference<T>::cast<U>(U &)' being compiled with [ T=FlowEngine::TextArchiveI &, U=boost::archive::detail::basic_iarchive ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\iserializer.hpp(161) : see reference to function template instantiation 'T boost::smart_cast_reference<Archive&,boost::archive::detail::basic_iarchive>(U &)' being compiled with [ T=FlowEngine::TextArchiveI &, Archive=FlowEngine::TextArchiveI, U=boost::archive::detail::basic_iarchive ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\iserializer.hpp(157) : while compiling class template member function 'void boost::archive::detail::iserializer<Archive,T>::load_object_data(boost::archive::detail::basic_iarchive &,void *,const unsigned int) const' with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\iserializer.hpp(375) : see reference to class template instantiation 'boost::archive::detail::iserializer<Archive,T>' being compiled with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\iserializer.hpp(369) : while compiling class template member function 'void boost::archive::detail::load_non_pointer_type<Archive,T>::load_standard::invoke(Archive &,T &)' with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\iserializer.hpp(425) : see reference to class template instantiation 'boost::archive::detail::load_non_pointer_type<Archive,T>::load_standard' being compiled with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\iserializer.hpp(418) : while compiling class template member function 'void boost::archive::detail::load_non_pointer_type<Archive,T>::invoke(Archive &,T &)' with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\iserializer.hpp(572) : see reference to class template instantiation 'boost::archive::detail::load_non_pointer_type<Archive,T>' being compiled with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\basic_text_iarchive.hpp(64) : see reference to function template instantiation 'void boost::archive::load<Archive,T>(Archive &,T &)' being compiled with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\text_iarchive.hpp(64) : see reference to function template instantiation 'void boost::archive::basic_text_iarchive<Archive>::load_override<T>(T &,int)' being compiled with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\interface_iarchive.hpp(76) : see reference to function template instantiation 'void boost::archive::text_iarchive_impl<Archive>::load_override<T>(T &,int)' being compiled with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\interface_iarchive.hpp(83) : see reference to function template instantiation 'Archive &boost::archive::detail::interface_iarchive<Archive>::operator >><T>(T &)' being compiled with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\engine\include\core\serialization\textserializer.h(97) : see reference to function template instantiation 'Archive &boost::archive::detail::interface_iarchive<Archive>::operator &<FlowEngine::Serializer>(T &)' being compiled with [ Archive=FlowEngine::TextArchiveI, T=FlowEngine::Serializer ] d:\flow project\flowengine\3rdparty\include\boost\serialization\extended_type_info_typeid.hpp(92) : warning C4541: 'typeid' used on polymorphic type 'FlowEngine::A' with /GR-; unpredictable behavior may result d:\flow project\flowengine\3rdparty\include\boost\serialization\extended_type_info_typeid.hpp(86) : while compiling class template member function 'const boost::serialization::extended_type_info *boost::serialization::detail::extended_type_info_typeid_1<T>::get_derived_extended_type_info(const FlowEngine::A &)' with [ T=const FlowEngine::A ] d:\flow project\flowengine\3rdparty\include\boost\serialization\extended_type_info_typeid.hpp(111) : see reference to class template instantiation 'boost::serialization::detail::extended_type_info_typeid_1<T>' being compiled with [ T=const FlowEngine::A ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(435) : see reference to class template instantiation 'boost::serialization::extended_type_info_typeid<T>' being compiled with [ T=const FlowEngine::A ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(467) : see reference to function template instantiation 'void boost::archive::detail::save_pointer_type<Archive,TPtr>::save<FlowEngine::A>(Archive &,const T &,const boost::archive::detail::basic_pointer_oserializer *)' being compiled with [ Archive=FlowEngine::TextArchiveO, TPtr=FlowEngine::A *, T=FlowEngine::A ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(447) : while compiling class template member function 'void boost::archive::detail::save_pointer_type<Archive,TPtr>::invoke(Archive &,const TPtr)' with [ Archive=FlowEngine::TextArchiveO, TPtr=FlowEngine::A * ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(536) : see reference to class template instantiation 'boost::archive::detail::save_pointer_type<Archive,TPtr>' being compiled with [ Archive=FlowEngine::TextArchiveO, TPtr=FlowEngine::A * ] d:\flow project\flowengine\3rdparty\include\boost\archive\basic_text_oarchive.hpp(78) : see reference to function template instantiation 'void boost::archive::save<Archive,const T>(Archive &,const T &)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::A * ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\interface_oarchive.hpp(78) : see reference to function template instantiation 'void boost::archive::basic_text_oarchive<Archive>::save_override<T>(T &,int)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::A * ] d:\flow project\flowengine\3rdparty\include\boost\serialization\nvp.hpp(77) : see reference to function template instantiation 'Archive &boost::archive::detail::interface_oarchive<Archive>::operator <<<const T>(T &)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::A * ] d:\flow project\flowengine\3rdparty\include\boost\serialization\access.hpp(93) : see reference to function template instantiation 'void boost::serialization::nvp<T>::save<Archive>(Archivex &,const unsigned int) const' being compiled with [ T=FlowEngine::A *, Archive=FlowEngine::TextArchiveO, Archivex=FlowEngine::TextArchiveO ] d:\flow project\flowengine\3rdparty\include\boost\serialization\split_member.hpp(43) : see reference to function template instantiation 'void boost::serialization::access::member_save<Archive,const T>(Archive &,T &,const unsigned int)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\serialization\split_member.hpp(42) : while compiling class template member function 'void boost::serialization::detail::member_saver<Archive,T>::invoke(Archive &,const T &,const unsigned int)' with [ Archive=FlowEngine::TextArchiveO, T=boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\serialization\split_member.hpp(69) : see reference to class template instantiation 'boost::serialization::detail::member_saver<Archive,T>' being compiled with [ Archive=FlowEngine::TextArchiveO, T=boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\serialization\nvp.hpp(87) : see reference to function template instantiation 'void boost::serialization::split_member<Archive,boost::serialization::nvp<T>>(Archive &,boost::serialization::nvp<T> &,const unsigned int)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::A * ] d:\flow project\flowengine\3rdparty\include\boost\serialization\access.hpp(109) : see reference to function template instantiation 'void boost::serialization::nvp<T>::serialize<Archive>(Archive &,const unsigned int)' being compiled with [ T=FlowEngine::A *, Archive=FlowEngine::TextArchiveO ] d:\flow project\flowengine\3rdparty\include\boost\serialization\serialization.hpp(81) : see reference to function template instantiation 'void boost::serialization::access::serialize<Archive,T>(Archive &,T &,const unsigned int)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=const boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\serialization\serialization.hpp(140) : see reference to function template instantiation 'void boost::serialization::serialize<Archive,T>(Archive &,T &,const unsigned int)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=const boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(257) : see reference to function template instantiation 'void boost::serialization::serialize_adl<Archive,T>(Archive &,T &,const unsigned int)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=const boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(250) : while compiling class template member function 'void boost::archive::detail::save_non_pointer_type<Archive,T>::save_only::invoke(Archive &,const boost::serialization::nvp<FlowEngine::A *> &)' with [ Archive=FlowEngine::TextArchiveO, T=boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(322) : see reference to class template instantiation 'boost::archive::detail::save_non_pointer_type<Archive,T>::save_only' being compiled with [ Archive=FlowEngine::TextArchiveO, T=boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(310) : while compiling class template member function 'void boost::archive::detail::save_non_pointer_type<Archive,T>::invoke(Archive &,const boost::serialization::nvp<FlowEngine::A *> &)' with [ Archive=FlowEngine::TextArchiveO, T=boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\oserializer.hpp(536) : see reference to class template instantiation 'boost::archive::detail::save_non_pointer_type<Archive,T>' being compiled with [ Archive=FlowEngine::TextArchiveO, T=boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\archive\basic_text_oarchive.hpp(78) : see reference to function template instantiation 'void boost::archive::save<Archive,const T>(Archive &,const T &)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=const boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\interface_oarchive.hpp(78) : see reference to function template instantiation 'void boost::archive::basic_text_oarchive<Archive>::save_override<T>(T &,int)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=const boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\3rdparty\include\boost\archive\detail\interface_oarchive.hpp(86) : see reference to function template instantiation 'Archive &boost::archive::detail::interface_oarchive<Archive>::operator <<<T>(T &)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=const boost::serialization::nvp<FlowEngine::A *> ] d:\flow project\flowengine\samples\silvestre\main4.cpp(222) : see reference to function template instantiation 'Archive &boost::archive::detail::interface_oarchive<Archive>::operator &<const boost::serialization::nvp<T>>(const boost::serialization::nvp<T> &)' being compiled with [ Archive=FlowEngine::TextArchiveO, T=FlowEngine::A * ] and crashes in the file dgbheap line 266. It was called here -> extnded_type_info_typeid.hpp line 92: return detail::extended_type_info_typeid_0::get_derived_extended_type_info(typeid(t)); Any clue?? I'm going to send to you the files, again so you can have a better look. Thanks for all the support. This thing is starting to make me crazy :S. On 1/16/07, Robert Ramey <ramey@rrsd.com> wrote:
The following changes would make your classes compatible with all archive types and might well fix your problem.
class C : public Serializer { typedef Serializer Parent; public: std::string text; A* m_owner; int32 dasse; Vector<float> vector_test;
C():m_owner(0) { text = "Ola sua puta rabeta!"; dasse = 69; vector_test.push_back(1); vector_test.push_back(1.2f); vector_test.push_back(1.3f); vector_test.push_back(1.4f); }
// standard way of specifying serialization for a class template<class Archive> serialize(Archive & ar, const unsigned int version){ ar.template register_type<C>(); ar.Serialize(dasse); ar.Serialize(text); //ar.Serialize(m_owner); //ar.Serialize(vector_test); }
void Serialize(IArchive& ar, const unsigned int version) { // forward to correct function from virtual call serialize(ar, version); }
};
BTW - if you want a virtual function interface to the serialization system you might want to check out "polymorphic archives" in the documentation.
Robert Ramey
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Miguel Silvestre

I've looked at your code and the purpose and motivation are totally incomprehensible to me. I cannot follow it. I see no reason for a lot of the stuff you do here and a thorough analysis of the compile time error is really beyond me. I did take a little bit of time with your main program and recast it in a form which I believe reflects your intention as well as the way I would expect most people to find the serialization library useful. I started out with your main program and comment out parts which were irrelevant to our question here. I added some #defines and typedefs for constants and types presumably specified in other headers. I've attached my amended copy of your code. I compiles on MSVC 7.1. I think a more careful study of the documentation demos and tests would be of value. I hope this is helpful. Robert Ramey begin 666 test_zmisc.cpp M(VEF(# -"B-I;F-L=61E(")C;W)E+W-Y<W1E;2]0<F5C;VUP:6QE9"YH(@T* M#0HC:6YC;'5D92 \9G-T<F5A;3X-"@T*(VEN8VQU9&4@(F-O<F4O<V5R:6%L M:7IA=&EO;B]497AT4V5R:6%L:7IE<BYH(@T*#0HC:6YC;'5D92 B8V]R92]$ M969A=6QT5&%S:RYH(@T*(VEN8VQU9&4@(F-O<F4O8V]N=&%I;F5R+U-P:&5R M951R964N:"(-"B-I;F-L=61E(")R97-O=7)C97,O4F5S;W5R8V5"=69F97)& M86-T;W)Y+F@B#0HC:6YC;'5D92 B<F5S;W5R8V5S+T%)4F5S;W5R8V4N:"(- M"B-I;F-L=61E(")S8V5N92]M871E<FEA;"],:6=H=&EN9TUA=&5R:6%L+F@B M#0HC:6YC;'5D92 B<V-E;F4O<F5N9&5R+W)E;F1E<D5F9F5C=',O1&5F875L M=$5F9F5C="YH(@T*(VEN8VQU9&4@(G-C96YE+W)E;F1E<B]R96YD97)%9F9E M8W1S+T1E8G5G169F96-T+F@B#0HC:6YC;'5D92 B<V-E;F4O<F5N9&5R+W)E M;F1E<D5F9F5C=',O1&5B=6=0:'ES:6-S+F@B#0HC:6YC;'5D92 B<V-E;F4O M86-T:6]N=')I9V=E<B]!8W1I;VY-86YA9V5R+F@B#0HC:6YC;'5D92 B<V-E M;F4O<&AY<VEC<R]0:'ES:6-A;%=O<FQD+F@B#0HC:6YC;'5D92 B9W5I+T=5 M24UA;F%G97(N:"(-"B-I;F-L=61E(")G=6DO1EA0;&%Y4W1R96%M+F@B#0HC M:6YC;'5D92 B86DO86=E;G1S>7-T96TO06=E;G1-86YA9V5R+F@B#0HC:6YC M;'5D92 B86DO86=E;G1S>7-T96TO04E#;VYT<F]L;&5R+F@B#0HC:6YC;'5D M92 B;6]D=6QE+T5N9VEN94UO9'5L92YH(@T*(VEN8VQU9&4@(F=A;65P;&%Y M+T=A;65-86YA9V5R+F@B#0HC:6YC;'5D92 B<F5S;W5R8V5S+U-O=6YD4F5S M;W5R8V4N:"(-"B-I;F-L=61E(")S8V5N92]N;V1E+U-P:&5R951R965#;VQL M96-T;W(N:"(-"B-E;F1I9@T*#0HC:6YC;'5D92 \9G-T<F5A;3X-"@T*='EP M961E9B!I;G0@:6YT,S([#0IT>7!E9&5F('5N<VEG;F5D(&EN="!U:6YT,S([ M#0HC:6YC;'5D92 \=F5C=&]R/@T*(V1E9FEN92!696-T;W(@<W1D.CIV96-T M;W(-"B-D969I;F4@1D5?3TL@, T*(V1E9FEN92!&15])3E9!3$E$4$%204T@ M, T*(V1E9FEN92!&15]&04E,140H>"D@, T*#0HC:6YC;'5D92 \8F]O<W0O M<V5R:6%L:7IA=&EO;B]N=G N:'!P/@T*(VEN8VQU9&4@/&)O;W-T+W-E<FEA M;&EZ871I;VXO<W1R:6YG+FAP<#X-"@T*(VEN8VQU9&4@/&)O;W-T+V%R8VAI M=F4O=&5X=%]O87)C:&EV92YH<' ^#0IT>7!E9&5F(&)O;W-T.CIA<F-H:79E M.CIT97AT7V]A<F-H:79E(%1E>'1!<F-H:79E3SL-"B-I;F-L=61E(#QB;V]S M="]A<F-H:79E+W1E>'1?:6%R8VAI=F4N:'!P/@T*='EP961E9B!B;V]S=#HZ M87)C:&EV93HZ=&5X=%]I87)C:&EV92!497AT07)C:&EV94D[#0H-"@T*;F%M M97-P86-E($9L;W=%;F=I;F4-"GL-"@EC;&%S<R!!.PT*"6-L87-S($,@>PT* M"7!U8FQI8SH-"@D)<W1D.CIS=')I;F<@=&5X=#L-"@D)02H@;5]O=VYE<CL- M"@D):6YT,S(@9&%S<V4[#0H)"59E8W1O<CQF;&]A=#X@=F5C=&]R7W1E<W0[ M#0H-"@D)0R@I.FU?;W=N97(H,"D-"@D)>PT*"0D)=&5X=" ](")/;&$@<W5A M('!U=&$@<F%B971A(2([#0H)"0ED87-S92 ](#8Y.PT*"0D)=F5C=&]R7W1E M<W0N<'5S:%]B86-K*#$I.PT*"0D)=F5C=&]R7W1E<W0N<'5S:%]B86-K*#$N M,F8I.PT*"0D)=F5C=&]R7W1E<W0N<'5S:%]B86-K*#$N,V8I.PT*"0D)=F5C M=&]R7W1E<W0N<'5S:%]B86-K*#$N-&8I.PT*"0E]#0H)"0T*"0ET96UP;&%T M93QC;&%S<R!!<F-H:79E/@T*"0EV;VED('-E<FEA;&EZ92A!<F-H:79E)B!A M<BP@8V]N<W0@=6YS:6=N960@:6YT('9E<G-I;VXI#0H)"7L-"@D)"6%R+G1E M;7!L871E(')E9VES=&5R7W1Y<&4\0SXH*3L-"B @(" @(" @(" @(&%R("8@ M9&%S<V4[#0H@(" @(" @(" @("!A<B F('1E>'0[#0H)"0DO+V%R("8@;5]O M=VYE<BD[#0H)"0DO+V%R("8@=F5C=&]R7W1E<W0I.PT*"0E]#0H)?3L-"@T* M(" @(&-L87-S($$@>PT*"7!U8FQI8SH)"0T*#0H)"6EN="!D=6UB:3L-"@D) M9FQO870@9'5M8F8[#0HO+PD)5F5C=&]R,F8@=F5C=&]R5&5S=#L-"B\O"0E- M871R:7@S,R!M871R:7@[#0H)"4,J('1E<W1I;F<[#0HO+PD)5F5C=&]R,V8J M('1E<W1?=F]I9#L-"@T*"0E!*"DZ9'5M8FDH,3(I+"!D=6UB9B@V.2XV.68I M#0H)"7L@#0H)"0ET97-T:6YG(#T@;F5W($,H*3L)#0H)"0ET97-T:6YG+3YM M7V]W;F5R(#T@=&AI<SL)"0D-"B\O"0D);6%T<FEX+E-E=$ED96YT:71Y*"D[ M#0HO+PD)"71E<W1?=F]I9" ](&YE=R!696-T;W(S9B@Q+#(L,RD[#0H)"7T- M"@T*"0E!*&EN="!D=6UB,2P@9FQO870@9'5M8C(I(#H@9'5M8FDH9'5M8C$I M+"!D=6UB9BAD=6UB,BD-"@D)>R -"@D)"71E<W1I;F<@/2!N97<@0R@I.PT* M+R\)"0ET97-T:6YG+3YM7V]W;F5R(#T@=&AI<SL-"B\O"0D);6%T<FEX+E-E M=$ED96YT:71Y*"D[#0HO+PD)"71E<W1?=F]I9" ](&YE=R!696-T;W(S9B@Q M+#(L,RD[#0H)"7T-"@D)#0H)"71E;7!L871E/&-L87-S($%R8VAI=F4^#0H) M"79O:60@<V5R:6%L:7IE*$%R8VAI=F4F(&%R+"!C;VYS="!U;G-I9VYE9"!I M;G0@=F5R<VEO;BD-"@D)>PD-"B @(" @(" @(" @(&%R("8@9'5M8FD[#0H) M"0DO+V%R("8@=F5C=&]R5&5S=#L-"@D)"2\O87(@)B!M871R:7@[#0H@(" @ M(" @(" @("!A<B F('1E<W1I;F<[#0H)"0DO+V%R+E-E<FEA;&EZ92AT97-T M:6YG*3L-"B\O(&YO=&4Z('1H92!F;VQL;W=I;F<@;6%K92!N;R!S96YS92!A M="!A;&P-"@D)"2\O87(@)B H=F]I9"HI=&5S=%]V;VED+"!S:7IE;V8H5F5C M=&]R,V8I.PT*"0E]#0H)?3L-"@T*#0H)8VQA<W,@0B Z('!U8FQI8R!!#0H) M>PT*"7!R:79A=&4Z#0H)"6EN="!D=6UB0FD[#0H)"69L;V%T(&1U;6)"9CL- M"@T*"7!U8FQI8SH-"@T*"0E"*"DZ9'5M8D)I*#DI+"!D=6UB0F8H,"XY.#<V M9BD-"@D)>PT*"0E]#0H)"0T*"0ET96UP;&%T92 \8VQA<W,@07)C:&EV93X- M"@D)=F]I9"!S97)I86QI>F4H07)C:&EV928@87(L(&-O;G-T('5N<VEG;F5D M(&EN="!V97)S:6]N*0T*"0E["0T*"0D)+R]A<B F(&)O;W-T.CIS97)I86QI M>F%T:6]N.CIB87-E7V]B:F5C=#Q087)E;G0^*"IT:&ES*3L-"@D)"2\O87(N M4V5R:6%L:7IE*%!A<F5N="D[#0H)"0EA<BY397)I86QI>F4H9'5M8D)I*3L- M"@D)"6%R+E-E<FEA;&EZ92AD=6UB0F8I.PT*"0E]#0H)?3L-"@T*#0H)8VQA M<W,@4VEL=E1A<VL@+R\Z('!U8FQI8R!$969A=6QT5&%S:PT*"7L-"@EP<FEV M871E.@T*+R\)"71Y<&5D968@1&5F875L=%1A<VL@4&%R96YT.PT*"0T*"0EI M;G0@9'5M8FD[#0H)"69L;V%T(&1U;6)F.PT*"0D-"@D)02!T97-T03L-"@D) M02H@=&5S=$%0;VEN=&5R.PT*#0H)"6)O;VP@;5]S879E+"!M7WAM;#L-"@D) M<W1D.CIS=')I;F<@;5]F:6QE;F%M93L-"@T*"7!U8FQI8SH-"@D)4VEL=E1A M<VLH*3IM7W-A=F4H9F%L<V4I+"!D=6UB9B@V.2XV.68I+"!D=6UB:2@W*2P@ M;5]X;6PH9F%L<V4I+'1E<W1!4&]I;G1E<B@P*0T*"0E[?0T*#0H)"6EN="!3 M:6QV5&%S:SHZ4&%R<V5!<F=U;65N=',H8V]N<W0@<W1D.CIV96-T;W(\<W1D M.CIS=')I;F<^)B!A<F=S*0T*"0E[#0H)"0EF;W(H=6EN=#,R(&D@/2 P.R!I M(#P@*'5I;G0S,BEA<F=S+G-I>F4H*3L@:2LK*0T*"0D)>PT*"0D)"6EF*&%R M9W-;:5TN9FEN9"@B+7AM;"(I("$]('-T9#HZ<W1R:6YG.CIN<&]S*0T*"0D) M"0EM7WAM;" ]('1R=64[#0H-"@D)"0EI9BAA<F=S6VE=+F9I;F0H(BUS879E M/2(I("$]('-T9#HZ<W1R:6YG.CIN<&]S*0T*"0D)"7L-"@D)"0D);5]F:6QE M;F%M92 ](&%R9W-;:5TN<W5B<W1R*#8I.PT*"0D)"0EM7W-A=F4@/2!T<G5E M.PT*"0D)"7T-"@D)"0EE;'-E(&EF*&%R9W-;:5TN9FEN9"@B+6QO860](BD@ M(3T@<W1D.CIS=')I;F<Z.FYP;W,I#0H)"0D)>PT*"0D)"0EM7V9I;&5N86UE M(#T@87)G<UMI72YS=6)S='(H-BD[#0H)"0D)"6U?<V%V92 ](&9A;'-E.PT* M"0D)"7T-"@D)"7T-"@T*"0D)<F5T=7)N($9%7T]+.PT*"0E]#0H-"@D):6YT M(%-I;'9487-K.CI,;V%D1&%T82@I#0H)"7L-"@D)"0D)#0H)"0DO+T)/3U-4 M7T-,05-37U1204-+24Y'*$$L('1R86-K7VYE=F5R*0T*"0D):68H;5]S879E M*0T*"0D)"5=R:71E3V)J96-T*"D[#0H)"0EE;'-E#0H)"0D)3&]A9$]B:F5C M="@I.PT*#0H)"0ER971U<FX@1D5?3TL["0D)#0H)"7T-"@T*"0EI;G0@4VEL M=E1A<VLZ.E=R:71E3V)J96-T*"D-"@D)>PT*"0D)#0H)"0EC;VYS="!!(&%U M>"@Q,C,U-BP@.#DU-BXV.68I.PD-"@D)"71E<W1!4&]I;G1E<B ](&YE=R!! M*#DX-RP@,3(S+C4V.3@W9BD[#0HO+PD)"71E<W1!4&]I;G1E<BT^=F5C=&]R M5&5S="Y3970H,3(S+C8U9BP@-CDN,# P,# P,#%F*3L-"@T*"0D)02H@=&5S M=$$@/2!N97<@02@I.PT*"0D)#0H)"0ES=&0Z.F]F<W1R96%M(&]F<RAM7V9I M;&5N86UE+F-?<W1R*"DI.PT*"0D)+R\@8W)E871E(&%N9"!O<&5N(&$@=&5X M="!A<F-H:79E(&9O<B!O=71P=70-"@D)"2\O8F]O<W0Z.F%R8VAI=F4Z.G1E M>'1?;V%R8VAI=F4@;V$H;V9S*3L-"@D)"51E>'1!<F-H:79E3R!O82AO9G,I M.PT*#0H)"0DO+R!C<F5A=&4@86YD(&]P96X@82!B:6YA<GD@87)C:&EV92!F M;W(@;W5T<'5T"0D)"0D)#0H)"0DO+V)O;W-T.CIA<F-H:79E.CIB:6YA<GE? M;V%R8VAI=F4@;V$H;V9S*3L-"@D)"2\O0FEN87)Y07)C:&EV94\@;V$H(&]F M<RD[#0H-"@D)"2\O(&-R96%T92!A;F0@;W!E;B!A('AM;"!A<F-H:79E(&9O M<B!O=71P=70)"0D-"@D)"2\O8F]O<W0Z.F%R8VAI=F4Z.GAM;%]O87)C:&EV M92!O82AO9G,I.PT*"0D)+R]834Q!<F-H:79E3R!O82AO9G,I.PT*#0H)"0D- M"@D)"2\O=W)I=&4@8VQA<W,@:6YS=&%N8V4@=&\@87)C:&EV90T*"0D)+R]O M82 F($)/3U-47U-%4DE!3$E:051)3TY?3E90*'1E<W1!4&]I;G1E<BD[#0H) M"0EO82 F($)/3U-47U-%4DE!3$E:051)3TY?3E90*'1E<W1!*3L-"@T*#0H) M"0ER971U<FX@1D5?3TL[#0H)"7T-"@T*#0H)"6EN="!3:6QV5&%S:SHZ3&]A M9$]B:F5C="@I#0H)"7L-"@D)"4,J('1E<W1#(#T@,#L-"@D)"4(J('1E<W1" M(#T@,#L-"@D)"4$J('1E<W1!(#T@,#L-"@D)"2\O02!A=7@H,"P@,"D[#0H) M"0ES=&0Z.FEF<W1R96%M(&EF<RAM7V9I;&5N86UE+F-?<W1R*"DL('-T9#HZ M:6]S.CIB:6YA<GDI.PD)"0T*"0D)#0H)"0DO+V-R96%T92!A;F0@;W!E;B!A M(&-H87)A8W1E<B!A<F-H:79E(&9O<B!I;G!U= D)"0T*"0D)+R]B;V]S=#HZ M87)C:&EV93HZ=&5X=%]I87)C:&EV92!I82AI9G,I.PT*"0D)5&5X=$%R8VAI M=F5)(&EA*&EF<RD[#0H-"@D)"2\O8W)E871E(&%N9"!O<&5N(&$@8FEN87)Y M(&%R8VAI=F4@9F]R(&EN<'5T#0H)"0DO+V)O;W-T.CIA<F-H:79E.CIB:6YA M<GE?:6%R8VAI=F4@:6$H:69S*3L-"@D)"2\O0FEN87)Y07)C:&EV94D@:6$H M:69S*3L-"@T*"0D)+R]C<F5A=&4@86YD(&]P96X@82!X;6P@87)C:&EV92!F M;W(@:6YP=70-"@D)"2\O8F]O<W0Z.F%R8VAI=F4Z.GAM;%]I87)C:&EV92!I M82AI9G,I.PT*"0D)+R]834Q!<F-H:79E22!I82AI9G,I.PT*#0H)"0T*"0D) M+R\@<F5A9"!C;&%S<R!S=&%T92!F<F]M(&%R8VAI=F4-"@D)"2\O:6$@)B!" M3T]35%]315))04Q)6D%424].7TY64"AT97-T05!O:6YT97(I.PT*"0D):6$@ M)B!"3T]35%]315))04Q)6D%424].7TY64"AT97-T02D[#0H-"@D)"7)E='5R M;B!&15]/2SL-"@D)?0T*#0H)"6EN="!3:6QV5&%S:SHZ0W)E871E4F5N9&5R M169F96-T<R@I#0H)"7L-"@D)"7)E='5R;B!&15]/2SL-"@D)?0T*(VEF(# - M"@D):6YT($]N4W1A<G0H375T97@J(&UU=&5X*0T*"0E[#0H)"0EI;G0@<CL- M"@D)"7-T<FEN9R!L;V%D:6YG4V-R965N3F%M93L-"@D)"7-T<FEN9R!G86UM M84-O<G)E8W1I;VX[#0H)"0E&6%!L87E3=')E86TJ(&QO861I;F=38W)E96Y- M;W9I92 ](# [#0H-"@D)"2\O($EN:71I86QI>F4@<G1T:2!O8FIE8W1S#0H) M"0ER(#T@4F5G:7-T97)/8FIE8W1S*"D[#0H)"0EI9B H1D5?1D%)3$5$*'(I M*0T*"0D)>PT*"0D)"49%7TQ/1U]#4DE424-!3"A&15]&04E,+" B6T]N4W1A M<G0H*5TZ($5R<F]R(%)E9VES=&5R:6YG(&]B:F5C=',B*3L-"@D)"0EG;W1O M(')E='5R;E-!1D5&04E,.PT*"0D)?0T*#0H)"0DO+R!0<F4M26YI=&EA;&EZ M92!T87-K+@T*"0D)<B ]($]N4')E26YI="@I.PT*"0D):68@*$9%7T9!24Q% M1"AR*2D-"@D)"7L-"@D)"0E&15],3T=?0U))5$E#04PH1D5?1D%)3"P@(EM/ M;E-T87)T*"E=.B!%<G)O<B!/;E!R94EN:70H*2(I.PT*"0D)"6=O=&\@<F5T M=7)N4T%&149!24P[#0H)"0E]#0H-"@D)"2\O(%1E<W1I;F<@=&AE('!A<G-I M;F<@;V8@=&AE(&1I<@T*"0D)1FQO=T-O<F4Z.D=E=%-C<FEP=%-Y<W1E;2@I M+E!R;V-E<W-38W)I<'1$:7(H*3L-"@T*"0D)+R\@4F5G:7-T97(@<V-R:7!T M(&]B:F5C=',-"@D)"7(@/2!296=I<W1E<E-C<FEP=$]B:F5C=',H*3L-"@D) M"6EF("A&15]&04E,140H<BDI#0H)"0E[#0H)"0D)1D5?3$]'7T-2251)0T%, M*$9%7T9!24PL(");3VY3=&%R="@I73H@17)R;W(@<F5G:7-T97)I;F<@<V-R M:7!T(&]B:F5C=',N(BD[#0H)"0D)9V]T;R!R971U<FY3049%1D%)3#L-"@D) M"7T-"@T*"0D)+R\@;&]A9"!P<F5F97)E;F-E<PT*"0D)<B ]($9L;W=#;W)E M.CI'9710<F5F97)E;F-E<R@I+DEN:70H1V5T4')E9F5R96YC97-&:6QE;F%M M92@I*3L-"@D)"6EF("A&15]&04E,140H<BDI#0H)"0E[#0H)"0D)1D5?3$]' M7T-2251)0T%,*$9%7T9!24PL('-T<FEN9R@B6T]N4W1A<G0H*5TZ($5R<F]R M($EN:71I86QI>FEN9R!0<F5F97)E;F-E<SH@(BD@*R!'9710<F5F97)E;F-E M<T9I;&5N86UE*"DI.PT*"0D)"6=O=&\@<F5T=7)N4T%&149!24P[#0H)"0E] M#0H-"@D)"2\O('!A<G-E('5P9&%T92!M971H;V0-"@D)"5!R969E<F5N8V5S M)B!P<F5F97)E;F-E<R ]($9L;W=#;W)E.CI'9710<F5F97)E;F-E<R@I.PT* M"0D)<')E9F5R96YC97,N1V5T5F%L=64H(E-C96YE+E5P9&%T94UE=&AO9"(L M("AU:6YT,S(J*29M7W5P9&%T94UE=&AO9"D[#0H-"@D)"69L;V%T('8@/2 H M9FQO870I;5]U<&1A=&5);G1E<G9A;#L-"@D)"7!R969E<F5N8V5S+D=E=%9A M;'5E*")38V5N92Y5<&1A=&5);G1E<G9A;"(L("9V*3L-"@D)"6U?=7!D871E M26YT97)V86P@/2 H9&]U8FQE*78[#0H-"@D)"78@/2 H9FQO870I;5]D96QT M855P9&%T93L-"@D)"7!R969E<F5N8V5S+D=E=%9A;'5E*")38V5N92Y$96QT M855P9&%T92(L("9V*3L-"@D)"6U?9&5L=&%5<&1A=&4@/2 H9&]U8FQE*78[ M#0H-"@D)"2\O(&-R96%T92!W:6YD;W<-"@D)"6U?=VEN9&]W(#T@0W)E871E M36%I;E=I;F1O=R@I.PT*"0D):68@*"%M7W=I;F1O=RD-"@D)"7L-"@D)"0E& M15],3T=?0U))5$E#04PH1D5?1D%)3"P@(EM/;E-T87)T*"E=.B!%<G)O<B!) M;FET:6%L:7II;F<@=VEN9&]W(BD[#0H)"0D)9V]T;R!R971U<FY3049%1D%) M3#L-"@D)"7T-"@T*"0D)+R\@0W)E871E(&EN<'5T(&1E=FEC90T*"0D);5]I M;G!U=$1E=FEC92 ]($-R96%T94EN<'5T1&5V:6-E*"D[#0H)"0EI9B H(6U? M:6YP=71$979I8V4I#0H)"0E[#0H)"0D)1D5?3$]'7T-2251)0T%,*$9%7T9! M24PL(");3VY3=&%R="@I73H@17)R;W(@26YI=&EA;&EZ:6YG(&EN<'5T(&1E M=FEC92(I.PT*"0D)"6=O=&\@<F5T=7)N4T%&149!24P[#0H)"0E]#0H-"@D) M"2\O($-R96%T92!R96YD97(@9&5V:6-E#0H)"0EM7W)E;F1E<D1E=FEC92 ] M($-R96%T95)E;F1E<D1E=FEC92@I.PT*"0D):68@*"%M7W)E;F1E<D1E=FEC M92D-"@D)"7L-"@D)"0E&15],3T=?0U))5$E#04PH1D5?1D%)3"P@(EM/;E-T M87)T*"E=.B!%<G)O<B!);FET:6%L:7II;F<@<F5N9&5R(&1E=FEC92(I.PT* M"0D)"6=O=&\@<F5T=7)N4T%&149!24P[#0H)"0E]#0H)"0DO+R!792!N965D M('1O('-E="!T:&4@<')O<&5R(')E;F1E<B!D979I8V4@=&\@=&AE(&9A8W1O M<GD-"@D)"5)E<V]U<F-E0G5F9F5R1F%C=&]R>2H@<F)F(#T@4F5S;W5R8V5" M=69F97)&86-T;W)Y.CI'971&86-T;W)Y*"D[#0H)"0ER8F8M/E-E=%)E;F1E M<D1E=FEC92AM7W)E;F1E<D1E=FEC92D[#0H-"@D)"2\O($-R96%T92!T:&4@ M<F5S;W5R8V4@=&%S:PT*"0D);5]R97-O=7)C951A<VL@/2!#<F5A=&5297-O M=7)C951A<VLH*3L-"@D)"6EF("@A;5]R97-O=7)C951A<VLI#0H)"0E[#0H) M"0D)1D5?3$]'7T-2251)0T%,*$9%7T9!24PL(");3VY3=&%R="@I73H@17)R M;W(@8W)E871I;F<@=&AE(')E<V]U<F-E('1A<VLN(BD[#0H)"0D)9V]T;R!R M971U<FY3049%1D%)3#L-"@D)"7T-"@D)"2\O(%1/1$\Z(&9R97%U96YC>2!V M86QU92!I<R!H87)D8V]D960N(%5S92!A('!R969E<F5N8V4@9F]R('1H870- M"@D)"49L;W=#;W)E.CI'97138VAE9'5L97(H*2Y296=I<W1E<E1A<VLH;5]R M97-O=7)C951A<VLL(")297-O=7)C951A<VLB+" P+" P+C(U939F+" N,&8I M.PT*#0H)"0DO+R!);FET($UA;F%G97)S#0H)"0ER(#T@26YI=$UA;F%G97)S M*"D[#0H)"0EI9B H1D5?1D%)3$5$*'(I*0T*"0D)>PT*"0D)"49%7TQ/1U]# M4DE424-!3"A&15]&04E,+" B6T]N4W1A<G0H*5TZ($5R<F]R($EN:71I86QI M>FEN9R!M86YA9V5R<RXB*3L-"@D)"0EG;W1O(')E='5R;E-!1D5&04E,.PT* M"0D)?0T*#0H)"0DO+R!S970@9V%M;6$@;W!T:6]N<PT*"0D):68@*$9%7U-5 M0T-%141%1"AP<F5F97)E;F-E<RY'971686QU92@B5FED96\N1V%M;6%#;W)R M96-T:6]N(BP@)F=A;6UA0V]R<F5C=&EO;BDI*0T*"0D)>PT*"0D)"5-H87)E M9%1O;VQS.CI3=')I;F=4;U9E8W1O<BAG86UM84-O<G)E8W1I;VXL(&U?9V%M M;6%#;W)R96-T:6]N*3L-"@D)"7T-"@T*"0D)+R\@3&]A9&EN9R!S8W)E96X- M"@D)"7!R969E<F5N8V5S+D=E=%9A;'5E*")6:61E;RY,;V%D:6YG4V-R965N M(BP@)FQO861I;F=38W)E96Y.86UE*3L-"@D)"6EF*&QO861I;F=38W)E96Y. M86UE("$]("(B*0T*"0D)>PT*"0D)"6QO861I;F=38W)E96Y-;W9I92 ]($=E M=$=524UA;F%G97(H*2T^3&]A9$UO=FEE*&QO861I;F=38W)E96Y.86UE*3L- M"@D)"0EI9BAL;V%D:6YG4V-R965N36]V:64I#0H)"0D)>PT*"0D)"0EL;V%D M:6YG4V-R965N36]V:64M/E-E=%9I97=P;W)T*# L(# L(&U?<')E<V5N=%!A M<F%M<RYW:61T:"P@;5]P<F5S96YT4&%R86US+FAE:6=H="D[#0H)"0D)"4=E M=$=524UA;F%G97(H*2T^4F5N9&5R5&]P36]V:65S*# I.PT*"0D)"0E'9712 M96YD97)$979I8V4H*2T^4')E<V5N="@I.PT*"0D)"7T-"@D)"7T-"@T*"0D) M+R\@0W)E871E(&=L;V)A;"!E9F9E8W0@;6%C<F]S#0H)"0ER(#T@0W)E871E M1VQO8F%L169F96-T36%C<F]S*"D[#0H)"0EI9B H1D5?1D%)3$5$*'(I*0T* M"0D)>PT*"0D)"49%7TQ/1U]#4DE424-!3"A&15]&04E,+" B6T]N4W1A<G0H M*5TZ($5R<F]R(&-R96%T:6YG('1H92!G;&]B86P@969F96-T(&UA8W)O<RXB M*3L-"@D)"0EG;W1O(')E='5R;E-!1D5&04E,.PT*"0D)?0T*#0H)"0DO+R!# M<F5A=&4@9VQO8F%L(&5F9F5C="!P87)A;65T97)S('1A8FQE#0H)"0ER(#T@ M0W)E871E1VQO8F%L169F96-T4&%R86UE=&5R<U1A8FQE*"D[#0H)"0EI9B H M1D5?1D%)3$5$*'(I*0T*"0D)>PT*"0D)"49%7TQ/1U]#4DE424-!3"A&15]& M04E,+" B6T]N4W1A<G0H*5TZ($5R<F]R(&-R96%T:6YG('1H92!G;&]B86P@ M969F96-T('!A<F%M971E<G,@=&%B;&4N(BD[#0H)"0D)9V]T;R!R971U<FY3 M049%1D%)3#L-"@D)"7T-"@T*"0D)+R\@0W)E871E('1H92!D969A=6QT(&UA M=&5R:6%L#0H)"0ER(#T@0W)E871E1&5F875L=$UA=&5R:6%L*"D[#0H)"0EI M9B H1D5?1D%)3$5$*'(I*0T*"0D)>PT*"0D)"49%7TQ/1U]#4DE424-!3"A& M15]&04E,+" B6T]N4W1A<G0H*5TZ($5R<F]R(&-R96%T:6YG(&1E9F%U;'0@ M;6%T97)I86PN(BD[#0H)"0D)9V]T;R!R971U<FY3049%1D%)3#L-"@D)"7T- M"@T*"0D)+R\@;&]A9"!M871E<FEA;',-"@D)"7(@/2!&;&]W0V]R93HZ1V5T M36%T97)I86Q-86YA9V5R*"DM/DQO860H*3L-"@D)"6EF("A&15]&04E,140H M<BDI#0H)"0E[#0H)"0D)1D5?3$]'7T-2251)0T%,*$9%7T9!24PL(");3VY3 M=&%R="@I73H@17)R;W(@;&]A9&EN9R!M871E<FEA;',N(BD[#0H)"0D)9V]T M;R!R971U<FY3049%1D%)3#L-"@D)"7T-"@T*"0D)+R\@8W)E871E('1H92!R M96YD97(@8V]L;&5C=&]R#0H)"0EM7W)E;F1E<D-O;&QE8W1O<B ]($-R96%T M95)E;F1E<D-O;&QE8W1O<B@I.PT*"0D):68@*"%M7W)E;F1E<D-O;&QE8W1O M<BD-"@D)"7L-"@D)"0E&15],3T=?0U))5$E#04PH1D5?1D%)3"P@(EM/;E-T M87)T*"E=.B!%<G)O<B!C<F5A=&EN9R!296YD97(@0V]L;&5C=&]R+B(I.PT* M"0D)"6=O=&\@<F5T=7)N4T%&149!24P[#0H)"0E]#0H)"0EM7W)E;F1E<D-O M;&QE8W1O<BT^4V5T4V-E;F5-86YA9V5R*&U?<V-E;F5-86YA9V5R*3L-"@T* M"0D)+R\@0W)E871E(%-H87)E9"!R97-O=7)C97,@8F5T=V5E;B!E9F9E8W1S M#0H)"0ER(#T@0W)E871E169F96-T4VAA<F5D4F5S;W5R8V5S*"D[#0H)"0EI M9B H1D5?1D%)3$5$*'(I*0T*"0D)>PT*"0D)"49%7TQ/1U]#4DE424-!3"A& M15]&04E,+" B6T]N4W1A<G0H*5TZ($5R<F]R(&-R96%T:6YG('1H92!E9F9E M8W0@<VAA<F5D(')E<V]U<F-E<RXB*3L-"@D)"0EG;W1O(')E='5R;E-!1D5& M04E,.PT*"0D)?0T*#0H)"0DO+R!#<F5A=&4@<F5N9&5R(&5F9F5C=',-"@D) M"7(@/2!#<F5A=&5296YD97)%9F9E8W1S*"D[#0H)"0EI9B H1D5?1D%)3$5$ M*'(I*0T*"0D)>PT*"0D)"49%7TQ/1U]#4DE424-!3"A&15]&04E,+" B6T]N M4W1A<G0H*5TZ($5R<F]R(&-R96%T:6YG(')E;F1E<B!E9F9E8W1S+B(I.PT* M"0D)"6=O=&\@<F5T=7)N4T%&149!24P[#0H)"0E]#0H-"@D)"2\O(&-R96%T M92!T:&4@<F5N9&5R(&5F9F5C= T*"0D);5]D96)U9T5F9F5C=" ]($-R96%T M941E8G5G4F5N9&5R169F96-T*"D[#0H-"@D)"2\O(&-R96%T92!T:&4@<F5N M9&5R('!H>7-I8W,@9&5B=6<@969F96-T+B!">2!D969A=6QT(&ET)W,@9&ES M86)L960N#0H)"0EM7V1E8G5G4&AY<VEC<T5F9F5C=" ]($-R96%T941E8G5G M4&AY<VEC<U)E;F1E<D5F9F5C="@I.PT*"0D):68@*&U?9&5B=6=0:'ES:6-S M169F96-T*0T*"0D)"6U?9&5B=6=0:'ES:6-S169F96-T+3Y3971%;F%B;&4H M9F%L<V4I.PT*#0H)"0DO+R!E;F%B;&4@9&5B=6<@<&AY<VEC<PT*"0D):68@ M*&U?9&5B=6=0:'ES:6-S*0T*"0D)"45N86)L941E8G5G4&AY<VEC<RAM7V1E M8G5G4&AY<VEC<RD[#0H-"@T*"0D)+R\@8W)E871E('1H92!S8W)I<'0@=W)A M<'!E<@T*"0D);5]S>7-T96U38W)I<'17<F%P<&5R(#T@,#L@+R]#<F5A=&53 M>7-T96U38W)I<'17<F%P<&5R*"D[#0H-"@D)"2\O(&-R96%T92!D969A=6QT M)W,@:'5M86X@8V]N=')O;&QE<B!T;R!T:&4@8V%M97)A#0H)"0EM7VAU;6%N M0V]N=')O;&QE<B ](&U?:'5M86Y#;VYT<F]L;&5R36%N86=E<BT^0W)E871E M0V]N=')O;&QE<CQ(=6UA;D-O;G1R;VQL97(^*"D[#0H-"@T*"0D)+R\@3&]A M9"!U<V5R(&1A=&$-"@D)"7(@/2!,;V%D1&%T82@I.PT*"0D):68@*$9%7T9! M24Q%1"AR*2D-"@D)"7L-"@D)"0E&15],3T=?0U))5$E#04PH1D5?1D%)3"P@ M(EM/;E-T87)T*"E=.B!%<G)O<B!,;V%D1&%T82@I+B(I.PT*"0D)"6=O=&\@ M<F5T=7)N4T%&149!24P[#0H)"0E]#0H-"@T*"0D)+R\@8VAE8VL@9F]R(&5R M<F]R<PT*"0D):68@*&U?<F5N9&5R0V]L;&5C=&]R+3Y'971296YD97)#;VQL M96-T:6]N*"DM/D=E=%-C96YE0V%M97)A*# I(#T](# I#0H)"0D)1D5?3$]' M7U=!4DY)3D<H(EM$969A=6QT5&%S:SHZ3VY3=&%R="@I73H@4V-E;F4@0V%M M97)A(&ES;B=T('-E="XB*3L-"@T*"0D)+R\@17)R;W(@;VX@<&]S="!I;FET M#0H)"0ER(#T@3VY0;W-T26YI="@I.PT*"0D):68@*$9%7T9!24Q%1"AR*2D- M"@D)"7L-"@D)"0E&15],3T=?0U))5$E#04PH1D5?1D%)3"P@(EM/;E-T87)T M*"E=.B!%<G)O<B!/;E!O<W1);FET*"DN(BD[#0H)"0D)9V]T;R!R971U<FY3 M049%1D%)3#L-"@D)"7T-"@T*"0D)+R\@5$]$3SH@54Y#3TU-14Y4(%1(25,A M(2$A(2$A(2$A(2$-"@D)"2\J*B\-"@D)"2\O(&1O(&%N(&EN:71I86P@=7!D M871E('=I=&@@82!V97)Y('-M86QL(&1E;'1A#0H)"0E%34987T%#5$]234%. M04=%4BY0<F]C97-S*# N,#%F*3L-"@D)"55P9&%T95-C96YE*# N,#%F*3L- M"@D)"55P9&%T95)E;F1E<B@P+C Q9BD[#0H)"0DO*BHO#0H-"@D)"2\O(')E M;6]V92!L;V%D:6YG('-C<F5E;@T*"0D):68H;&]A9&EN9U-C<F5E;DUO=FEE M*0T*"0D)>PT*"0D)"4=E=$=524UA;F%G97(H*2T^56Y,;V%D36]V:64H;&]A M9&EN9U-C<F5E;DYA;64I.PT*"0D)?0T*#0H)"0E39714:')E861!9F9I;FET M>4UA<VLH1V5T0W5R<F5N=%1H<F5A9"@I+" P># Q*3L-"@D)"5-E=%1H<F5A M9%!R:6]R:71Y*$=E=$-U<G)E;G14:')E860H*2P@5$A214%$7U!224]22519 M7T%"3U9%7TY/4DU!3"D[#0H-"@D)"7)E='5R;B!&15]/2SL-"@T*<F5T=7)N M4T%&149!24PZ#0H-"@D)"2\O(')E;6]V92!L;V%D:6YG('-C<F5E;@T*"0D) M:68H;&]A9&EN9U-C<F5E;DUO=FEE*0T*"0D)>PT*"0D)"4=E=$=524UA;F%G M97(H*2T^56Y,;V%D36]V:64H;&]A9&EN9U-C<F5E;DYA;64I.PT*"0D)?0T* M#0H)"0ER971U<FX@<CL-"@D)?0T*(" @("-E;F1I9@T*"7T[#0H):6YT($9L M;W=-86EN*&-O;G-T('-T9#HZ=F5C=&]R/'-T9#HZ<W1R:6YG/B8@8VUD3&EN M92D-"@E[#0H)"6EF*&-M9$QI;F4N<VEZ92@I(#P@,2D-"@D)>PT*+R\)"0E& M15],3T=?15)23U(H1D5?24Y604Q)1%!!4D%-+" B4&QE87-E(&EN<V5R="!T M:&4@9FEL92!T;R!R96%D(&9R;VTA(BD[#0H)"0ER971U<FX@1D5?24Y604Q) M1%!!4D%-.PT*"0E]#0H-"@D)4VEL=E1A<VLJ('1A<VL@/2!N97<@4VEL=E1A M<VLH*3L-"@T*"0EI;G0@<B ]('1A<VLM/E!A<G-E07)G=6UE;G1S*&-M9$QI M;F4I.PT*"0EI9B H1D5?1D%)3$5$*'(I*0T*"0E[#0H)"0ED96QE=&4@=&%S M:SL-"@D)"7)E='5R;B!R.PT*"0E]#0H-"@D)+R]&;&]W0V]R93HZ1V5T4V-H M961U;&5R*"DN4F5G:7-T97)487-K*'1A<VLL(")S:6QV97(@5&%S:R(L(# L M("XP9BP@+C!F*3L-"@T*"0ED96QE=&4@=&%S:SL-"@D)<F5T=7)N($9%7T]+ M.PT*"7T-"GT-"B\J#0I"3T]35%]#3$%34U]465!%7TE.1D\H#0H)"0D)"2 @ M1FQO=T5N9VEN93HZ02P@#0H)"0D)"2 @97AT96YD961?='EP95]I;F9O7VYO M7W)T=&D\1FQO=T5N9VEN93HZ03X-"@D)"0D)(" I#0H-"D)/3U-47T-,05-3 M7T584$]25"A&;&]W16YG:6YE.CI!*0T*#0I"3T]35%]#3$%34U]465!%7TE. M1D\H#0H)"0D)"2 @1FQO=T5N9VEN93HZ0BP@#0H)"0D)"2 @97AT96YD961? M='EP95]I;F9O7VYO7W)T=&D\1FQO=T5N9VEN93HZ0CX-"@D)"0D)(" I#0H- M"D)/3U-47T-,05-37T584$]25"A&;&]W16YG:6YE.CI"*0T*+R]"3T]35%]# J3$%34U]%6%!/4E1?1U5)1"A&;&]W16YG:6YE.CI"+" B0B(I#0HJ+PT* ` end
participants (3)
-
Miguel Silvestre
-
Pfligersdorffer, Christian
-
Robert Ramey