Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » UML2 » Multiple inheritance problem (extending UML)
Multiple inheritance problem (extending UML) [message #477377] Wed, 14 May 2008 02:29 Go to next message
Joel Greenyer is currently offline Joel Greenyer
Messages: 170
Registered: July 2009
Senior Member
Hi,
(this is mainly an EMF-related question, but deals with extending UML2)
I want to extend UML2 and particularly need to introduce another metaclass which breaks the typing concept of UML: I
need something which is an Instance (Property) and Type (Class) at the same time.

Therefore, my first approach is to inherit from both Class and Property. However, the EMF code generation produces code
with a lot of missing methods. Is there any way to do this correctly? I tried hand-fixing the code, but I'm not sure
that it contains no errors, plus it'll be awkward to maintain.

Another approach could be to to work with Property and Class as is, but to maintain them such that each Property has a
unique type-Class. However, I feel that this will need a lot of extra customization in the editors.

Any ideas?

Thanks for helping

Joel
Re: Multiple inheritance problem (extending UML) [message #477378 is a reply to message #477377] Wed, 14 May 2008 09:54 Go to previous messageGo to next message
Ed Merks is currently offline Ed Merks
Messages: 25747
Registered: July 2009
Senior Member
Joel,

The problem is of course that Java supports only multiple interface
inheritance but not multiple class inheritance. So if you extend two
classes both of which contain hand specialized code, you'll need to make
a copy of the hand specialized code of one of them. I wonder also if
you are using UML's extended GenModel rather than EMFs basic one, since
UML itself was generated with a specialized generator that likely also
needs to be applied for any model derived from UML. Generally heavy
weight extensions create difficulties and if possible you should be
using stereotypes instead.


Joel Greenyer wrote:
> Hi,
> (this is mainly an EMF-related question, but deals with extending UML2)
> I want to extend UML2 and particularly need to introduce another
> metaclass which breaks the typing concept of UML: I need something
> which is an Instance (Property) and Type (Class) at the same time.
>
> Therefore, my first approach is to inherit from both Class and
> Property. However, the EMF code generation produces code with a lot of
> missing methods. Is there any way to do this correctly? I tried
> hand-fixing the code, but I'm not sure that it contains no errors,
> plus it'll be awkward to maintain.
>
> Another approach could be to to work with Property and Class as is,
> but to maintain them such that each Property has a unique type-Class.
> However, I feel that this will need a lot of extra customization in
> the editors.
>
> Any ideas?
>
> Thanks for helping
>
> Joel
Re: Multiple inheritance problem (extending UML) [message #477379 is a reply to message #477377] Wed, 14 May 2008 10:04 Go to previous messageGo to next message
james bruck is currently offline james bruck
Messages: 1724
Registered: July 2009
Senior Member
Hi Joel,

Have you considered creating a new metatype that would have references to
Property or Class?
Perhaps have a profile with stereotype that has metaclass extension to Class
and/or Property that introduces the new concepts you need. You could re-use
existing editors that way.

.... difficult to guess at a solution without more details as to how this
will be used and what new features will be added. It sorta' seems like you
are looking to implement InstanceSpecification?

Inheriting from both Property and Class as you mention will probably lead
you down a difficult implementation path.

Cheers,
- James.


"Joel Greenyer" <jgreen@upb.de> wrote in message
news:g0e0s0$597$1@build.eclipse.org...
> Hi,
> (this is mainly an EMF-related question, but deals with extending UML2)
> I want to extend UML2 and particularly need to introduce another metaclass
> which breaks the typing concept of UML: I need something which is an
> Instance (Property) and Type (Class) at the same time.
>
> Therefore, my first approach is to inherit from both Class and Property.
> However, the EMF code generation produces code with a lot of missing
> methods. Is there any way to do this correctly? I tried hand-fixing the
> code, but I'm not sure that it contains no errors, plus it'll be awkward
> to maintain.
>
> Another approach could be to to work with Property and Class as is, but to
> maintain them such that each Property has a unique type-Class. However, I
> feel that this will need a lot of extra customization in the editors.
>
> Any ideas?
>
> Thanks for helping
>
> Joel
Re: Multiple inheritance problem (extending UML) [message #477380 is a reply to message #477378] Wed, 14 May 2008 10:11 Go to previous messageGo to next message
james bruck is currently offline james bruck
Messages: 1724
Registered: July 2009
Senior Member
.... Ed makes a good point when he warns about staying away from heavy
weight (or middle weight) extensions. Profiles are the preferred
(safer/less complicated) way of extending UML. When using profiles, you
have 2 options, you could generate code for them if you need to introduce
derived properties or other behavior or you could use the "define" approach
which uses dynamic EMF.
You have a lot of options when using profiles.

Cheers,
- James.


"Ed Merks" <merks@ca.ibm.com> wrote in message
news:g0eqv2$euj$1@build.eclipse.org...
> Joel,
>
> The problem is of course that Java supports only multiple interface
> inheritance but not multiple class inheritance. So if you extend two
> classes both of which contain hand specialized code, you'll need to make a
> copy of the hand specialized code of one of them. I wonder also if you
> are using UML's extended GenModel rather than EMFs basic one, since UML
> itself was generated with a specialized generator that likely also needs
> to be applied for any model derived from UML. Generally heavy weight
> extensions create difficulties and if possible you should be using
> stereotypes instead.
>
> Joel Greenyer wrote:
>> Hi,
>> (this is mainly an EMF-related question, but deals with extending UML2)
>> I want to extend UML2 and particularly need to introduce another
>> metaclass which breaks the typing concept of UML: I need something which
>> is an Instance (Property) and Type (Class) at the same time.
>>
>> Therefore, my first approach is to inherit from both Class and Property.
>> However, the EMF code generation produces code with a lot of missing
>> methods. Is there any way to do this correctly? I tried hand-fixing the
>> code, but I'm not sure that it contains no errors, plus it'll be awkward
>> to maintain.
>>
>> Another approach could be to to work with Property and Class as is, but
>> to maintain them such that each Property has a unique type-Class.
>> However, I feel that this will need a lot of extra customization in the
>> editors.
>>
>> Any ideas?
>>
>> Thanks for helping
>>
>> Joel
Re: Multiple inheritance problem (extending UML) [message #477382 is a reply to message #477378] Wed, 14 May 2008 13:28 Go to previous messageGo to next message
Eclipse User
Originally posted by: cdamus.zeligsoft.com

Hi, Ed, Joel,

UML2 provides a nice little codegen pattern in XyzOperations classes,
which addresses the problem of copying TODO code across a
multiple-inheritance hierarchy. The XyzOperations class is a collection
of static "foreign methods" for the operations defined by the Xyz
interface. All of the classes that have to re-implement Xyz call out to
the XyzOperations, thus eliminating the replication of code.

Using the UML2 code generator, your generated PropertyClassImpl would
delegate to both the ClassOperations and PropertyOperations, as necessary.

Cheers,

Christian

Ed Merks wrote:
> Joel,
>
> The problem is of course that Java supports only multiple interface
> inheritance but not multiple class inheritance. So if you extend two
> classes both of which contain hand specialized code, you'll need to make
> a copy of the hand specialized code of one of them. I wonder also if
> you are using UML's extended GenModel rather than EMFs basic one, since
> UML itself was generated with a specialized generator that likely also
> needs to be applied for any model derived from UML. Generally heavy
> weight extensions create difficulties and if possible you should be
> using stereotypes instead.
>
> Joel Greenyer wrote:
>> Hi,
>> (this is mainly an EMF-related question, but deals with extending UML2)
>> I want to extend UML2 and particularly need to introduce another
>> metaclass which breaks the typing concept of UML: I need something
>> which is an Instance (Property) and Type (Class) at the same time.
>>
>> Therefore, my first approach is to inherit from both Class and
>> Property. However, the EMF code generation produces code with a lot of
>> missing methods. Is there any way to do this correctly? I tried
>> hand-fixing the code, but I'm not sure that it contains no errors,
>> plus it'll be awkward to maintain.
>>
>> Another approach could be to to work with Property and Class as is,
>> but to maintain them such that each Property has a unique type-Class.
>> However, I feel that this will need a lot of extra customization in
>> the editors.
>>
>> Any ideas?
>>
>> Thanks for helping
>>
>> Joel
Re: Multiple inheritance problem (extending UML) [message #477387 is a reply to message #477379] Thu, 15 May 2008 09:42 Go to previous messageGo to next message
Joel Greenyer is currently offline Joel Greenyer
Messages: 170
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------030504040005020803090102
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hi James,
I would really like to stay lightweight, but I don't see any easy way to do it.
See my attached PDF:

I plan to extend the Component Diagrams such that --in addition to regular components and parts-- there may be
StructuralElements that may be composed without dealing with their type (since they own/are their type implicitly). It
is important that they
(1.a) may declare attributes and
(1.b) may have Ports
-> Thus, they act as Components
But, furthermore, it must be possible
(2.a) to connect them on the instance level (to other Properties via Connectors) and
(2.b) to specify attribute values
-> Thus, they are Properties

How would you suggest to do this? Lightweight, middleweight, ...? Also considering the complexity of building the editor?

Thanks

Joel


James Bruck wrote:
> Hi Joel,
>
> Have you considered creating a new metatype that would have references to
> Property or Class?
> Perhaps have a profile with stereotype that has metaclass extension to Class
> and/or Property that introduces the new concepts you need. You could re-use
> existing editors that way.
>
> ... difficult to guess at a solution without more details as to how this
> will be used and what new features will be added. It sorta' seems like you
> are looking to implement InstanceSpecification?
>
> Inheriting from both Property and Class as you mention will probably lead
> you down a difficult implementation path.
>
> Cheers,
> - James.
>
>
> "Joel Greenyer" <jgreen@upb.de> wrote in message
> news:g0e0s0$597$1@build.eclipse.org...
>> Hi,
>> (this is mainly an EMF-related question, but deals with extending UML2)
>> I want to extend UML2 and particularly need to introduce another metaclass
>> which breaks the typing concept of UML: I need something which is an
>> Instance (Property) and Type (Class) at the same time.
>>
>> Therefore, my first approach is to inherit from both Class and Property.
>> However, the EMF code generation produces code with a lot of missing
>> methods. Is there any way to do this correctly? I tried hand-fixing the
>> code, but I'm not sure that it contains no errors, plus it'll be awkward
>> to maintain.
>>
>> Another approach could be to to work with Property and Class as is, but to
>> maintain them such that each Property has a unique type-Class. However, I
>> feel that this will need a lot of extra customization in the editors.
>>
>> Any ideas?
>>
>> Thanks for helping
>>
>> Joel
>
>


--------------030504040005020803090102
Content-Type: application/pdf;
name="StructuralElement.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="StructuralElement.pdf"

JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp bHRlci9GbGF0
ZURlY29kZT4+CnN0cmVhbQp4nL1ayW4kNxK911fk2YDKDO4EBAGS3DLgm6cF zMGY04ztwaBl
wL7075uxccnMKpXUpUGjS3xJMiIYwSUeM80Rlq+HPxdT/wEUc4xL9nb569fl n98tfxxgwX9/
/X4oNh/d4nI+huXlkFM+JkFfFkYe4jFXVFKeytpqlPDl8N/Db98dDKn9x4+k /2v9/1NV9r8P
0PX58LOM0eBgHp4PuQ61LK7E2uL5P8v3T3WceXn+7ZdbA3c3cGss/TrjTai/ 8S7emnT3r+ef
Dp+eSRiwy5ZR0L9fqsO+Lm1YZrkBHMOSfG1D5S8L2tLcCsbnar1Nocbh5VCi a6iOgpBzQOMD
cA41zVDazoK+LOfc+3E6t24upWB/k45+383ZFHTt/d1N/X3AYjGP5Gz+88Oe z0epJ31eUrVt
8PmeYTano10bRnqdua8mfKr2OYRP3Yx17CBCnZHqR0bqRwu5mtgdN0NpOwu6 KHYfoHPHRTRr
oexHDgzF7wcK3BMAeskzZPBkHNi7cAuOnmGxerR6FSsfTwS2qTwZVvDn48oS EnriTFzRKEAz
Ing07HFc3OsIe9xM1NkE1NdgwuDaEUizUcL5Te/6uk45J+Mm/38OKen8tphG s91DpqVKOzZA
RQ/dkCaneszVbco6X8W8oLtLnfkWSt0AyHelWoiLpSj0BKNC0KXU9j1dWQjD DO3YN49yE61J
0oqCPGolm6j2BAwzTArrAFzbiwMBmQlYQOgVxhkWgjL0KI4pLCii+c4383Gs 1tEeX70I6Jhm
RMCgVVEKkso9ECyDTcGSGjWiwjDDPNgU3GBRi1yUOoFhhn6zea6OOoXO0jxb zw2w0GdGfcZn
Hs8MhKHPDIS2zwxajm1PNaHPigHYsVceJSZe0ahP5wTa0mK+BscVdH0+IEw6 HxCUPh/A2j4b
BlCoYe5zAWHocwGh7XMBTOnB94MBNBcQxj4bRLLOhm4RzQY1gubCAPJgUXCD PRqnNksEwgRP
zQM9NhXKEh1mQqGdCDMLPl4t5Rm+bcOWkBUUEEm5pqjGkeslhaporoOhl+WU VSRaMkO1WRor
W2IL709blCbkJwSEHEmJuAZLYQ0+ipTSkDNG+1E5iAxLKIklgRDZHHDCt9FJ XRx6RR4pyYvs
OdEUZWSK0lCXhl6pybaE4qApNZuSomWM2jr0M5kQpNYHQxoYfV5ThISzxfl+ 6ng+dR6YGtCv
v7tJtybQLz+J9JvoMAr06+4sHpbYhB7XbNdr8VGO3OHkHG2AmqDQNjme2WJG IeHxLqsU1VmP
5loMdJIX+rWYwd6425rs1BaZD0o97MuK2ezoBxjz5A/V35KvhDNC42Yp+MLu CCjtAxsHQshI
id8g4nxafX1d2yzG4Rq8AuEc5Lydb1obGoGrnb3pdG5hpFzPwRYp8RulnHfs x+jbOhdSujrL
7DLfyTFRwDcxTB53O7XIX8rYxJeSdIq/JqRUb5RySbSurW/HMZlSqhPMUlbC U43RA1OLJ9wm
6pZRdsPUhJ1eDraaciZMBpOjXcrIsaFAEeVxTBbPskafQUnZywEXamNoDDgl DHFdlkZD9/OM
8bp6tn7xHhPUE2wxDmFCF2mkqOZMtAah7wyXd5iWfCMbxAO1k0FLO7lyQUVM 2RCFxuYQ2UYE
ZV+SVYAoTsgN/YIQSJYZGge0lkmTl14wMMCOwoSSoNzon7VKrhzVWSJpQaRY oWWMXKNZyOps
41mIXKNZMjbhfdYSxW26M/NJKTfiVmWUwYpC0lVvGfgeok73ejTIjobiVBcm tCV781kjaE31
fI6N6flsB6LXURAUGmFDZGUR8bphxoflMDx3Qw9gXijSoOtJiXmRlIXeHVr5 ONXwWk1JOFEi
lIX2FEGeydPB0+04EymfOq+rZeFxQZBrLErHw6TOZy8kztH4lGJGqevMzOdO MGuZ5Fsph6Hc
enTfi08U2QnBiDZBFmvliBK05XFgvdwQy0nWWByeY66xOERRWByWs7I4zU6Y Gxx6HQy9mMWp
RGZxrMsytbe+szaxSXnaVEcoTMgqh6vIdQ53QNQ5HNcph6v9GodDGU45HKGo HO4ALg4cjnUz
h9NezOEQQWNxqotZHNuhLE7rkvZrLE4lMotTO5jFsQ+Ut40xW4d9StAZNOvT GQ5H89hmGI72
V0lc3HC43DgcdApX6cxlHM66fILCwT1Soz0Khb+pquwUqpyjUFZ7PmBDeCTj Cp/PlWvy42nI
JIu7wknLffFvJn8nLPdv4n7zKpd0RhJKRnrMckozI01ERynnE9+P0beXu7gT aW+ddBlTykIJ
CxOUs/fqKuqd3MTbeEnSe/Y9yZ9LTXji4MYcMCvL4MiNjGzestDkkuatMVhN SLHIR2m2Y0mq
W6dXqPw3y946K2Y8cE9nwm+L3CDtncGLdKzupsArwqJpMD/cy4RdNvzKTWnE AvRGmye+I5QF
cV0UlAlhmiALpphek0tbPJGQ7xIzn3KkS8vZUC++AxebGM11hMKELCGyOBXq F+m8RZQJhalO
+tUyn1YowxFygiKhQCOja2oeGWsufM5Lr2J5nNlQOzvaUShbUDuKY/mtLqkd xQ/yfPNHlKgw
SoqmiK3XgjDxam+NZcbsnm1fn4su0mscY7c7O+3KlbyB1xMj7Uyb6OJCduAy w6QtkcOWSO8E
Ep/9kV4BpERDivQCICVZjSlSOiNPo6xSah+7HI6yaBBQNSfL8lux2oNToD1H JjYAhyAywGLW
IudzUlQ5dqFtkbtWI1RKwns1au9xrvAIVBnPY+nBl+8iq7BjUAcvCixm0wo8 dGqbTRPpl8zJ
GmvOvCZ5mA1ELc6zgI8lsq+Gx+FZJcau50EEXB05b/OjC6bB9v4It1CfHGVp ABFnF8PdIwiD
6kObgnbYVW2eLkQpJ6t7mjeUP0hqc38HloxL+J468pab5Qai7sifMMuh19on 8hu+4ff0wum9
JkR1z2wBb7mPxnOBjATZjPnvxtJ0xlKZVk53/GYouHowozSJkQny3h7gjKF0 VYLJGh1enMlx
4qamc1Eq2dJPwEnfvY6AO2H2HG/FirCXzAEsweE+zTctWRDfpuS6rnFRhELL dChrq95/5z7s
mH0ZE7mr6sI5i08S3XeoREavSdRWvf9l1l9P1+dxv6YXELgHJIeMbZU2UALj +h10i53LeHYF
upGrNgW8W2FUbSKUgO9igsW/M5KWk5Sd7G3lhY/Rid7gZ5EuF1Qyo0skS8tJ yqWjubbOTWwj
UtxI2cMc257B46r2Ywbfo0z5W8iRznMHKIsR3u2T5JDkegiP6xlJy0nKBX75 EJ0UZXoWbaG7
XZFlJQN9VbK0nKRcOppr69xEmZKU6NL2HeLOdffqrIu47hNlqKuzbnUExdvN EaZXB3JM8H3J
w85eX/igkj2MP9bV3UkQ7VuF8uqpLK1GCa98Jnx1XTufCWf82uH0nkmkj9+A 7JG+4UvCAm2j
xg9Q6HZb7VBIJgL4PBXFvEnEa1+JXl/bznszE3Ai7jpn/W5o7xXe4BzwxGcL mVsAE2pGNUaM
XOL7zmrkChi5Fx2FvOaej9C3892ip+UKaXNv0L+0BPrSkj+zpAU8fmNZH1ie VUjoH9dXjNsR
kaEvDSb9FAevo2ekx8x0LyNVMm0KffimDWWtKBpannf2+2V+fuMwa8KL1HoF dweqdW2BlNQa
1jrkAwPsTV+bV++Xiub9vPwNchURCgplbmRzdHJlYW0KZW5kb2JqCgozIDAg b2JqCjI3NTkK
ZW5kb2JqCgo1IDAgb2JqCjw8L0xlbmd0aCA2IDAgUi9GaWx0ZXIvRmxhdGVE ZWNvZGU+Pgpz
dHJlYW0KeJwz0DNUKOcCAAQoATEKZW5kc3RyZWFtCmVuZG9iagoKNiAwIG9i agoxNAplbmRv
YmoKCjggMCBvYmoKPDwvTGVuZ3RoIDkgMCBSL0ZpbHRlci9GbGF0ZURlY29k ZS9MZW5ndGgx
IDI4NjIwPj4Kc3RyZWFtCnic7X17fFTVtfDe+5yZM2femSTzSsKcySSTxyQk JBNCIJIT8lCI
QICACTYlQzKQkbwzIUIr4BONWrG+qy3Y+qBodTJRTEBq1FZre73S2lq09pbb Yn1UrrSXorea
mW/tPScPlPbrvd/3x/f7fc6w91p777X2Xnuttdfe+5w4hgeGgkiP9iAOye3d gb6e9as3I4T+
BSFsad8elv5yhy0L8JMICYu39G3tvuHwn/cjJKYjpPr11q4dWzZvS7kcIeNZ hFxnOoOBjoNX
5JsQmn8K+ljYCRVXxK4RECoCepTV2R2+stS0MQRlGcpdXb3tgWeuPtIP5ceh vKg7cGXfr8y/
VEOZ8ks9ge7gcv6DWxAq5qGuvK93MPxrlB9HaFMlbe8bCPaZVueuhPJXEDL3 Qh2GL/3oAVXT
MuF4lVrQiFqd3mA0mZMsySmpVpvd4UT/f3xUR1A6S4+idN6LwA7xU9MpFoqf om0Ukg9AWRmJ
pHyi6HH0a5yLJTSG/4Zs6BPswAvQcsSjj8FbnkRT6C6UgprQ3diCspAVrUfL MQ80PnQLvj++
Pf4+ugh9E303/gy+Jn4I2m9DL6FPQIJ/4zEqR6uAfj0Kove5d1BL/FtIg/Yi HVqC1mIrCqA3
4PtXkOEOdCf6If56/BMYNQVdA/1VompUHX8+/hnKR7fw+1QnxKfR7egoVsfb 4yE0D2WiEeKL
vxH/HfKiFvQ99DjI5MOT/CXIjbah69G92MG9BNhd6CEUw3rSytWonoORlqMN qAcNoxF0CP0U
W3Cj6oTqTPxr8XeRGiWjXJAphN7HZXgleZjXx5fG30KXown0E5gv/U7yl/OP qi6PVcW/HX8B
paJnsBY/i59Xlai+MXV1/MH4E+CRXrQANLIKxtmMrkXPo1fQn9FfyO74bnQJ Wgcj/xhnYAl7
QeNvEAfZRXZxr6P5MNtWkHYI7UcRsMgRdBQdA938Bp1E7+AUnIZX4M34dvwX oicd5DXufu4p
7pc85r8P+vagbNBRGD2MDsN6fhW9hlXQfzFuxFfgXnwP/jY+SSLkQ/Ixr+Gv 5T/lp1Te2MnY
p/FV8b8iO3KiS9FOtBt0+z00hp5C/4p+hf6C/hOdw2a8CHfiB3EEn8QfEpFk ktWkj9xNHiY/
4FZxt3PP82X8Mn4b/yr/luoG1c1CQIh99kjsjtgPYj+PPxP/OfiOEfr3onrQ 6NXgFQ+j59Dr
0Pub6Lfo99R/oP8leCP+KowyiG/Ed+If4B/jn+MPYJaIfTPJElILo/aSAdDT NeQOcieM/hp8
j5O3yG/Jn8hfORWXyS3k+rkHuQg3zh3n/sibeS8/n1/Ar+Y38nGwTInqYtU6 1UHVY6oXVGfU
leoOdZ/6PeEa4TrNv0zlT/1bDMU6Y5HYGPiuBjxpJ2jiO+i74PdPgQ1+Chr9 V5D4JDoLVnBi
N84BuStwPW7AK/Fl+Cs4iK/Be/E38b34fvxd/ATMAOZABJDdR6rJOhIgQXId 2UtuJU/B9wh5
hbxBTpDTILmN83A+bgG3nNvIXc71wBzC3C7uOtDs7dwh7jXude5d7j3uNFjN xs/jh/id/H38
o/xT/M9Vl6q64ftd1XOqSdXPVZ+pPlMTtVOdri5SX6E+qP69oBYWCo3CTcIv hf/U9OF0nA+S
S3OjBXHAGpxHDpEUfjc+DRUZmEcmmLkP7LAOVsV/oiouBnYx0naQLZU4+GTK qZb5CPCH8VFU
hn+MdqsJB5GYP4mi+G1ykn+RXIR+hduwg3+U61H9lLjRYxCN9pFnyVG8DD1F KskG8gCH8Dv4
IHoH/P1KdCfehgfRY/g0XoyvwuV4N/olsXLr8HWoMv5dwmMRL8dnEEiAruY7 0Ff/cRTEFeht
9H7sO7yB/zrEp3F0N1j0cfQ7/H30N6yKfwjRjYNoFIAocwv4+/WIRr1WWGe7 YT06IIJ0qV9D
T9EdRShXL+V3ojPov9D7qiPgUcsgkr4bC/Hf4f8QL48XwgqDVYYOwrrrRBfD inkHvOQYlGnp
K7DStRBLSmBVN6KNqANdBVHv9ngk/kD82viOeC/6GfD+DRfgv+EDsCLGgaMS /QS+t6E38c2w
Di/+n+0CsQ40iT7AdpyNS2A9nFZtV+1THVI9pfqh6lX1AtD2deh+8Ojfgzdr YQbt6OfoA/Qx
1oBtHKgA+UHeRSB7M+oiLdwxVIOdqA/WbC7E8WXKTAahl2tAew/Aej4Ga+MM xImvoB+iE5hg
G8yoHcbXQD8NoOdNQP0IWPBaPAY1HRC189GfYN5GvIiEYTwZerobotYkyPQ2 +iNoO87kKoC4
UIs3QF8fo8tQB4ywEDXiUbDAYVQBkbWW+xfQdxY2o2U4Ez8EfG2wQo0oA1Wo /oAJKoitii8i
Ie4Y7DFxqD8Au1caugj3gxQmmMcUSsWrUVlsLcjwOkJydZNctfSiyiWLKxaV l/lLSxYUF80v
LPDl5+XmeLOzPJluyTUvIz3N6bDbrKkpyZYks8lo0Ou0okZQq3iOYFRQ56lv kyLetgjv9Vxy
SSEtewJQEZhT0RaRoKr+fJqI1MbIpPMpZaDc8jlKOUEpz1Bis1SJKgsLpDqP FHm11iON441r
mgG/tdbTIkVOM3wlw/cx3AC42w0MUp29s1aK4DapLlK/vXOkrq0WuhvVaWs8 NUFtYQEa1eoA
1QEWsXn6RrFtKWYIsdUtHiVIYwChIk5PbV3E4amlEkS47LpAR6RxTXNdbZrb 3VJYEME17Z7N
EeRZFjH5GAmqYcNE1DURgQ0jhehs0M3SaMHkyC3jZrS5zafv8HQEvtIc4QIt dIwkH4xbG7Ht
PGWfLULnlprmvXNb07iROntIosWRkb1SZHJN89xWN81bWqAP4CXZ9W0j9TD0 LaDEhnUSjEau
b2mO4OthSInOhM4qMb+gp47WtF0hRUTPMk/nyBVtYBrnSASt3eGOOp3yRPwk ctZJI03NHnek
Ks3TEqhNH01BI2t3jDlkyXF+S2HBqDkpodhRo0lB9Ia5SHCmjWGMnGINa2c0 i6lEnuXgEBGp
XQJJmj0wp0U0Cy5CI+2LgAw+LRi4Ih1gkVBErGkbMS+m9ZQ/oso2e6SRvyLw AM/pD8+vCSg1
6mzzXxFFqZ/MuBq0T+MRny+Sn09dRKgBm4KMS1m5rLBg+zhZ6OkzSwBAfagR dBtoWVwE6ne7
qYFvHpfRZihE9qxpTpQltDktiuQiX0uEtNGWyemW1PW0Zc90ywx7mwc8+Sl2 EUiNaLwz/0xm
a3Jd5+IItv6D5mCivWGdp2HNxmapbqRN0W1D03mlRPuimTYFiyTXNHNpRMFI GsdawSm/MkNM
C836CJ8N/9TMqTsiHDglq8BSfcTcdkkib9G63X+XZ1zQzGEaj5+hXAzMsilS Rhb7zi8vOa98
nnT6EQ7k5b2koWnjyIj2vLZ6CEAjI/UeqX6kbSQwHt+z2SOZPSMT5FHy6Ehf Xdu0QcfjR25O
i9Tf0gKT6MSLwVkJWjbqwTeuGZXxjes2Nk+Y4fZ2Y1NzlGBS07asZTQL2pon 4Cgis1oyU0tL
Ei2hBgyOHiUa1pQ2ISO0h7XyrIKV28cxYnWa6TqM2sdJos7M6uBTCMcUanwV fGHXF9CypwiO
qYVxUiUnIxUf45BW4GMYOTRqVYxwz2IvEuGwa0d2n/lc5VTlKvPZypVTlagK cPNnkC0odie5
k7Ihw3CA+EziJj+TVehTJPGTMBa7hT0H9ywBaXH1BBLiJ2SxvMKvzoVMGI9P ymJumV8tQwal
E3KjOwfaIMtD+Xy+KldbpF+EylVV+ivQFSTIbVF1arZq3+NMK9SYaETMaUWR F0QMBwchBc4n
apHnJZU6RaVSa7SyM2Oplg6hc2b4tdmE49S8OI6flY1qgah4uIhp9DabE42T gKxzYXY92IM5
PE6yZNEl4mJxj0jEIyQL8UAhSiqscui+2m73gQ5aV045zrX2n23tt0+tqgvW /hEUUmmurKpc
eTrJUlFUOeXzVe5VzfftvepHe+fbKRDMlZV7f/SjUTWpaWp+SvSLBj/ytSwo xg0R3bqGyDxw
zQnExWNRDa89Eo+Bpj4bVfOL6KcF97f62Mft5uCL3ckcp3ou9sM9U4d3xF4i S3BF/k9fwitj
Y6ojn40Qaeok1fze+Hv8naB5E9w6vz2BLPFP5AW6ivK0i9OIZYN6g3aDdYO9 Jf1jQV3GLzEs
SS5Lq+MbDA3JdWl3CveJWr0Rji7IOU7CUZWQAkBO1ulMSGtza5x98/A8cx7h vKZxnCfrcR/a
A+M5MqqqmW76QQlTlX9cZe4/t/I06KXqNHzBT1B/K26taZZ1W9RbtFusW+yh dFVrC2r1lYID
LSwtgRME8mR6c1KTU2zW0pKFZX6vJ1O9Fzuuib4Qi01NXD4qW/zLd7Ree93W 4A2qI1Nn7oy9
G/uv2JnYW5e3PEDyH17dt/+xww9+mz4HKYa5m/mlKJ+8IE+qk9QeTY4tyea5 13Jvyj05d+WL
Qkp9CrEcNUwYX3a/4/nEcC5TnWdYbwga7tLdY3k0c0IvVHvkrFrv1swO717L 3pQbMq/NEsu9
dep63QrDalO9e1mmkJmV4y3Xl7nLMss8ZVmCWqtKEt12Q44+MzPTI2RlygWD +itTdqRuzxvK
vzH1uvxvpd6V/1TmUx7DHnyb7Rb7ffnfz48UqG1uq+z2+K1yusvvsuLfWbG1 VONuzL4tm2TL
9gx/trOAurAtSVvVWICLC3BRAS6Y5y42Y3MpdiNoGzOJVQwCCWIrirqWw3fl OLXGZ+A1K0+f
7T+9ytzaP+A75+unpQGf7zRKuKJcpsZYja3Ym7nQXe9uwi22DhyynYMzp43w TncmyU026Emu
cxPcrOtzdY1O7KxPFqqmWuFfksVWMZ1a+9MmUGb8Z2O5+X73eAJmjsdPjs3L ouWTY66sRNnh
ZGU5DZBtBrwwsz7zXsOdmT/K/GWm2p2pN/C8k87jaUeaH5ViOjNbYRXAyJio XcrKmdl+CuUM
Z7ofwaqV4VrPt8HiPYPhGmWGUhtcWyhlshUoMZZXIh5v4s/whE7BKkPX1lKb DP3aZOjUJpeV
+22ybz5k2XmQQb8mm8u2ydZr423rnXJmlt/kxI3OuJMok+/3nVXW5CkfLZ71 UfWyYkIZiUa6
wPtbUT98WlthG5tAWfFXZFFnqTLlQgZ6+PCwoUKfoq+gaFRfARr6YFRXgSgz Bn5YNMnZVlgO
5bAecrw54HRlflgsVpvKC8tDUKfCYuHpCVwNa6cYOy097d3l2Smpy2OPX77r rXfe+mVu7OOk
Tc29xVK6Fz/f0nz2ozencJFv7frc9CIpNSWpYemG+0ae/cbNC5Yuc1k981LT t6xouOGbv4jA
KnLF3yO3q74Nt6BX5TwJSdijzTMtNq4wtpgERyqyc9ZUZLMkp2CbhaRgOycK WkFvp+o2IdsB
W8TGtQGYtHG2ccxHUzENI2Mole42Ydmo14lF2iKEivAmCDVAIefaOa/Nsj61 KmV/ypMpXFvK
npR9KcdTzqSoUIo5RUopTuFTHM4rDyQicP9AQ6QcIucSFjlT4pOLWipX0h3p bGul+azjFLLT
sAO7FJCegqCcVGqCD9ijFad6klKYTm1UaV5QaZKnrLQsO4nsnNTlpOessG/+ +qU7K3Ti1Vdj
J+89GWu6xpee9lZ+6Zq6BXfh106+/lDsJtDPXthCyyHKmNFBOfceFRaNeJ1q i2pIxRVZmo2d
xj4LrxVNepee3KaP60mVfrWe6MfJsJwnCBhpOaLW5iLRLBaLfSIvOndb9lvI Jstuy5OW4xbe
YkZezNEAqyNkDz4AOnIkVU3gdDQdZM2nzXQ/bu0/1+pYSadbSWMt6KWihM4S tfajhogNNFQG
GhrVliyCWOuGfTp1IfiPTaDBVZ2ED8TexaqabbVtLZddfNGStUW8955ttWV/ nV99KPZniOrL
IZLOhzl6UAnulzsFpyZdlWF1rki7JH159m/Mv0sSFzrqHZd5tzi2em/wftNx h/MR50Tay86f
pOnVakOqVe2w5qjzUlscw+QG8oj6afVLav1z/jfNJCOrZEFSgSGLrrosOTMX MkeGvzfrsyyS
VZ9BV3ex0eS/KAOjDHNGJOO/MviMjAJcimSoNSEXiLbeLacnVbnlNDNkdhpU SPhpXtAbtDRk
jkEbg9DMIFAUUMeTU3TzFng1eWKuocWl368nLj2O67FeNlr9eudqP/a3gW2/ UYwxLs1zb7Lh
39nwahYKOJujNFQ97X0sqraC/s/5EqVT9Fh0GtYtmAH2fxogTsFZAEJBItJG izJwf8vpRIEG
gsln0jL8TVkdWaTV10KjCXgpZ4RzQmUiarT24xxqK6s1lUux2tzgqDlq6rEQ ARaWLyxPbJBY
raZRgIUICBI4GPf94rVnxxu4tOzYBzqzwF3yUOtDxzbc/80fX9rY29CEv7rw g6zy5tpL60rN
OvL7+d+6s+WmZ2Ljt1x/aXq5Q1NfH71x460N6dlS+pq6JbFfWErsOZVLNpR4 y7OCoJX14A1V
4A0O9O/ymmZTi6XF2mkKWULWq+w7HPeQe/QvmV+y/9r8hv199fua95PfT/1E nbwoeVHqCssK
a729RR/SC4st5dZyOzesGjbtVd1guslx0PKodcJy2CoamZXS/BQ+bUnxG0sN tMYxz8+gKclv
OIJ5pAUbWpJ0SAZSJAMdKt0HtjqC4fwJTZJNwLQWNsciA0UM7tVGbHSmCW4I Hs0J862E7fBc
68rTvrOnfahq6mzrKbDa1FkavX1wUAHFw1mFBdiEZheWq6jiEZxQwBz8gtif jO2rQ1ft3ta4
BcKa7+yr78f+hK2nX3iHfFiyrun2Q8ceuLy36IcvYC9sQwLOfpSeSVbE/8j/ RfU6KsDH5Ysm
ksYzDue+VMALyUKqLdmWavcFVcHcsPpKQzj3Tf0bHn2Ldr1xfWaLp1O/xbLV HcrdWjCccUPG
3W69xcM2VZefQjkIm+iazDWe5zOf9/D9mf2eqzOv9vx75r971D5tviErM8tT YfB7GrQNhtrM
Gs8VhqBnh2Fn5k2GkcxHtI8aDmYmi1rRoM5Uexxah8EKpxqP1sBj2wa77JD8 vXbca99vJ/Yj
JIjSYEnqnRWuNJxWmMKhS9gOvNwp+RP7bxveB0EqgiexBv8HLzsrzHBeKMwX 7R/FbdgmJ9v8
tgYhx+uc78o5YI6YibkBf5QkoWJ6ciz8xbrEqmpY1zyK5EUtsJpaqYkA+gbg DDnFtttTCTgA
ywp2WLbfsi01E/SRlrEU9HFcgX+IJtOd9CQAKL0StdDScdlkqTBIlgotSyZa 9x7sQ1BnqNDa
aUqu8M39tChHpNTF2sUGes5r0C431GTWex7Rfj9Ti1pbEr6i7ND0wJrDvnR9 lkr8eVu0lW7R
vEdCK7Dk3L/3ttsvutQ/8R9te3d/9H0MO6gQO5F81VVXLy8qWIQjrw3dEkfP xT6IvYF/m377
jTvW+JenWeYv2bDjib4Xt/zlp4b+9rLMCn920ZbuYzfvensbeD74lzG2hl/L e1Ey9j9lyVXh
ZOoedr3Jr7EaTH6BZmqaqaxQR6jxXM7FfvBr3qAzqs0EJav5ZMJzHHSnTm6D A+Y4flK26EyG
ImMuklKLU9tSuTOpOJWdwLx+CmVL+jx/Klyi+ApOtjv8uzm6ZeXIImEluOHS kgVXIDl9oV+x
dsqPlB3cB5coyOGfcony+SCQms+egjDaWlQF9ylzJYaNuwJBYLRUACJAdASd 05MRfFobImbY
3hbD9hblzehI/AzC8TOjnBmzWxPzDRU1sSGpKtmc7IDMYq9SjcfPjEGBwiiU E321JLuTk91Y
MHKezJwctuSN2Bf7BHtiN9Vk11y2u3HNKseyss1fdfDeKSP5y2dkonXzRZlJ bxsGW6j2b0eI
b4HIaEX7ZbuQbEveqOnU8OM89mv85lpNrel9s0pNt5+MJMFoUOt1OjgBEOy1 IlnK8j8JgkMn
TjvVqRVOm/vsB+ykz37GTj6yY7tW59Ub4SgQNRj0lMIELAf0+AzsWg5bVWXi QDDgm3MkgJM+
q2A3dXYxrTpNnRXiGhwB/CyyqVOT2GmgtGQeSeVbYu9mralYHvbR88DNr7d+ a7WLzHs8uKjx
umjMxXsfeKqm87qv0ZnqYaZt4Gc6fK98c67wE57cK0zgt/GvhDMGlUZw8nZ1 rrocLdJcglvw
1/GQoPVin7AQLxbq8QrhXt0n6k8EMZv3CvlaP79YW8Ov0r7Iay7VNvEt2g6+ W3slvkp7J3+3
cET7K/5t7WdaA8cLgqi18hKfry3lq7T1vJjKO7SLtau027SP8s/wr2jP8aJA zWqx+/nx+Imx
VBuFJ+VUfZIf81qBR4QBDRI1HActh/MK/XHqrEBksmb5OS8RUwgRVWqdTmk+ o8MUlW3QrPMi
VQpCKrVKBac2jSjqkGqcdEfVpSIAWacJrjbsN5w0cAaOVpNSHa22nKEP2syI +j2Pgnrq9w52
eLBDYDvtWAlnB4ahooSNIKMPDXz9088NEhimNwpEs0Q8eloriW42wShAxG4Z 9MLQ2t8/gGlW
ijHzZuzmOD3eHbsdX/bsS3hF7F58U+zRE28RD+Fib+OsmDj1c7w89gy16h3x d1VZqiOws4/I
iwSNIApmm8YqXqy5WBQuEzeY7zbfk3Rv6v3WR83PWH+d+o76nFpn0OsxIkJ2 sqjXSYbXYJMd
JzfLmXJaY1pbGteXtieNSGnFaQfSJtP4NEzgAuEodkw6OAeQjTkXDCWCAPXR ldRjz7Um3PU0
0wM9wfYnu5MgdNLFuLAMfNVsJMpx/Q6cq0u+7eu79jhxbvHVJ574xZu7UjJU Rz7747FFG7u3
3v0E5/ssFvvkrbtbAvev33VOWZ9qB8xPT+yyTsd5NV4dxzMH2COL6Yv9Wmnx Er9Id1YFyg+l
z4dayNSiRvsH8UMtz4tabTJJ582iS+shBbwEF5itpJMPildoh8mV/EPiIe3T 4hHtOfFvWut+
fp+4X/uS+Ir21+QE/4b4pvZd8h7/jviB1jAsXqm9ltzCXyveot1HhGZdkFzB bxU7tdvJDl6o
JQ18rdigvUxzmdisFezaIqOfLOb94hJtlVHgiJ5Xi6I2lTh5mygoG5QL4rZW VOkFoURt1JfA
vcTMEU2jxuDX0YzN0qgz+DWyMcevoxlUPSCbKaLTcHBywkTQIg0NFlWV1NMS G2ArLjpt/uVp
WpE2Hl8iF8IoEg/+X8LxKRzHE51WW8IRQAl0w+l5QvRarSgKGhd1B2wYo++C jpBFEIcnxy5v
9avYw4x1TX5ViSALuzVYc4zuGcd0kk5Pxski2CsQkoEQyUCESuBsrqfdGKi7 QJCD47W58j/M
lU6Heap/qr/SaTfDURsqzKf6UWLHqKoEac9/9qY8Z0teBxuCJn5yVCfRh2qt 7JO4tSNff2tp
El0x4GfYjZNux0exFs5uz8ZOx34b+0Ps38C77Nx7f6vnr/l0F03gU9+GSPiw 6gmkQhfJzkYB
bmhghmwV0vAqp0A4CSc2POru6gUTs+6+yhyjYRmwKubnpSwOfxvnkpOqJz5d /jH111LoW6+a
RBm4St70tP0wXKp+yr9sP24/7jju1NSk1aTXZGxw3M/fZT/EP5KuUTslBFHX eQlfY69x1Dg1
WfYsR5aTs3r5DfyN9gfSHkh/IONQ+qEMjYXep6SMBRnbM67L2JfxRoaGXbas Kan+DGLWmzJo
vCJUchlx7LmSxeqHOTw4RrDeNI43yB6XvggusjLU6x9JVoknrFa8mu5eLtMJ 8zBxzHv9hcQh
+yw9wvVX0m0JjnC+/lNwHYcgBf5VgZNKfYnnIRnxyWhSBZUhamJANporeI25 QqVJAphUcf5R
TCemOdJIWjKmb97prd5SQY9huLVhTfMxOKOeROmQMuInleemra04yb3Qwq5G 7LokZC/MgjM8
HMYENa8WeP1nOeYDH/7QtzjY0typib3nwJqX3vzk4pWlsXMXW7Eq9umdWPzN aNVl678avOJr
6e/99IMn2sc2V59t9NJnrNVwH8qBXT8FpePvTSBz/BO5Xldxn/gtw93mg6pH tUfFo4Zxp0aT
gi8hF6vrtavnHTQcVh92vqz9if4N7Qn9J8LHBkO6KT1VhptgqmxM8ptSn0t9 LZVjhyzTvCoG
jTaA5FZZbzJaGo1tRmK0W+jp+7AjzY9LLcxIGZKfwcy8BPQVJqA9nUHZBNfm A4ntiKBNFgt9
FMPrLHZ6JMnSCciNi1ITF6WieZvm9c7bP4+fZ3JrZDgwahwZyq3XR+9NrfTi BHtW1Wmwn5xi
l3NTquzyPBNkcNW20zs5M1jVFLOvBYQACgsVBogsypWcwug06VnlcRljQNBg qaBCR20UsMd+
rFjtrvLRfa6FPmOraGXDG2XQkpEOaqTDG2VQFnt41sIewsPirgRfY7sJavVh eo2TYAOh9zjE
udnekpw4pdvI37B94ftPxv50fQinvH4aW9RTMndNYNnGHO7KDV+prMR4bdG3 Hnz69t/CDccX
ezl27KqbL8FdO3fX1AxSX2gCXwgoz9v3yYWWFnWLtsWSeMp+r3Cf+Iko9s3b M48s5vz6xal+
xwquVr8itdZxnyimsMfsOid7LqYTjCYwlNaWZzR4MX0AZDIh5230mbsbTNFc OXOD7T+XeNKO
Ek9+Zk54Nc2yIaQOaUOWxFN2dWuL212mXGAtpSU2CHRzH7Hzgdin1aMbn4l9 Gnsheg12TFmK
ancGbrxua8feBy5vwTkwXyN23EnMn/UdurTn4YeeeXA/CBiAE8NX4T7rRG/I q24Qb0q5ybof
3at+Wfwl90vdXzkxW8zV5xryUvKsQ6oh8QY4GiYLNrjq2vJIPkRJIVd1n+oe 8RXuxzpVFV4N
wXOtmf6p5RkaMenTbHvCgbUGgHijbLMX8howr8VvbNhkwqtN2CSn2v0QkXLl TEuhljN9ZNyA
PkKsK2dxOk5PzTkgYJPgEooFThgnt4yl7VKumf3n+fEUfXZ7KnH/B6SVaZEG DhW7r8Gd3y3Z
lOet6iQz1RtfhV3LYq9+GHs7diPeif3YcLCjJPYb58Pbv/eznxzYfoikXX7m fXwb3oh78F37
vxqpH7jug9jfYh98eDf1lLXgKd+CqGGA09Y98iXv4Xc1Hyd/nMq/TN5TEYtD 5RBJi3lD8gZr
i/0ecq/6Xs09+nHxV+Q3qrfFX+nfVb2rfs9gflTzM/Iv6hc1L+lVQ5qb1Ndp uCTqRFqdjTpR
Ci+kVAjOtrQ+iJVGNzrvwUfitUzCXegrmX7wFzFk3gLeErLzmL6SgSut3wIX A5SagjyZWd7s
lFlvWTsy9cCfsT/2yoffjH08gqW7e3ruuqun526SeQtWj8Re/ujPsRevix/8 zsGDBx44eJDu
ZUOxCfwwpn9dVfW0qNGptcI4nienqR/Ai+D8MIC9QhZ9opc4Jjv0W7crr9hO TYGcYKMpTK+A
FRULipPdELfVQs7CheWeW7Ajf2hj+fpLyI3Y8crOW/ukcPrm9VS/d8Cgj8NK pO83hyeQCOGv
KklbJYuNItkjRsRJ8bj4kahyiW3ibvEAVKg4tYBUPAfrTkbH0UngbCVwC1bB /qAlghfz7L2K
O8vPOzTKfWv6ckW/U7CpcSozPbcmHt0N+JLpOQLSHdgBFyoHfxjzsc8+XcF7 P32LnraphKAR
DmXJqXA60hLvHA3wMxqYovNfUFya6Ih2RfW5GVbeMVh5Ejoh1y+a1zBvg7Bd s11/veY6/fW2
69JEtU2dZrFZ0nKTcu25ztx5mkt0l/NN4kbdFfzX+J32sPOw8bD5ZcNL5l+b 3zUbuXS1hBKP
Aypc0Hs2wdiaXqgWLXSxWRpWJ+NkutKS6UrLtxaaOISx5NgE1TmWDcQlSRxx SpnFmSTTkXNA
i01al7ZYy2npinPv2n/eiqM6M5893c/ekSZWHiy800n0jWm/jx4MlMWHy9xJ sPoys0iZHzbv
mYcp6lQawBaWl3FVZFdrbP/Tf4wdenxy4tZf4CRcWhB7y/XYnhfeee/Z1qM1 JO3jqfGNNz2P
t77+Du7YtPydn5Z3XXXuLxDjPl3uPwLzvAdOWNeBl4hoQK7SqHi1KluQNMWa 5zS/0/BFmn0a
otEgjgd1EBFphCr1ajVRr+XgJgnT1RXriI4X5x7xtAvWzT3itdL7DBSYi0xV sgfBAJmbMIum
ulm6hzs9tYR0TD2gOvJJ7OFPpm6nFq7Ge0mIHAD/KJHd9PkaweXsUC9xxXBt qVUlLpUc+MrD
XXTUU60rzX9sRUWnIXpR16smuXjvtL/AmvjjVr0n/MNNpsq/ahwa9ldx3/1D 5exfO6PYGrgd
vQ60ovI35IxPWBpbhWpm/5Dwc39Yl6aGKtXLoMc/oL38IComh5CLy2D4ckjr SQXcmTegFYAb
geZ2gHqgv0N9CPA/oG9DuRRSNeBNUB8AuBZ4hiDdQZO6Am2GunugX9hi0UL0 n7ifS+Ee4q2q
DNVR1VH1n4RDGpeoFXdqH9L+Qvew/jGDxzBpXGTsMz5vPGm61vRz0ydM6jQ4 T7O/RYDcjIoQ
hAn1KnMvKJDWbuJ3IvrXEEwRLOfYbLWsxDEuuKkoOIeasVnBeZSCOxVchez4 6wquBvxOBRfQ
j/DjCq5BXtKn4CIaIXcruJZ/gZMUXIc2C79XcD3aoqlVcIP6Kc0hBTeir5i+ OmOP3aYjCg7m
MFcoOEG8eamCc6jAvEzBeaQ19yi4CunNVyq4GvDrFFxAm837FFyDks1/UXAR 1SWpFFxLAkkr
FFyHFiQ/NvNfH5Qmv63gBm5jiknBjWi+LQSSYJ5q3Wi7R8F55LQ9zHAV1Gtt zyk4j6y2Vxiu
hnq17XcKziOL7R2GC9Quto8VHGxhizNcA/V6e7KC88hudzFcpPa1lys42NdR puDQj6NKwcG+
josVHPp07FdwsK9jTMHBvo6fKTjY1/EHBQf7Oh9VcLCv81UFB/umXabgYF/J oeBgX+lrCg72
lf5dwcG+OXcxXEt1lfNnBQdd5STmqIN6S65DwXk0L9fHcD2dS+5yBQf5c9cw 3Eg9Pzeo4DxK
zx1iuJn1c7uC036+x/BkqvPc5xUcdJ77MsNTqDy5byo4yJP7LsNToT4lDys4 j6S8VIZbKX1e
mYIDfV4Nwx2MvlXBKX0/w9OoD+TdruDgA3n3MzyDypM3quAgT94zDHcx+lcU nNK/zvAs6gN5
7ys4+EDeXxmeT/WTb1Bw0E9+Qs5CGgny8xScn8Y1TP8zOMifz/xHw+aVv0bB af0miusT9DsU
nNbvZTizS/6DCk7H/T5qQjtQHwqiLSiA2gFK6PuQmlAnw1eiXtQDKaxQSRCJ e9EA4DQPQH2I
UUhQ0wX88wGrZfWB/8OeimYkk9A6aOlCQzM0g1C3HGBivAWoAr7FqFDBSlht NXB0AVwLPFtB
hjDjWgv9DUIaQNsh7wCqAWgPAOUyNkbHF+RcPIdGmqFajDawXgZnpC6FUYvh K6Fc6CMEsg1A
yyCkLdBX3gV7+Xt9zNIWzpGraU79E0yzVG8d0Ec3wAG0DeroaP9znUtQGwRt hUCmMJON6kiC
MqUJK72uB3tIqJHxS8jLxlsJ+WoYewvTfQDoKV8QeqXaHmactLf5F5ApYede GJfK1Ae0O/4u
VZD5F6UbZlJtnRk3pHhvIbNyL9qsSL2KtXQyLQZAmoIZ2QdYS4h56jrIh5jU CYskvGoR+FIN
kyTMtDyttwGQRQKqgOKLCY8KMd13MA+jPtfDxppr93alrwCTjXJ2sx6p3J0w fjfrMaF9iUkd
YOO1K9ZItFCpBxV7BNgcE3w7ZuwfUry9T7FgkOlmkHljYnbTFgoo8g+x0SQ2 wlyppi1PdUPL
w6zvzjneQGl7WV+JsafrE9oOKxppVzx18At0YegzyLQSApjou12pGWKaph41 69O9bOUOMI12
MX4qKbVnt8I1PUI749+ujBpSZppYj7SHWS1sAUraW6J2Vq8hRbu9ykxCjH6I lWatOsi8tItJ
d2GfmI6tgzNzoW3drL/ZPmi82KZIG1D0386inqSs0mmddbCxt7LaBD9dYSHF hp1s3fUpPtIL
OV3R2xVtJ3qYjfYBZquEd0hMh+3K/EPMal2Mpo+tvYQ39jDOxEzmendoxrPo yr9SsUw3k4b6
5nZlbSXiTteMHN2sNOu94c/tSIOfm1+7MsZm1sMQ03THeb4ZRP1QP61Z6tvt MzPcwnxbYj5w
JdPtIPO78Ew8SVidyp5Y72ElaiRW06DiZbPRM9HazSwSQDsZf0Jq2m87a531 tMToHUxbfWyV
7JiZxfTYPSxm0vYA08SAMgZdQwkthhn/tMTTvfcxH+pmcXNatvls7wtD22LY U4ugX/qdz6jm
Rtj5LDp1A0UnW0tdgHUD1sMsFGSlQbSJ+UDC4vNnKP/vjjDMPCZBG5wzyiqI 9E2w79dDqgHP
o/hqqKU7QD3kl7L6OqhZBzn1zYthJ6iD70pW24QMcJuiqYl50+AFfE2aqU+s k4RG+xSdz/ro
P7eLzVpmOiJP23kza90B9EMzY7bPxLaEP8/uR3OjZSJyzMbRxPoNKTFzUFnT W1kvwZmYSFdr
izIaXd3blVi6eWY3SowZ/geamY6dwzPRKaisuOCMTw+w+BFW1vMWxR8vpK/p VUg1FpzTy+wq
/uJ4HcoOSD1wM4uMCak3K5bpUXq+kIVy2KzO11QiIn/RK7448nRso1EswM6i ARi1S9H2oBJD
/t7YVPvroWY2zu74gi2Cyilj7pkrEb0DTKI+ptmQctL5Z2wuKb7YMye2TY9L I0kH03Rozi4y
MOesXDBDPTDHb2f37n+sKSpdN+t/2q96z+tvmNl/G7Pm3HPodHycpewF2sQJ dYhpnPbfOTOf
hFxzvbtbiagJ/SdWVZ/iH7OR93wf+kczmvWP5WzuX7Tc9NmL7jlB5YSWmE3i vNfOrNrzORsM
fE7fsz0PstPqEDv1J/ah7exsNIzmnq7+99af7m9AOf+FlDvPhU5xX7RjQluz J9Z21ucX1/G0
xQKf0/WW/5a0s1r+4gjn7/fnSxRUTrFh2Hume6D3k2qUuAnkwhnej8rh/iVB vgBKhXC/8rNb
Fn06sh41KJTF0LoAWvwKXg63sXLGtRCVwV2AJtr7f2+v+5/vjNNtRZ/T3sx+ 2LSjL7gl0B6U
vi81dQallb09vWGokmp6B/p6BwLhUG+P1NfVPl+qDYQD/xuiItqZtK63a4jW DErLe4BvQUVF
cSFkJfOl6q4uaW1oa2d4UFobHAwObA92VA+EAl3Lers6pvtczGokWrV4Q3Bg kHZdOr+4WMpd
GWof6B3s3RLOmyWZS8FqC1lfTQw/KDUNBDqC3YGBbVLvln8ouTQQ3BoaDAcH gh1SqEcKA+n6
dVJjICx5paaV0uotW+ZLgZ4OKdg1GBzuBLL5Mz3BnHu3DgT6OnfMrQpKtQOB 4VDPVsobAvUW
Smt7N0PXq0Ltnb1dgcEC2vtAqD0UkNYFhno6YCKgqkUlNb094WA3lW1ghzQY AC2CokJbpI7g
YGhrT4GUmHs7UAVC0NjdOxCUOoe6Az0gvtTeGRgItMM0oBBqH4R5BHokaNtB 5x8CtffBBIPt
wcHBXhiOTigA/Q+1d0ohpSs6+aGeoDQcCncyNXT39nZQboqD2GEQpB2UOjhd Fx4O9oRDQaBu
B2RoYMd8iWm6d3twIAD2Dg8EA+FuaKIM7UNg80E6GLVjcICJsGWoqwtQJisM 390Lg4R6OoYG
w2yqg+EdXcG5mqDeOkhHCQ50h3oYxUDvNug2APK3D8FACQN2hAJbe2n7cCfo XOoMdvWBRnql
raHtQUbA3D4gdYE6pO4g6K4n1A7kgb6+IKixpz0IgyTUHaLKkoJXwmS6g107 JJjbIPhOF+2j
O9TF1BtWFtKgMl47cGwOSkOD4FJMm8H+ISrsUDvVv7SlF6YMPcKkwmHqJzD1 gSDYPQyuAWYa
BJUx94Rid2BrYGeoB7oOhtsLEkoD9o7QYF9XYAcdgnL3BIcH+wJ9IBqQdICI 4dAg7ZiS9w30
dvey3uZ3hsN9i4uKhoeH53crDju/vbe7qDPc3VXUHaa/1VPUPbgpQCc+n1b+ kwzDwS6oDTKW
Vaubltcvr6luWr56lbS6Xrp0eU3dqnV1UvXFa+vqVtatajJoDdqmTlDrtNao iqlNQFCYQZhp
9AJLjE2GOjKd8+Yd0o7eIcrZTr0N9MzWUcItwTmYj4J9Yfn1AHlg60AwSD1x vtQCbJ0BcIPe
zXQZAWf4PGGodw5TdwqC4YJU0wPB9jDYeQvocVYuasLerUFGwkw8wwemAe/d PBSGrkHMXlhR
cyaUMzgtFDjyjCpmmKm3SdsDXUOBzeBhgUHwkLnc86X1Pcxnd0zPAuakRC5w 74A02BdsD0HQ
+eLMJdBiD/M2yhvo6AhRnwCvHGBRuYBWDzDdstX9OaG6Qt0hOiEYhNEN9w5s G0w4KfNHVtk7
DAF1aHNXaLCTjgN9JdTdDY4K8oOp+nZICedVNHT+QEwfy7fMTo5Gr/6h4CAb BuJee3CgR5nB
gCI3Ix7s7B3q6oA1tD0UHE6Eqy9Mn9KBJYMQATpmQ9zMHEEsFljbw7M2phML KFJvuXC3TOQZ
BmXdKx3BOIHwYkqwfl01bAK5i/zleVL5gkWFxf7iYlFc3wCVxQsW+P2Ql5eW S+ULyyrKKgza
v7Pq/uFipKUiRTy2DuG6GlQOSfSoM/cxy/ktYTSEDXA0eP88mtnaLej8x9yS UlOvPPSY26LU
cTdyx7gfcc9BPjq3/bz6L18bfPna4MvXBl++NvjytcGXrw2+fG3w5WuDL18b fPna4MvXBl++
NvjytcGXrw2+fG3w//Brg5nnByH0954sJFouBZjw1l5WM3Qe7RdbL2ZRY/A8 qum6evQ+lLeh
c0D/PtSd/9Th/LZpnunzVe8Fe5xt3cCwuTSJmktYaTt73nF++/ktjcruO8Tu fr1sVc6lvlD7
XE31/l0d9vIufim/hK/hF/KLeJm/iG/gK+ZSX7C96YJPdGZr678wn0RNAy3h BUAzt222tkE5
m277nMRz6nES+j3nAS+Z0z5T98/6zT+pm3+6v3/kV8rfy6N4Dvo1usDnh6iJ +xYyYfozUpPc
vWPmlBJ5nLtvzJRcIlebubtQIySCItxKNAmJoF7udrQbEgHyhmjhgpIJioxp jSVmoL8ZSZD2
QOLQAcgxK8uQKP3NY8lW2v21UVMS4/tatNifQMbM9pLG6hTuSoS5INeDPMjF 7QI4D2A7wAyA
m7kOiBRUTnnMZC7ZA+NVAXkVlwphyMVVc1ZUArCWc6I0RjYUNSbGGYrm5pdU a7kazs5ITJwB
4pGL03BCtMQlHeXozzDK3I1joo7Kd2PUnFpyjLueE1AKUO0BKpvLdIzToiJI dCZNY6KhZF+1
nmuCaTaBWlwc/WP9/SyXuZ4odATj1XHpyApt27gMlAqwnpsXTXVNHuXuYGTf pL3AeEujmlIK
xgzGkslqkaP/PUCE+wZo/BtstH1j3kUlqNrL5aJiSASUuhuw3fSPxbkRwEbA TCNgmhEwzQhI
MYLUYPmboOUmoCnidqI+bhjtg7QfcB66TI2CBicYkpVbMsE5ODtownwUdIeh 1jkmGqlk9qgl
mZHZx/TGkqpj3CBaDYmA8OExm72k9yiXz6ZSMGZPowx9UVEPqrMlbAGMVmqD Y1w6N49pIoNp
IFLtgjJGJs6FMPkpOU61Q14nv6L2pT+RzuDPFPiqAv81AeOT5PgYjCKPk19Q eLI6nbwDnW0i
v0X7ASPkKHkRthoXeYuMUynIm2QCVQE8AeUOgBMASwEeibp/4hon42MAQPb7 owYrnSx5Meor
UhBXtoLY0hTEYi2pziYvkOdROnTxa4BZAJ8nkygT4HMA7QAnSRj9BODTpAwt AfiUAn9EnqU+
TZ4hh2HPdJGxqJGKEIkKFDwZVVPwRBQlSo1FrmfJE+Qx5ATSH0S9Tqg9OObN cpmOQn+YPEzC
0QyXpVpLHsTN+CwQHUAnKEQW8t1oOe1kX/RZyTVB9pF9sr1czpYL5Ue44uzi wuJHOClbKpTK
pUekajP5BlKB8mDBkpshh/2ZgPdAkiHtIzdF+fJI9RTMic6LoD2QH2BYG+R9 DEOQm2dazzCs
ilyPVkMi0McuSLsh7YF0NeIh3wnpa5C+DukqVhOGNARpGMJHH3D0AUcfcPQx jj7g6AOOPuDo
Yxx9bPQhSJSjDTjagKMNONoYRxtwtAFHG3C0MQ4qbxtwtDGORuBoBI5G4Ghk HI3A0QgcjcDR
yDgagaMROBoZhwwcMnDIwCEzDhk4ZOCQgUNmHDJwyMAhM45i4CgGjmLgKGYc xcBRDBzFwFHM
OIqBoxg4ihmHBBwScEjAITEOCTgk4JCAQ2IcEnBIwCExDjNwmIHDDBxmxmEG DjNwmIHDzDjM
zD5DkCjHSeA4CRwngeMk4zgJHCeB4yRwnGQcJ4HjJHCcJMOj3PHqHwPLcWA5 DizHGctxYDkO
LMeB5ThjOQ4sx4HluDL1MFMGAbfZBWk3pD2QKO8k8E4C7yTwTjLeSeZeQ5Ao bwQ4IsARAY4I
44gARwQ4IsARYRwR4IgAR4RxHACOA8BxADgOMI4DwHEAOA4AxwHGcYA57hAk yvHfd8r/tmnI
1bhZA5sr2YPzGNyNPmRwFzrB4FVolMGvo0cY/Bq6hsGdqJzBYeRlEPpjMIxc Ghx1lZuqrRAC
VkPaBKkX0n5IT0J6DpLAsNcg/Q5SnJTJmbxJWC3sF54UnhNUTwonBWJSr1bv Vz+pfk6telJ9
Uk2k6jRiYHEUQgu6jeW7If8IEmwikFcxrIr4YVw/xNky+PqJX046LX2Uj1/L x8/l4yfz8W35
uFokF2OeRTo46RMQHDfLeu9S1wlI5d6cpRCZvnH4Q5sr6l3oGsfPJkCe7AP4 IaRRSI9AugZS
OaQSSIWQsiG5WF0+0DfLmUqXz0LKgeSGJNEhkNUKpxtLkkaeIAb8yNiPDYj+ qHA0Jxf4jkZz
igGMR3NWA3gmmrPZVS3iwyiHHoPw02C5xwA+GXWdguYfJMDjUddRAAejLj+A 1mjOfACXR3Ne
dVUb8Hrk4ilrkwLXwbwpXBt1bQCyNVFXHgBfNMdLqfNhoGxozcPN6BTAbIUr KzGSJ+paAiAz
6qqg1BqUQw2P1aiQiaeCRCE3BgJ9NIGbeSzrXKddd7g+BPY/gWLBPd6UxnkA r2XTXwLRup4t
/A4QV7ui1VpKD/vDqAIjFD7teiT7Jtf90BfOPuy6zzXf9Y3CcQ1U3wpy38SG iLqukcbJY3Ky
a4+r2BUuPOUadK1wBVxrXa3ZUB91fcX1LBUTteBm8thhVyN0uBxmkR11XZw9 zkSsd+1wya4c
V4X0LNUvWpTot7zwWaoBVJIYvQD0m589Tn18ffk4TpLzhTPCPuFyYZmwRPAI mcI8IUNI0Vg0
Zo1Ro9doNRqNWsNriAZpUujvAfnof16ZojZToOZpzjPcTGhOEv99LMEaglag SDLXQBrWLcMN
kcl21LBZipxb5xnH2jUbIyrPMhyxNKCGpmWRRb6GcSG+NlLua4gIjZc3j2L8 jRaojZAbxzFq
ah7HcVp1fRr9Yf9RjK6/NW0CYey4/taWFmS3bq+yV1mWJlXU114ga1PyOT9n Z5+LZkTubljX
HDmU0RIpoUg8o6UhcjX92f8JYiKGutoJYqSgpXmC7yOmurW0nu+rbQGyU4wM vNkIZCiHAiDT
LEMSJYN4soySgY0SdF5gBzo3BUCnNSAvo/NqDYyOx5Ru9IRUVzsqSYwmG6ET jOZENppDAx4D
vLWjXi+j8ki4mVLhZo/EBMtjHblcQFLoYiRwc3OxjlyYDRYpmiXJVkjKZkjK 2FgcnqVxJWhS
cqdpUnKBxvd/+Aku8+GxBUO7XqT/J4U2T10QUlvk5u2d9siezZI0umtI+V8s eNs2t3dSGAhG
hjzB2sguT600uuDFCzS/SJsXeGpH0Yt1Tc2jL8rB2ugCeUGdJ1DbMlZV2Vx9 3lg3zYzVXHmB
zippZ810rKrqCzRX0+YqOlY1HauajlUlV7Gx6kLU7xubRzVoGf0NPgbHiE4L PtyW5m5ZZjX3
LaUOPbHEbd+VdoRH+CDS+Voies+yiAESbSqsLqymTbDOaJOR/u8ylCb7riXu tCP4oNJkhuok
zzI0rVpEiehv3jZE3Os2NlNXiciBC9tskH5Ysx3VhWrhH5TDLMF3LiUavOAn fKHP0NDQIM2G
fHBLbojkr2uILKS/wCsIMFRbbQvUzZ+u4zhWNyqKdePxSWj0gRA4TIejmA/T 38SRtXDrEsgB
9QGB0KtCeMyZUdJ7DHbw3ZDgHkeGo0XsvkyGxzKz6f0lPFZUloBwP6Uw6nSX 0J9TKQdWCrMT
UE4qBGRf9r7CfeUHsg8UHihX0x8WegQqXY/QrTRa9AiHwr7BaUUAGm5BiZ/q gfEejKZnsIEP
UMTna/ENst9TRJ9XtU/5zUZQ+oxiB5VeB1n34WmDJOoHUYI40egbmmYaUlhY 4xBjYQP+L8Lm
9xgKZW5kc3RyZWFtCmVuZG9iagoKOSAwIG9iagoxNTI2OAplbmRvYmoKCjEw IDAgb2JqCjw8
L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvQ0FBQUFBK0FyaWFsLUJv bGRNVAovRmxh
Z3MgNAovRm9udEJCb3hbLTYyNyAtMzc2IDIwMDAgMTAxMV0vSXRhbGljQW5n bGUgMAovQXNj
ZW50IDkwNQovRGVzY2VudCAyMTEKL0NhcEhlaWdodCAxMDEwCi9TdGVtViA4 MAovRm9udEZp
bGUyIDggMCBSPj4KZW5kb2JqCgoxMSAwIG9iago8PC9MZW5ndGggMzQxL0Zp bHRlci9GbGF0
ZURlY29kZT4+CnN0cmVhbQp4nF2STW6DMBBG95zCy3QRgR1CEgkhpRAkFv1R aQ9A7CFFKgYZ
suD29czQVuoC9Gx/Yz95HOZVUdluDl/doGuYRdtZ42Aa7k6DuMKts4FUwnR6 Xkf0130zBqGv
rZdphr6y7ZCmQfjm16bZLWJzNsMVHoLwxRlwnb2JzUde+3F9H8cv6MHOIgqy TBho/T5Pzfjc
9BBS1bYyfrmbl60v+Qu8LyMIRWPJKnowMI2NBtfYGwRpFGUiLcssAGv+ramE S66t/mycj0of
jaJYZp4VcaKQd8SHHXLMHCPvmSmTcJ5qD8yUPxKrCPlEvKf5M9eekB85f0HO ef6IXHB+j3xh
twK5ZM49y4h4hw6S/RPMy9UfPSX7x3iuZP+kRGZ/Rfus/ugj2V+hj2T/+IDM /nGCzP6qoItd
bxCvGN/AT+uEvjvn20YPhfqFneos/L6lcRixir5v1H6n/QplbmRzdHJlYW0K ZW5kb2JqCgox
MiAwIG9iago8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9CYXNlRm9u dC9DQUFBQUEr
QXJpYWwtQm9sZE1UCi9GaXJzdENoYXIgMAovTGFzdENoYXIgMjYKL1dpZHRo c1s3NTAgNzIy
IDYxMCA1NTYgMzMzIDM4OSA1NTYgNTU2IDI3NyA2NjYgNTU2IDYxMCA1NTYg NzIyIDgzMyA2
MTAKNTU2IDU1NiA2MTAgNzIyIDYxMCAyNzcgMjc3IDI3NyA3NzcgNjEwIDMz MyBdCi9Gb250
RGVzY3JpcHRvciAxMCAwIFIKL1RvVW5pY29kZSAxMSAwIFIKPj4KZW5kb2Jq CgoxMyAwIG9i
ago8PC9MZW5ndGggMTQgMCBSL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGgx IDI5NjA0Pj4K
c3RyZWFtCnic7b15fFPH1TA8M/fqXu26kmVJlmTrGlmysQwG22AMDhZgQ4jD bohNcLCwBRZ4
l82SZjFNCIRsNG3SLE9DtiZka4RxqCH0gSY0zUahzdbQJpCGNElbAm0Tstp6 z8y9sk2S9un7
ft8f7+/3Rtczc2bmzHbOmXPOzJXt7q6eKDKiXsShcGNrpOOGzrWrEEIvI4Rt jeu75dv+OP44
wCcREias7ljTaly1cTFCWgnybWtaNq0O7v6CQ8jci1DBV83RSNP8jlIzQtOu gD4mN0NBy9D3
Rcj3Qz6nubV74wHj9R2Q/z3k17e0N0ayn3AnECpfCPnprZGNHWv1P+YhvwPy clukNXrhL/Zv
hDzghH7b0R7vvh3lJxFqvpbWd3RFO/bv/fQhyD+IkB7KEYaHfowACjRPOF4j iFqd3mA0mS2S
1ZZmT3c4XRlujzcT/T/w0exHGRDcmodRBh9ELoSS70P4gKZDseQHtJ6m5C+A PKAGhHahJ3AM
PYEOomfwWWj1JNqH+tHzyIkq0X+hK9CP0FYkoOVQcj1aDI8Gyn+EM5L9qBDd B7J0HzoCuJeg
q9B+5MCu5IfoarSFewVabUEmNAbNQAtRO7oJX5zsQSvQCf4aVIouRm2oA/cm a5M3J29NPoh+
ivZxzycHkQG5USM8R5IfaX6f/CMaBy1uQ3eiE/hW3VMoDKP0AuZPUBe6i6vn cXJN8guYQTba
AHPg0Tx0BB8iIeg9it7HLnwFNwt6eSCZSB4GLC+qR83oLrQfT8JzSLZmRXJe 8ghywBgbodc7
UR/aC88A+gU6jo2as8kHk2dRBipAc2E9/eg3+BA3NLh5qIISGqg0FpVBTTv6 b/RrdAz78S9J
u8aoKdKENZcnX0V2NBEthdk+DC3/jD8lV8FzNfccPzs5E5mBLj+g1Ea/Qu9g Ny7EC/AyMpa0
k3u4LqSFESfC04RiQO87oPe3cQjvJUZylHuAf4z/UsgcOpk0A0eC6G70E/RL bIKVyjiOv49f
x++SWWQluZv8ifsR/wj/OzECq74MtaKb0GPoU2zDU/AifCluxlfgrfgH+E58 BB/DH5AZpIas
I2e4Zq6T+wU/E54lfJy/RnOd5gbhg6HaocNDvx36NFmUvA4tAnnYDLO/Dd0D K9uHjqI34TmB
/oQ12IDN8Mg4Gy/F34PnKnwTvh/vwo/gfhjlGP4T/hD/A3+CvyQIHoF4SDYZ A4+fdJEN5Efk
v8hReI6Rv5HPOSc3hgtxk7hyro5rh1lt5XbA8xT3Du/mj/JJoHOR5nbNTs0u zWOaZzRnBaP4
fS3SvvzVA4P5g28PoaFtQ7cP9Q31J99B6cBDN1DBh8ph9hF41gK/bweJexK9 go1AOzfOx9Px
xUCZlXgt7sQbgZLX4rvwT9ncf4YPAJXewGdgzibiZXMeTyaRmWQBPJeRKOkk O8itpJ+8Tr7g
RM7AWbh0Lp+bw9VzUa6b28TdziW4l7m3uD9x57iv4Enyet7Hj+GDfIifw6/k e/h7+Pf59zUr
NC9p3hP0QqtwnTAg/F2cLE4XF4qLxHrxFnGv+Kq2AaTzWfQU+vnoPY9Pcpu5 Ku4pdDMp5jPI
b8hvQJ5XoiZuHgFJJbvwNnIl7ic5mo3CNDINz0dn+SDQ+jmyk5wj07h5uBov QWvJRKU3wc4/
Ckk5/yw6zR+Atf0Get4oGPFV5IxgRH0YkTIY81fcBD7EvYSOcyewyN+H/sDr sROfJg9zC0EK
fsFP19SibO6/0M+4TnwleopUgcb+UnsjyPF8/CjohRpchD/jkogj80GKSrl3 0TVoHfk9Og37
eBv6MW7i16CbUTG+Ar2PHoJdMVbTJuQL6fgFEuO3kzTcjwj/CKyuDOdgTmNH 1+J67i7hDHkT
9aCjvB69zT0Osz9KfsbN489qFuNm2AFXoutQZ3Iz2qSp5X+H1yAOL0MB/iRo tyu4Ij4b0qtB
q6wAnbYXdvd+0AMzuHlQ4gLJuRjkYiloiLvguQP0BA8SFIM9fglosd+gfqGG DKA1GjMGrYMQ
/9LQYrQ8+RC6M7kGtSVvReNAH2xNXgE97kLvoVvQLrxl6HuoA2XBznkbX6yZ TY5qZifHke3k
TbKE3H4+f4HaAexCf4HnZ5CZrnkabeffQEtQRfLG5Gsg3XmgYe9Eq9BF6BSs 8iMY4ULuECoe
mk92J2dzHbDeE2hR8uGkD+tRc7IFLUAH0E9FDYqIofCspTUzwhXTLyifNrVs SumkkuKiiRMK
x48rCOWPzcsNBnL8Y7JlX1am1+POcDkd6fY0m1WymE1Gg16nFQUNzxGMCqr8 sxvkRLAhwQf9
F144jub9ESiIjCpoSMhQNPt8nITcwNDk8zHDgLn6a5hhBTM8jIkluRyVjyuQ q/xy4kilXx7A
yxfVAnxTpb9OTpxm8DwG72CwCeDsbGggV7maK+UEbpCrErPXN2+vaqiE7nYb 9LP8s6L6cQVo
t94AoAGghNPfsRs7p2MGEGfV1N0EaU0wqYTbX1mVyPBX0hkkuEBVpCmxcFFt VaUnO7tuXEEC
z2r0r0og/8yEJcRQ0Cw2TEKYlRDZMHKMrgbdIO8uOLT9xgEJrWoIGZv8TZEV tQkuUkfHsIZg
3MqE8/JTrpEsdG6bVbt1dK2H217lisk0u337Vjlx76La0bXZNK6rgz6gLQnM btg+G4a+EYhY
vUSG0ciWutoE3gJDynQldFXK+qL+KlrSsFZO6Pwz/c3b1zYAa9zbE2jxpuw+ tzu8L3kSuavk
7TW1/uxEhcdfF6n07raj7Ys37ckIyxnn14wr2C1ZFcLuNltUwGgaDUSH6xjE 0ClUvXiYspjO
yD8XBCIhN8owk1o/rGkKjaJT0PbGKYAGnzoMrRJNwJFYQjerYbs0lZbT9glN QPLL2z9BIAH+
0387vySilggB6RNEQSonw6IG9Sk4EQol8vOpiIizgKcwx+ksP2lcwfoB4vd3 SDIkQD60EGgb
qZtaCOTPzqYMvmEgjFZBJtG7qFbJy2iVpw+FC0N1CdJAaw6latKX0preVM1w 8wY/SHI/c3/T
E9rg8I9FcqRVNU9NYMe/qY4q9dVL/NWLltfKVdsbVNpW15yXU+qnDNepUCJt Vi3nISpEPByr
BaFcMYxMM7XGBB+AH4EJddOAqAWpZCVYnp2QGi5U4jp9dvZ/2GggeZa2YslI M3Waiamh8/PT
zsufNz3jdg4mDGawumb59u368+pA1JQB56oJSDyqqc2WZyXQUtiZAfgZSB6a QkOdJxEGks2i
CCB/SpGaPQ/Ro8J18KHSOa5gNii67dtn++XZ2xu2RwaSvav8suTfvo88Q57Z 3lHVkBKcgeT+
GzyJ2TfWAa2a8VTYFATN3O3H2xbtDuNtS5bX7oPDmbytpraPYDKrYWbd7hyo q90nIxRmpYSW
0kKakWkGVWNYZB/RMnzPvjBCvayWZwUs3ziAESvTpsowahwgSpmUKiNQxitl YVZGP1THzKqp
HS09bEvWjQNpJJg5zxoE3jicFLOt2dYARBgM6lcyd+irsAZ9iWT+EGCCb4nw dXCKoZhTwjKv
QYKoI0I5z5VjgdeT8kJUgYgMM7tPe98drpD0cX3naVRRcVo6ja22sjL4mTgh bVJxOgdh35Ej
R7i6I0e+evjIEej7HrDSg3AaMoF17wsXRK3r7KRaqrZfKl1q5w3GLIvZjJyu LKAp0tqCWr3J
RJZqJYNBWKodSH4c9hiNALllN4Yft8skYzoNWZLIUjSQPNdvsagAbQfAF2GD 0QiQkfZA8/20
AwDOhqFrgOozpq2AFZwLKZ/68sHy+VJnPc3Po2uCvK2sEOKJE3A9qi+2Zhc5 s0i6nWRnWwGe
PKkkmBv0Z99Dxt46r+XWuo+GXhjahr934J76iydeO3S9Zr/ZFt3b+vTQ4ODj HL7x6hXXpJso
hS9KfsB7+engQZSSceECnUmXn2Fy54815eeXmSanl3qm5s/NrzfV5681xfIb Jmw3XTf2Lsfd
7kdM6XkDyQ/66WJyAQhnUOihjEfz9mY8nXc442je79LfytNWOnAWJZaVrtVm o7HGSONJA8mT
4aUU8jl9rlBBfkkZX1Ywl7+wYJm2LrRaGwutN241vmD83PR5yFpaYsa8VJhT 4izKtrtWjm0f
S8Z6C80V5lvMO81Js2an+UnzGTNnNlKamweSf+mnXDDTgdMlSVhqNlICmwWL BWKzl3MOkEf3
um6ze70iokhuxomqXH2RlzOMjUgRJDCmBbJzBpJ/Y51RIGygpTk8ZSPkT8Hi GfAxowIAfwwb
6HA5bCDIf8VYnDNALg2bc8MoKAXl4ITgk0FNGSiCfrOZLA0OJF/fy4CJtCxs yvKXTCg7VEbu
LcNlTjq3GbRHZ8A1pjDnoHBUID6hQiCCma5UMNL5CC46H8FIJyMw4RLMdLmC RAcXJk4ZkajO
0x+fDkn1nSEoqT/9sVocKh8MvfceqjhdcSpUcXrwFOybwhR+J2ToPoLN5ISd hOppOe6EBHUG
BME/JjipZPLkUvZMKgHxGyOIudNJcZHDAa5iut3h9Ac5QTSDmDqKiygSV960 b+2TB+bEL5y0
7vgaXFy17epNmQlX27Hrtz26UNI5xxzwOlcdbl9R1Bprvj+Yec3S2Y9tmb95 vt1scucE9G3j
LqjrdHXeUB2OXDR+49kvt1wwBb+V55Xy5hVe2HDpggs2wBZcmPyAOw0S7cbL dxOqhsIl5qst
2GLAYbQQPG4O8TavQXR5eTirpotaSn6RkVI0UlKKEiWlyGhw5NXnKGFOS4fr i2iYOMETnqMz
Yp93Vtos55K0Jc6GtAbn3eRu7i7Tg9KDbqPWlKFfS2LcWk2PscPUa3rI+JRu r/4po9FhvM74
LuHMY1Za2i1XWzgLBiEMb5qA6KQaYFo70L3oJDqLdMhiMaCROXph6jlmLZPg MR5YX44h5MMY
YYzDlNs4TCUEX0i5jd0UDc/1puccFbFPrBCJaKZIop4iiWwDihM9JYdVRQMs VsSjvktV1vsQ
pkbqdNfHodNdbO0gDtayQqn+FPxQEejE9Z112Em5j6wltsnAbKcYpKxXmMyV 784887PjQ592
fXj9E3/0PZlx9fJtjz547dqb8Rbnz4/iTKx/HJPNT97nWdfy7CuvP/N9eoe3 DYzBZ6CLDSQS
9ghsu4rCMmG5jrOY/qk5J3A6I92FAt1slEf6FKBLARxVQhJtuJTboCc2QU7L LgFFfXaPLbcE
sM72Q2rTsIJsVhC+FkoEntfwQqluDq8JCOP0tfoNXI/+OPeuID4kYL8QFAPa MmGKrsK0wFTH
1wm1Yp3uSn6T5k7dc8Lv+NeFU8KH4qfC59p0m16v4TieCGCfdFrI6LTagCjY RVHgeD6g0ds1
Gr1eBxkt2BN2Q6k1GJCeH8CWsE7DM804Rktz2TLjG9u+onuHCZsMAUQCGO9A uAJObgR01lB4
IhVbJDE9JTHDoqdii2zMvDBGIyY0KMNoeid7zmpXKDT/42FNUD5PAhsJ9uVc qH4eqAIwMOUS
PBXwWJ1lWzXjQ/yV0mFIXSEzAKKkLdeWcyzeLbBdZarWYZ/uWo7oXCZrCYJO 68Aygf8W1usK
Mst02szMcmDY232ZZZC82iezZHd2GZtCXT3qrMedKBSCFvuQkDzUl10GTDzU 56DJ231SmaAk
LGdkyW6D0jhUh0OsYdj2Fo+1dgeMZreXswhanetz0cZ/2+1R0HF9naK5AOoM FVuLrbgYYz8W
rdv68aMfDq3FB98euu9qzf6vDuDE0PrBJuK7fOhSah1nDi3i/gK6JAvl4/Zw g8GgsRcYAvaL
DVV2QZeZkVlgCNoL/GWGyfaLDLPty8RaQ7PhC/0n6ebx/oLc6f7puRfn7ii4 t0CcnD15bEXB
bMPs7KqxNdk1Y2NiY3bj2IaC3oLjuR9kf+Q/k2t1OoT0AbK7P8+bJjLdIMlo AtMMvegQOgYO
0AC5Mlyk8Xot+qoxXqPekV4cKNYHXK5jTiw5w84GZ6+TLwAvgywtCFO5cNro nmFWxErthVOg
MuN0sDqwkqA+QFYolkDzHzFrBcBX4Yuo4Di7LTiAxvhyDlqOWk5YkhbeZ6mw LADVJVNJs7ip
1FnG0N4sXtqThe1bC7OmloxQQXd2ycJRUlffCYJ2WhoMDX9ADKXBU+fKQc2c AstTf4qmzL3p
BDXjdIINYUYjF1QNmcRUjXNSsdXODE8aUzbg9IDiWf2koWhW95XbXGa8PvGH s22/venA5Q9F
/3Dvf//lzoeuvGLXE5dv3FXrXhQoalpemrgBl791B8Y33tH71drPjm58jMv/ 7aGDLz/73LOU
39XgDWUBv9NRJl4SdvqQNx1US72mXrfUEOXWadp1UYM2ndp+ulQrAOHFFMr0 0jjX9qbmC/s5
Nz/RNjVjoneGbZ57hneRbUXGYm/E1uqOeDcKG9PPkXMuCTmwxeR0LnQ0ODoc nMNr2SHdKxFJ
4j1evYj2k0epFmaOB6ZugURZJIHGvy0NLIIzbAJfg/mVJso2OrSJej2U8CaK r8vNL0mA4nD7
ILcnECyhaXgGdS582OcolnLEcE5+CTUQC0ROZPwUmR8hepkhVIyGl6kgB9PG GVklpa7QfCnF
zNC8wVOgPkKhc50h1UMFDoZCp5jBAOe1s1z1wBV3lfkNXSmzIaHiImS1i9kO ykScHWSuA3fZ
/oKP9n04dAbb//gaNuOvPtD3bWm8cfA4WWScsuz6Kx7By5wP9GMf5rAR5w29 PfS5JD+5vxnf
dt2s5ofAiqxOvq9Zr3kFZaJXnmokazMJTrmoiFqHlRSSUZGpETZVd2YvujZz B7pL8xj3U9M+
rt/0a9MxdCrzn5lWsy3TmpnJ5Qt51nyv7JtjWma/JH1ZRrNmXeb3bDfY7uLu NN/l3YUfJLus
r5nTkB25Jbvk5gnVU3lljGHj8sokC8K8Jy3LyHmyeJ0UtFyEgjKw0O1zBmUt 1jJXTZuR1bhC
ISuo4fnSOaqMTzOza6UOF6i5eroZgHiUdrx/TA7dCDnFRbxqc8GzslEa8v3P XDD07Hunh964
+0k865k/4oJpB4uf+eEj765o/fN1D/yJkIlnvvwlbvvde3jp7pMvjbv31vuH zvzg6aEPtx+g
cl8Jcp8Lcm9CGXjd3nQXZXkaJR7b0ZR4cQplsAqbqM8wzhEu1C4T6rRrhJhW WyJNtU11THJV
SdW2akeVa4VmhW6xVG+rdyx2tWpadU1Sq63V0eTagNN1gsZ0KVejqdFfamzh opqovsWod3p5
0Qo6xJ7jYZrLE2YSSXUU01yii0mlpJaeZTxlAJNNClCXmwFMZikP0nICJRNE jERJlEHIJ57w
YA8tn0u3AcDmHGQ000OajRlR5vshLzOiTPwRc6ORke495GAGNQxd+uiJE010 0+0A/BpWZqdh
M9Sfqx8pCCl8BCZ2gq2jxkq3RLNEt0qzSsdTi0RR0qRSUGoonak0NFqlVT54 /a/+gB3f++sN
J4ZO7+vbel3fni1b+0gazr15/dA7g0f++n2chU0vv/Tyb3/10osg+1sREoLA QT/+9T5kAqeI
Tp4eVBkA/s7vw/MMppIAf4o/pXvH+Z6seU1zTiZOrezXuTyyjuP8WV4hnSpy EQt+d4akPxbA
OwL3BkjA6XSbAzus2MpTjWR1UZZY2YGIGhSrnVLOSoXESalnJZR6VkY3KzsK WVOnXQA+UzUn
rg8bXYEdwAfWnWe4Ow/rDvIfha20Ow9Pu/MwB9ZDPR8D7cBjpB17UmcsD+3P gUixP4CPIUx9
aUIZtQC8fdom8xveEjsvIYeqHL7qZ1ymptJOO0Z6xm9FAjJyAgN4457sOaOt GTNfXeWgBaVR
JSOHKsgMzq+KVv65E7zo8vJyOL8zlwu2NdWLVC3O2hQ2G+1pQbvR6sE2U7oH oxBs+M2qugQ/
JX0y865plG71W0sUL5tBAAC09b6ih9au/7HvqhfveXSPf8X0jh/11zZdvHkq H7xt/spVtfuf
3DuYS37SsnLqbQ8O/pj0bdy48K4fDL5Jd/zWoRifDfJiQ1l4VfhmozROukCq lvgKOSETnzzW
6M8sSi/KnJnZIe+QtVOdUz0XOS/y1GkvNa5wrvCs1a4zxqRW5zrPIfkV+1uu t9yvZJ2yn8o6
KSdlh58PSaH0SfxUaTZ/kbRces/w18whyWA1g6HzUulyeM0GZM7IOabHkj6s b9D36nmZbXmZ
bX/w7v8cNlCx0LvU/Bcpt/8jtveZ/08Zpadi56fM0nfjtGJSbAsgdAh8ZXwv TuCzmPfhCrwA
DAZ1a5gUYCYFmEkBZhoFM1WM6V0NO0pRVAftHLOrCmANPVRl+OaUuvCIBUwJ gDT48akRp0a9
foIfK+Mxqgdnpgt1pqWY6Ui3E+q+5Fq5Ubt964NTb23edmxtz4nvLb9lvPWh 9Rsfe7g7vnso
pvnF9kWLbkze8cDQlzdcPHXwS+7BI4dfeu2lF99Ayp7n/gw8dOArw2kaTkgj u6QB6V3u/bSz
3Lk0gaeHnHLY9JskfId0zHXSlXTxstZutjtsXg3lg0lvMhvNOa4w3dcuxgFD HoUNdkoqA92U
VkouA7v0MIxhGHSXMNfRYKf0gvznyqY06CnVIH8uzA4ghnDx5JKkAcOPYb6L 6l53yeSShOus
i3S47nUlXIdcvIsjxemOAGZXZVarclXWr96ifRF2so3Ljzrg8Kn7M2oaACJs p/Jsp9IhbDDm
WXrtLYPTfBLxaL4T1HTnyL4sHyz/uJzdgowupfoazj+wVxnvsLpBHYJVp9fq RT0nSEGrYPZg
i96mbtT8zdRRBZaznareeYzaplvv73mr4b6Fkr4/f92F8Yf54I+frOqYV3Tl YJxc19Y649aX
Bw9QLuYk/0HyNXciJ/r9PqQHf80fpOdT8NcA6M2Ak77RpMcccki6kEUPm4cz WKQxaAw22QJG
nBS1VbqqBrFD7BV3iDwCW3evmBAPicdEQaTbhZJSVLYLA/7BLp5ERROrAPP8 FLorVpTuPnoE
V42p4geI+8la5MKTd68edU1JRR42wGmgqnTqY+rK04tKKvzW4mLpBer8hUIB JxX54CSrH9z3
UqCW32qnnh+R3BeXr2opuPbaPU89lRbKy7pvpzQ9ej9pvBGLLUM33Tj4w3kF bqqtuvB9/FRe
YPfAc8K5GgHzog4FOBzgiBjgeSEwgeCd5Cgh5KAGuXU4Q3vJcupXnZL+jArn nYZtWQ7at5zd
C5eVWem1MM6elG2FwE/9agr3PA3cZbsG795FebIFBn0OdpYVvRCeVpiGJR77 +RJ+Fr+EX813
84LOqtVpdaY0q86EOC02MLWG9Lq8HeDZjZHTcBoZY2VCDc771wWSUlwV8M/C 1lECLjABP88a
MT2EhFHH+fm2OYdH0x+EuByMUP3HXadA81DZpctjvjeSXthqvvIw1UJduD5l T8BxpNd0IKBb
7p8eq7j0sukzZ067zJ7FB+/rvHDqw7lzKhq6Bl+lVFiRfJ//K/jTE0h6OLeR a+TjXDfPB3In
cWXeWdxc8eLMKl9lzuzcJVyduCLzkrzr08x+KmDqhakCBFJAMAXkpgA/ux5X kBUgkAKCKSCX
apPZFMozBXNIDpcbmGwp8VcGqgqXy8v8SwMthrWmdebV9qhrk+Fy0+WWK6We nHjgOm674XrT
dstN0pacawK3mm633J6epV5cjMsO2jxBty44FgcRGuu28UUTgygKYmYat8lz vYd4Ag7TuKzc
AA5oHBrKBWYHNFnjdFlZDo55dSGgb71yOUqTenZBWnhaeTzhcYEcs8mgyfZm Znm0osBzRMCB
nDFQJmiyPOPcYcrvW9zYfdqBxrETg42WSFjGC3ED7gD7JeABnAinjaND0qFh xhfpgmgsHkuP
elRqxtKpmWi7se4iWBMO2uh1Na2ypV482KiMWSiOrYa+n8iY2HgpO2/UzzvF nFZ66AiFRo4d
EhziTtHoY7oi8FbY9S+Adezub0Rbgu5LK80iYMKUNw85uUF2Gcz0YOo+0Ong ndTkUfc2J7ji
56aVz1/Z/uiShSumDbUsiq256h8/euDz6zT7LU88krivbAp+s7b38uu+/Mmv h/55J35Darvp
kpnxyqo1fmckVPpAtP2XTbGXN5tvuHnzpQuKi9flTXtqfc/RePeHVFKvSX7A naTfdsML9iE3
PQGnO0uInOYosVBtVmyzl4TScI42zWHEaQ4DbFUrqFFU7Ai4nNRIuZkFdDLb 57Sxa5LhC38n
25zOYavntKsXJp8pVs/JXFEnlVMTlZOkEx9yYud8N2VrOjV47rNu0uG+151w J9282xjQDasF
HUY6WXdMd1LH61JqQTesFnRsZJ2ejqqj/TNtoGMWT0eYXz8/g3qlo674gaXf MG2gHyhvK8oV
vcAMm5uXzCaLiQiiVtBqtGDeeKMHmbRWD6LGLT9/M7gu0DZ7ElPduaC8i63A TwdjOMBcxRWv
XfbAAsnQb7C2LVp087T+/+q/sHXBpDi5dXDPTRPnLFpyyzZS9uVxyh1gUalm P2jvd/dqJlMl
p6H3EqVTSlhaMklJJ0xU0jEBloYDwEOLxqfZqTmh4RdAdFbD+TQdml5NUsOD PtUTTlGxtCem
atOLJ5XsRPgQOgub+dv07RfqSWC0Q2FnDoVWVblD/aonkUy9n/sqrBwG5vPn kZq5f8ybALXL
7qy6lGJ6v3hNv2b/F7OpZN6PEE+/c2lAt4XTYfNrtaKIOJ6+VtTrsgxIy86q mZKtRKzhLpL1
sono3SZe9z++TmRG+1vfIxqnXTr6pgbOKOXsZuHjUyFEjXPqTaJEXyUWW7PT s9VwP5/z1T1c
6KvXuGs1+58Yqnh8yPQEtb7bYCHljH8iOhK+TMdYuEC3Q3evLqE7pDuhO6sT kc6n69D16naq
RSd1SZ3eB/KNRZ5wOoG7CiNBI/B6QQxoEL+Tv5dP8If4k7xwiD/LE8TL/DHI 8XyKW/yw+8cz
bvGMWzzjFq+842OAwjB+mE/8fO35fKJeOmNSeYXyUtjK3grj+q7OEHs1DPza 1t/fz//16NEv
0/kgiCyseTZolBOwZivKxEvDD+oJbwqYSkyVJs0k+yTvJaRGv9i+xLuGNGmi ukZ7g/eQ71XN
a2lvZbyX9p79jPOvGe9lnvQlfQ6fL+Qud5S7q90dvh0+cTzJMY13TCWTTNWk yjTbPtd7iX6Z
aY3pPeF9xxf4Y7OE0zmzQbIgj9cgWpE+HbSUqxijgNUSkKRjVixZw9YGa6+V 9zFv3cfOS1Z2
0Wsdvui1soteKzs7Qek/FL1lNbMTeeqil57FwzPZYbzblnNQPCqeEJMin7oT zBp1J5ilvBxj
ly7Kuxl2x0vvBBeOlrTOeae/drsL5qSc6Z5yGqxlVvVMRG9EVM0ySX2FRG/l R52IuCnRw1e/
1rP21Wsabi/cMyg/3rP+p7u+t/G+6+658csHdmJu+6IZxPzFbGJ7+cVfPnf8 5cN0rwkIaX4O
VsDGZypv/vYhG6UJm77ySldQz5Ov9htNTMY+CBsoZJWNSsWhfrMifIfChRSy hlleb+UwMoLX
hAWLHulNRoFSxmjFhNfzVr16A6K41NbCUOjIEen1I9KroSPUJ6uoUF+fqpYT ggd0uR3n82P1
5CLrpdabrZxVppSFGZxMCfTJ1CXz2bDOl10ieTOVN1nhn/tySnjBqEsTPLoM m4ZHvGDQGcxa
m4TSOLvo1XoMmeYcFBDztSFzCZokTtVOM1dyc4SwOE9bbZhlmWO9yHapZbFt ndikXWPbJFwu
dmv3Cfste22fCF/q8gzWPJRnyjXnWXJthfYpqNS2QXud9g7ux8aH8S6yy/CQ 8Sm0V9hvfp5/
XXhT9wH/geV928fCFzqvQaAzNrJYEpSX7uwGkcU21f/y6M0W3oasWlEbEC0B Mz2ym0XOhI0B
00Dy9XApFTQTCeB8di43YXuaoDdYg/qQtYZfrF9hbbFeYd1u1Vv1PIcwZYfC mBFS17N9Xhj6
uFBxY+AYAI/irsGPJ2znNBowfaJGp9drDUajXrJawVOo3qNBNnkgOTe8Wm8x y89aRa0sWm22
kEa0azSiGfgcMJntJpNZCxstpNfaoTnSEJgrsmNMv9si2nitxWo0m9j0bOAR UI1PCBZsFvqN
Er39nGTCDSb6cpgzDeCHw3p5gR6366/WE/0AWRrWLbDiduvVVmKlOYOkwQ3M 5nEaQH4Kn0s7
t5rtuYx5H9fXuwbrO+HHnTEI8J+H3+FJ6mNTLpvo12CsLN46b3xo65WHt453 fTMBqdxqlg6L
ZqmcBgrTUJ3wLantN8lGmRxInkQYgjl5rB9NsMjgXJ7EU9RPXXWiZAnsOG3y 2G5xAmYF2Uuq
E8XspbI2eXK3KCulNijNYqXQ0V6LTPvWDiSP9YkTaI99aArZr4w03PlwOydr Z02e3KOXeRnR
CvWtI+3t1b22MlQAgb5oTKMv/+pGLHWIbr/Oelxfl42L05yTS9Mghgj7uVwO Vw89vf+RCr74
kX07J12w98mh/qcfGfsGHxy8+5T1RdI2eMdLR8jqL4+TK5766igiyUHQNHVg HURkxmv2YrMF
dAShxxoVUG45CdXIdcxbM4589aVQmiCt0TbrGqRt3A7pBc1zwiHprGTQaurw MrJQajYkpH8a
/2n6pxncP97EmzmDXqcBGwhCBxJrBFgrGEUQtmHXHsmi0Q5VhONoWTp7Hy7z Rju00mVpNNos
gRMGSEdYh7TGD8PgepD92IAwNsCxQ0ZRkVu8kD/Kn+C5HTzmB+gXCxYaD4kn jNwOIzbSvGQB
+0CuFntFIv7Q8vobyjetMiDAjwtOEe4M6fRp5Kood5+uOAV6H37oO+QQfYcM 4kVTxfaCDEqH
D5sPH96qUVLgXnXCoIpEP2/htOL+5FmEkp8xtuOuTvVK3Y8pq7K5tGwumCuI HCn+Lal967HB
u+97E//9ztljvMXU58IHhirJcnz7vg033UDt+HXJD3gfcEoCO94bvhtrjJYc zSRNlUZT4Uv4
iM8H7bwzvdQ6C1PTqKm+2HGxu15bb6q11Dsuc6/VtpiaLW2ONvch35vG487j GX9K+5vzbxnv
MvueIWsKLYX2CZoKS1hzsWWhZrXmeOYn/BeSUUo38wIBOy6IGMy42eDKOWbA kiFsaDD0GnjF
cBvYN5YMzFDTazPm0xlSLzgMqUtOA7UF7EKNClQhu2rrxtZi1Y1V7r6KuQAh 337zOZR6k5i6
AjWOugK1nXcF+tnXr0Bd7ArUrlyBZs0Z/Q5w9BVoKPT1S1B6B1oxYvHZLWi2 H6w8WPsski4h
/5hczu4csfh43MP9XbtXPdkZHvrHLw6sIyVLf7D+8Z/2rH9cs3/wk1sW3PJi fOjM0Os/wbcf
XHrDkZeOPXcELH720CLuI7D4bvyp+l2fTL3dwhk4b4bFJhiEtLDNIhvCRtnC 3jJYMgpD7rfc
riMgrjRhFybMNHv2WLwYLMDb4VZvWZ59meVJPRc2hS3EIudNKJFoBFvP5jC5 bLmGXGOuabJx
smmS+U6rIc+Wl3aho85Wl1aXHrPF0mLpm4T1pk3Wy+2Xp28xbbfeaLsx7Xr7 HfpdhgPS09b9
9r/o37d/YhqUPrcnvVkpk+hIM3g9vKXScq2Fs2QMT1+50LGp9swTLrVYjBLY Iz3iMuxpaQGb
3g4ZixEMTsCgB9dYn0a/ZGcQaAfIK3lJofegl3gHSMVTFqBF2D5AasKGClvY RlbaDtqIbQDP
3GvBY1CVR0+rGLXCsnGCcYGRW2hMGgls/5l7Ci1AG1LR75GvAOMDxBuk+97t YtveJX18KkM6
BUx3u6TTDAJFcFqxQlQJaEd/kQTBSsCslJdrwbKYYdu7YNs/jYzJD5Ah+QEe rc/tybf3lpbp
x5SWmcFPeyq9zDomnX2ho46ebhHoBdDlabnKdwTgAa3uYGodgzsAvuXV9mkF 5Rc6rUGNYaj1
mbdCY3yhd/uHWmbkTLhiWcnQmkekvBzPOksmnzd4Z8/mK9aTdV8+/+TMuiVU azQm39e8pXkV
mZEHvRhe6LZgu2S3e5weD89LcAZxGjz8I8695ufMnNPp8hA5M2xdkLbAGXbX amp1l0hLrSvT
ljtXupa5L/Hc4LyTSBlZHGfLMujSg7KI2Y2qei/7UeoW9mzqFvYvqbebH6fe bn4Rzla+DNSb
iTMtQXowFNihVbkXzPCm3iErL5Hr1aNP/bzhN5D0HXJ9fWeahLKLeFu6nbA3 yaXKa/gSAtsP
NeJtePJLePZj/UN7Dx4d2r/reZz5xh+wZ9OHP/jN0BvkRdyKf/LM0E//eGLo 3qeex8v/e+jT
oaO4BHv2YMMPh96DKV0xtIg0aF4BTXtBWJ9rwUiyiXCqHsDFe9BOsxbSsFXc ab4McRIncxz3
uPUnN7JXqIPnTkvn6BeQlO9+4CCxlgA7i4GLopAuYXzitt/MW35g86bcC/zg PA8tOoA/w+aP
jg9+eaxu++1P/2LINySfN340bMwjeRLR6SWMbDo6A/1OUIS4uB/t5C4zU2Kr 3xD9rF/9zugp
xgczvfWx6PWgKsw+MzE/blPnSOn5tXmm+YF0uUF4iunFv0QGN4NnP+aC3Ms3 H1g+7+jQInwS
v3Ng3+3bl//uy8HjHw39Y0jLvo3PIRTcMuX7Ky3ln2g9WvbbPfe/m5uf+k2f 5ODQIiEIsoeQ
Tv3dVnq2QeL0oflo1sgvBH3t1z4zBcR+L2ufZhm6h4+ji3iEFkLYBvBMCNWa X6PVkFYKj6Kt
kLIA+Dn846iLPIq2QLsVUHYN/jW6BuD7IaVtZ0M7QbMsOQjwddBftlCGGunv f0GbK9AVbOx0
mNdzpJDT8Us184QC4QXxUe0zugf1Ww0ZhkWGV01jTZ+Z15t/b1ksFdgiaZPt gfRF6X9N/6sj
5LhKXUkWmkJvbOi3w4F/hWgZAqumTwKtaOlsbr5CN/gMsZhj7fQsx7FWZqxV YQ5dhh0qzCM9
7lZhDXLhq1RYAPzbVVhEh/GDKqxFQdKswjq0ndyswnr+Gc6lwga0Sjyuwka0 WluuwiahX3u/
CpvRCsuyYR5dbelTYYw00kQVJkiUJqswhwqlC1SYB5wWFdYgo9SpwgLgX6nC IlolXavCWpQm
/VmFdahK+lyF9SRina7CBjQxbefwb0oXpx1TYRO33M6psBmNd9bDTDBPqW50 3sBgDeWI88cM
Flj5wwwWWfkeBmsZ/CyDdZRHzldUGHjk+q0KA49cf1Bh4JHrQxUGHmXMUWHg UcYiFQYeZcRU
GHiUsUGFgUfuaSoMPHJHVBh45P6rCgOPfE+oMPBItqgw8EjuUWHgUe5YBuvp unK3MNhA15L7
AwYbWfl9DDYzWOlTomvJ3cfgNIBtub9msJ3hvMngdNbPewx2sPJPGJxB2+Zh BnsoTp4yt0yK
k+djsI/BIQbnMPxSBuczuIrB4+jOyFtCYS2bvwqzsfJWUtiolK9jMFtL3gZU gzahDhRFq1EE
NUIqo0cg1KBmBs9D7agNQreKJcPObkddANM4AuUxhiFDSQu0Hw9QJSuP/H/s qXB4ZjJaAjUt
qGcYJw5lcyFVxpuIyuCZgMapUBErnQEtWiBdDG3WwBy6WavF0F8cQhdaD3ET YHVBfQQwac0a
GKMFcl3fmO3UUZjy13CngnaiPcaHV1AMM5gAj4zyoKcYzLMLauIQVkOPY0f1 9a9ajmDMAzqM
5H7GKErp1QQtW9n466CM9vx/TmsZSumKYjCTbjYjShsZ8hSnW+11KfBBRgtZ exkF2XjzIF4A
Y69mNI8APm0XhV4plTewlrS38d8yJ4W/7TAunVMH4G76l1hRJlcUbwOb1Zrh cWOq1I5jfGlH
q9RZz2c1zUxyIjCbguG5d7GaGJPQJRD3sFkrfFCkaQrI0Cw2k25G5RTdumAu MmBFVBlUJCnG
aN/EJIvKWhsba7S8NKp9RdjcaMtW1iOddzOM38p6VKgvs1lH2HiNKjeUGjrr uMqPCFuj0m7T
MP9jqpR3qByMMtrEmeQpq0txKKLOv4eNJrMRRs8qxXlKG5rfwPpuHiUNFLed 9aWMnSpXqN2t
UqRRldT4N/C6oc8oo0oMUqXvRrWkh1GaStSITLezHdvFKNrC2tOZUn62qq1S IzSy9uvVUWPq
SpW9R3sYocJqtodb1NIRusZU6rarK4kx/B6WG+FqnElpC5vdt8tESqfGh9dC 61pZfyN9UN2w
Tp1tRKV/I9N2srpLUzRrYmOvYaVKe7rDYioPm9m+61BlpB1iuqPXq9RWehjR 8hHGK0U6ZEbD
RnX9Mca1FobTwfaeIo1trKWyktHSHRuWLLrzN6qcaWWzobK5Xt1bit5pGZ5H K8uNSG/31yxR
/Gvra1THWMV66GGUbjpPNqOoE8pTlO1hfzMktcLVTLZlJgMbGW3jTO66h/WJ wnU6d2W/d6ta
Q9lNcVXKRrSnUtvKOBJBl7P2yqxpv42sdkTSlNGbGLU62C7ZNLyK1NhtTGfS +gijRJc6Bt1D
ChW7WfvUjFO9dzAZamV6MzW38czmdUPdVLClhdAvfcYzrNEadjzTTq2A0cz2 UgtArQC1MQ5F
WS6OVjIZUDg+fhjz/98RNjCJUXCjo0aZD5q+Buz9bAizQPIovABKqQWYDfHF rLwKSpZATGVz
DliCKnjmsdIaZIKTAQ01TJri3yJr8nC5sk8UinaoNB+R0f/Mio1wJqWRU3xe xWo3AX7P8JiN
w7pNkecRezRaWyqaY0SPKvs3purMuLqn17BeosM6ke7WOnU0urvXq7p01bA1 Usbs/jeUSenO
DcPaKaruuOiwTHcx/dGt7ufVqjx+G71Su5BSLDqql5Fd/M3xmlQLSCVwFdOM yqxXqZxpU3v+
Ng7lslWdTylFI39TKr45ckq3US0WYT5oBEZtUakdV3XIvxqbUn8plIzo2U3f 4EVU9TJG+1yK
9o6wGXUwysZUT+c/4bmsymLbKN2WGpdqkiZG6dgoK9I1ykcuGMbuGiW3I7b7 31OKzq6V9Z+S
q/bz+tvA+L+OcXO0H5rSjyOY7YCreKg9jOK0/+bh9SjzGi3drapGVeiv7KoO VT5GNO/5MvTv
VjQiH3PZ2r/JuZTvRW1OVPXQlNUo/l4j42rb13jQ9TV6j/QcZ94q9UiaVDu0 nvlGG9Bo7+p/
5n6qvy7V/4upZ51v8+K+yUeFWiMeayPr85v7OMWxyNdovfp/a7YjVP7mCOfb +/NnFFW92G6w
Pake6PlkBlJOAnngw5egUjhryRBPhNw4OFWVsLMVvSVYiqpVzAns72qVwKPA pXAGK2WtJqNJ
cBaggfb+v2fr/s8tY6qu8GvUG7aHNZs6oqsjjVH5EbmmOSrPa29r74YieVZ7 V0d7V6Q71t4m
d7Q0jpcrI92R/wGpkHYmL2lv6aElcXluG7SbWFY2YRxERePlGS0t8uLYmubu uLw4Go92rY82
zeiKRVoWR9f0tES6Ut1OZYWyWjp1WbQrTgcoHj9hgpw3L9bY1R5vX909lmGN rmQF82pYskuu
6Yo0RVsjXevk9tX/dtZyV3RNLN4d7Yo2ybE2uRtQly6RF0a65aBcM09esHr1 eDnS1iRHW+LR
Dc2ANn64J1hv+5quSEfzptFFUbmyK7Ih1raGto0BacfJi9tXQdfzY43N7S2R eAHtvSvWGIvI
SyI9bU2wBiDTlKJZ7W3d0VY6t65NcjwCFAQixVbLTdF4bE1bgazQpRGwIjGo bG3visrNPa2R
Npi+3Ngc6Yo0wjIgE2uMwzoibTLUbaLrjwHJO2CB0cZoPN4Ow9EFRaD/nsZm OaZ2RRff0xaV
N8S6mxkZWtvbm2hrCsO0u2EijUDUeKqse0O0rTsWBexGAHq6No2XGaXb10e7 IsDr7q5opLsV
qmiDxh7gd5wORrkX7WJTWN3T0gIgmysM39oOg8Tamnri3Wyp8e5NLdHRlKCS GqejRLtaY20M
o6t9HXQbgfk39sBACgObYpE17bR+QzPQXG6OtnQARdrlNbH1UYbARD4itwA5 5NYo0K4t1gjo
kY6OKJCxrTEKgyjkjlFiydGNsJjWaMsmGdYWB9lpoX20xloYebvVTRRXx2uE Fquick8cRIpR
M9rZQyfb00jpL69uhyVDj7Co7m4qJ7D0rijwvRtEA9gUB5Ix8YRsa2RN5PJY G3Qd7W4sUIgG
zZti8Y6WyCY6BG3dFt0Q74h0wNQApQmm2B2L044pekdXe2s76218c3d3x9TC wg0bNoxvVQV2
fGN7a2Fzd2tLYWs3/fuYha3xlRG68PG08D9ssCHaAqVR1mT+gpq5s+fOmlEz d8F8ecFs+eK5
s6rmL6mSZ8xZXFU1r2p+jUlv0tc0A1lTVKMkpjyBicIKuhlFv2WLscVQQaZr XrVJ3tTeQ1s2
UmkDOrN9pIglCAeTUeAvbL82QI+s6YpGqSSOl+ugWXMExKB9Fd1G0LL7vMlQ 6dxAxSkKjItS
SndFG7uBz6uBjiPzoixsXxNlKIzFw+2ANSC9q3q6oWuYZjvsqFELyo2nJgWC PEyK4cZU2uT1
kZaeyCqQsEgcJGR06/Hy0jYms5tSq4A1qZoLxDsixzuijTFQOt9cuQxUbGPS RttGmppiVCZA
KruYRi6gxV2Mtmx3f21SLbHWGF0QDMLwNrR3rYsrQsrkkRW2bwCF2rOqJRZv puNAXwq5W0FQ
Yf7Aqo5NsiK8KoXOH4jRY+7qkcVR7dXZE42zYUDvNUa72tQVdKnzZsjx5vae libYQ+tj0Q2K
uvrG8ikecDIKGqBpRMUNrxGmxRRrY/cIj+nCIuqsV397t2zKww3Ufa92BONE uqdShKVLZoAR
yJtSUjpWLp04ZdyEkgkTdLql1VA4YeLEkhKIS4tL5dLJk8omlZn0/2LX/dvN SHOF6vTYPoSj
ajs75FGnnB7RNmETGP614AB8yNyGVN0S5gbRQyJ12pq4u7jd3C+4gxD2cfu5 x7+70v/uSh99
d6X/3ZX+d1f6313pf3el/92V/ndX+t9d6X93pf/dlf53V/rfXel/d6X/f+GV /nkn/xE4wvC/
re6dr7WJnncnwG4F/kWfLUzCR+X5LH4iX83P4S+AuOy8EagO/le9zGd7huoe ZfXNOIHv4xDb
F/+6zbfDw9/lRclcdDv6ls/uGsuMMZwTnYGQhMAhH8SFEBZAWAnhFgg7IQjI opa0Q7gawkEI
Z1lNmHP23VocHoDkBpbsWdtSxLIRJbuinmX3XFKnpPMWKWnlXAVtqoI2sUQp Hj9TSXMLlNQW
KOqlqd5UdGiGg3OgYxz99mUHxJgcRhaMkQ/dy6WjBATCCWpJmLPtyQkW7TzI 8QhzhMNAVF/y
EIf7TNaiGXqSJGeQDfnIR+S0UkNO7zFbi3bOuIj8CT0J4SAEjvwJnnfIO+hq chJhJEFcAWEn
hIMQjkI4A0EgJ+E5Ac/b5G1kIW+hQggVEFZC2AnhIIQzEETyFsQS+SP9OjCL KVwBgZA/QiyR
P8Cy/gCxhRwH6Dg5DlN7pa+0rGgfA0KFKuALqIDTowI2R9EA+V3f52N9A+Td PXLId++MCeRV
lIBAYLBXofNXkQxhIYQGCB0QBIBeB+h11AthB4R7ISQgCNDmdWjzOrR5EcLL EF5HEyCEISyE
oCXH+mCYAXK0LzjTN8NBfkN+jZxA1CPkeZa+TJ5j6UvkVyx9AdIsSF8kz/Vl +dAMA9QjaCNB
KkFaCPUa8ss9OTZfcoaVHATy+CAuhFABYQGElRBugSCQg2RMX5PPBp08jV7U IsDsQx+y9CF0
vxaF1/rCwVkgYzKNglMvAAiinfLOIAkHb78TsjQK3nwrQDQKXnsjQDQKXr4Z IBoFW9YDRKNg
01qAaBRcvhIgGgUX1AAE0QC55+c5ub7SBeuwPMNCNgCVNgCVNgCVNiCebKAP +pync7u7Lz8f
KHZXODQ239e7H/cewL2Lce/9uDeKe6/CvZtxbznuvQz3hnCvF/dm4d4w7n0a TwFS9OJw/3nZ
srAL976Ie5/AvXHcG8S9Adybg3tlXBoeINl9c4tZUsWSPTPovoL0gulFFphj NlA0G8Q6G7b9
QYiPQkiyXBiQ5DEKckYWTcfsya9Q8uOnFrXPuJA8Cw2fBTY8i05A4IFBz4IY PQud0K+nWyCu
gLASwiEIZyAkIQiAPQYmfguLLRAXQqiAsBLC1RDOQBDYdM5AIKhdneKTbGKF 6qQX0Bx5Fh76
L42ySXY4U/JKIelC7hYvtmThBVnJLFKKHPTXE2xWrXUAm/Z+avrsUxPSzdCR m8ktKBMYsUNN
b+n7PNM3gO/oCz7tm5GOf4yyeJA6XIaCOADpFBRn+UnIq6VpCfKSxyAt6vMu g2aWvmCBbz82
01Z7fZ97T/k+9A4QAD/wPu17Qx7gcZ/vNSh5bK/vVe/1vhcKB7RQciA4gCHZ LzPUfd4pvide
ZKiboeKuPt9VNNnru9I7x7fOyyqiSsVlcciFLb7FweW+C6G/Su8qXzgOfe71 VXgv85UrWJNo
m72+CTCFkALmw2THetmg/izW4dLSAdwcLhBvF2vFBeJksUgsELNFn5gpekS7 1qaVtGatUavX
arWCltcSLdLa6R+TD9HfrrALEvtDADyNeQZLhMZE+UUTgrUEXYQSaVw1qV4y E1cnDjWi6lVy
4twS/wDWL1qe0Phn4oStGlXXzExMCVUPiMnFidJQdUJceGntboxvroPSBNk2 gFFN7QBO0qIt
HvrfWPYhjK1bbvLQNG/LTXV1yOVYX+GqsE23ls2u/JaoQY1H/aEW13lwZuL2 6iW1iUcz6xJF
FEhm1lUnfkj/Xcs+/A98tqpyH/47Tepq93HT8T+qFtNybnplXV31AF7G8JCM /w54IDF/Z3ja
LCRTPCRrsxS8uxS8ALQHvByaAJ5OhwIML6DTMTweU7zd8Zyqyt05OQzHCb4n w4k75dE4LwYA
JxBgOI5e9CLDedHRS3ES0xmK1wsoWV6Ggt3Iy1C82M1Qlo2gFKoo1w+jXM9G 4vAIjlfBMZ1M
4ZhOAk7oP/1EZ4ZCeM+0usYV9F/dNPirohAaEjesb3YlelfJ8u7GOvV/4AQb VjU20zQSTdT5
o5WJRn+lvHvaim+pXkGrp/krd6MVVTW1u1eEo5V908LTqvyRyro9cxaWlJ43 1vXDY5Us/JbO
FtLOSuhYc0q/pbqUVs+hY5XSsUrpWHPCc9hYiMn4wtrdWjSzbtYKJd1DDHqQ 1wZPdt1Mh9Qx
nQnvtGzXVZ794JDsQoZQXcLon5kwQaBV42aMm0GrYE/RKjP9f0Zqleuqadme /XiXWiVBsdU/
E4W6e+I9yFUVq1R+4vCBou4eSnAlDsX/1QfqqhLhSGW8G6HqRP6S6kTFouW1 u0URShvokhJT
U2UGQ9VA8pBSOB4Kp9JCjhtGpGXltEynUxG/yf8eNWW/cdpLnt6Dw1kYTnV1 XCKruoaAKqhR
/3HMfnCXqHmI18EC4ziE46k+2LTVP+6B6HpTobtHhVQ6dKup0gqaxFPkGP5Q KqH/BQa/r+sK
ZW5kc3RyZWFtCmVuZG9iagoKMTQgMCBvYmoKMTU5NzYKZW5kb2JqCgoxNSAw IG9iago8PC9U
eXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0JBQUFBQStBcmlhbE1UCi9G bGFncyA0Ci9G
b250QkJveFstNjY0IC0zMjQgMjAwMCAxMDA2XS9JdGFsaWNBbmdsZSAwCi9B c2NlbnQgOTA1
Ci9EZXNjZW50IDIxMQovQ2FwSGVpZ2h0IDEwMDUKL1N0ZW1WIDgwCi9Gb250 RmlsZTIgMTMg
MCBSPj4KZW5kb2JqCgoxNiAwIG9iago8PC9MZW5ndGggMzU1L0ZpbHRlci9G bGF0ZURlY29k
ZT4+CnN0cmVhbQp4nF2SzW6DMAyA7zxFjt2hglAKQ0JILS0Sh/1obA9AE9Mh jRAFeuDtF9vd
Ju0A+uLYyZc4YdWcGjMs4aubVAuL6AejHczTzSkQF7gOJpCx0INa7iP6q7Gz Qehr23VeYGxM
PxVFEL75uXlxq9gc9HSBhyB8cRrcYK5i81G1ftzerP2CEcwioqAshYber/PU 2eduhJCqto32
08Oybn3JX8L7akHENJasoiYNs+0UuM5cISiiqBRFXZcBGP1vLs655NKrz875 VOlTo2h3KD3H
xPsIeUecSuSEeYe8Zz4ip8wZcsa8R34kTig/53iNfGA+IR+JM9qr4vgZ+cTx BPnMbpRfczz2
LCP2xPUl+2e4r2T/tEJm/4Tid/8c+e6P60v2z9Bfsn+C55Xsn9Je7J9RLfsn eBbJ/jH6S/aP
H5HZP87p8u+3jG3Ad/LTXqFuzvnW0mOinmI3BwO/781OFqvo+waSza8pCmVu ZHN0cmVhbQpl
bmRvYmoKCjE3IDAgb2JqCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBl L0Jhc2VGb250
L0JBQUFBQStBcmlhbE1UCi9GaXJzdENoYXIgMAovTGFzdENoYXIgMjkKL1dp ZHRoc1s3NTAg
Mjc3IDY2NiA1NTYgNTAwIDUwMCA1NTYgNTU2IDcyMiA1NTYgODMzIDU1NiA1 NTYgMjc3IDU4
MyAzMzMKNjY2IDU1NiAyMjIgNjY2IDIyMiA1NTYgNzIyIDY2NiA1NTYgNTAw IDc3NyAyNzcg
MzMzIDMzMyBdCi9Gb250RGVzY3JpcHRvciAxNSAwIFIKL1RvVW5pY29kZSAx NiAwIFIKPj4K
ZW5kb2JqCgoxOCAwIG9iago8PC9GMSAxNyAwIFIvRjIgMTIgMCBSCj4+CmVu ZG9iagoKMTkg
MCBvYmoKPDwvRm9udCAxOCAwIFIKL1Byb2NTZXRbL1BERi9UZXh0XQo+Pgpl bmRvYmoKCjEg
MCBvYmoKPDwvVHlwZS9QYWdlL1BhcmVudCA3IDAgUi9SZXNvdXJjZXMgMTkg MCBSL01lZGlh
Qm94WzAgMCAxMTkxIDg0Ml0vR3JvdXA8PC9TL1RyYW5zcGFyZW5jeS9DUy9E ZXZpY2VSR0Iv
SSB0cnVlPj4vQ29udGVudHMgMiAwIFI+PgplbmRvYmoKCjQgMCBvYmoKPDwv VHlwZS9QYWdl
L1BhcmVudCA3IDAgUi9SZXNvdXJjZXMgMTkgMCBSL01lZGlhQm94WzAgMCAx MTkxIDg0Ml0v
R3JvdXA8PC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0IvSSB0cnVlPj4v Q29udGVudHMg
NSAwIFI+PgplbmRvYmoKCjcgMCBvYmoKPDwvVHlwZS9QYWdlcwovUmVzb3Vy Y2VzIDE5IDAg
UgovTWVkaWFCb3hbIDAgMCA1OTUgODQyIF0KL0tpZHNbIDEgMCBSIDQgMCBS IF0KL0NvdW50
IDI+PgplbmRvYmoKCjIwIDAgb2JqCjw8L1R5cGUvQ2F0YWxvZy9QYWdlcyA3 IDAgUgovT3Bl
bkFjdGlvblsxIDAgUiAvRml0QkggODQyXQo+PgplbmRvYmoKCjIxIDAgb2Jq Cjw8L0F1dGhv
cjxGRUZGMDA0QTAwNkYwMDY1MDA2QzAwMjAwMDQ3MDA3MjAwNjUwMDY1MDA2 RTAwNzkwMDY1
MDA3Mj4KL0NyZWF0b3I8RkVGRjAwNDQwMDcyMDA2MTAwNzc+Ci9Qcm9kdWNl cjxGRUZGMDA0
RjAwNzAwMDY1MDA2RTAwNEYwMDY2MDA2NjAwNjkwMDYzMDA2NTAwMkUwMDZG MDA3MjAwNjcw
MDIwMDAzMjAwMkUwMDMzPgovQ3JlYXRpb25EYXRlKEQ6MjAwODA1MTUxNTM2 MTcrMDInMDAn
KT4+CmVuZG9iagoKeHJlZgowIDIyCjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAw MDAzNjI4NiAw
MDAwMCBuIAowMDAwMDAwMDE5IDAwMDAwIG4gCjAwMDAwMDI4NDkgMDAwMDAg biAKMDAwMDAz
NjQzMCAwMDAwMCBuIAowMDAwMDAyODcwIDAwMDAwIG4gCjAwMDAwMDI5NTUg MDAwMDAgbiAK
MDAwMDAzNjU3NCAwMDAwMCBuIAowMDAwMDAyOTc0IDAwMDAwIG4gCjAwMDAw MTgzMjcgMDAw
MDAgbiAKMDAwMDAxODM0OSAwMDAwMCBuIAowMDAwMDE4NTQyIDAwMDAwIG4g CjAwMDAwMTg5
NTMgMDAwMDAgbiAKMDAwMDAxOTIxNyAwMDAwMCBuIAowMDAwMDM1MjgwIDAw MDAwIG4gCjAw
MDAwMzUzMDMgMDAwMDAgbiAKMDAwMDAzNTQ5MiAwMDAwMCBuIAowMDAwMDM1 OTE3IDAwMDAw
IG4gCjAwMDAwMzYxODggMDAwMDAgbiAKMDAwMDAzNjIzMSAwMDAwMCBuIAow MDAwMDM2Njc5
IDAwMDAwIG4gCjAwMDAwMzY3NTcgMDAwMDAgbiAKdHJhaWxlcgo8PC9TaXpl IDIyL1Jvb3Qg
MjAgMCBSCi9JbmZvIDIxIDAgUgovSUQgWyA8REIyRTM1RjVFQjM1QkQ4MTcw OUM5NEI5Mzk5
QUYwMjI+CjxEQjJFMzVGNUVCMzVCRDgxNzA5Qzk0QjkzOTlBRjAyMj4gXQov RG9jQ2hlY2tz
dW0gLzE4MkJDNEM2ODZBQzY0NEFFMEY5QjBFRkEzMzk5MDc4Cj4+CnN0YXJ0 eHJlZgozNzAw
MgolJUVPRgo=
--------------030504040005020803090102--
Re: Multiple inheritance problem (extending UML) [message #477388 is a reply to message #477387] Thu, 15 May 2008 14:21 Go to previous messageGo to next message
james bruck is currently offline james bruck
Messages: 1724
Registered: July 2009
Senior Member
Hi Joel,

-It seems to me from looking at your diagram that you are mixing
meta-levels. I'm not sure if this is what you intended.
-Keep in mind that EncapsulatedClassifier can have ports so you may consider
extending that meta-type instead.
-When you talk about connecting your properties via connectors, keep in mind
that connectors must have context and that there is a subtle distinction
between specific instances (InstanceSpecification) and any general instance
(as what Composite Structure diagrams show). I believe what you describe
would mix those notions. The difference between saying that "this
particular car is red" and "any general instance of a car will have an
engine and wheels in this configuration".
- I'm still not sure why you need to invent a new meta-type. Wouldn't
Composite Structure diagrams and InstanceSpecifications on freeform diagrams
be sufficient? Of course I don't know what this project is about but it
would seem that separating structure from instance would be the way to do
this? I could be way off base though.

Lightweight extensions (using profiles) should be easier or the same as any
of the other extension mechanisms in terms of difficulty. I would
definitely recommend staying with profiles. The only thing you lose with
profiles is that profiles are not a "first class" extension mechanism.

I hope this helps.

Cheers,
- James.


"Joel Greenyer" <jgreen@upb.de> wrote in message
news:g0hejs$gmh$1@build.eclipse.org...
> Hi James,
> I would really like to stay lightweight, but I don't see any easy way to
> do it.
> See my attached PDF:
>
> I plan to extend the Component Diagrams such that --in addition to regular
> components and parts-- there may be
> StructuralElements that may be composed without dealing with their type
> (since they own/are their type implicitly). It
> is important that they
> (1.a) may declare attributes and
> (1.b) may have Ports
> -> Thus, they act as Components
> But, furthermore, it must be possible
> (2.a) to connect them on the instance level (to other Properties via
> Connectors) and
> (2.b) to specify attribute values
> -> Thus, they are Properties
>
> How would you suggest to do this? Lightweight, middleweight, ...? Also
> considering the complexity of building the editor?
>
> Thanks
>
> Joel
>
>
> James Bruck wrote:
>> Hi Joel,
>>
>> Have you considered creating a new metatype that would have references to
>> Property or Class?
>> Perhaps have a profile with stereotype that has metaclass extension to
>> Class
>> and/or Property that introduces the new concepts you need. You could
>> re-use
>> existing editors that way.
>>
>> ... difficult to guess at a solution without more details as to how this
>> will be used and what new features will be added. It sorta' seems like
>> you
>> are looking to implement InstanceSpecification?
>>
>> Inheriting from both Property and Class as you mention will probably lead
>> you down a difficult implementation path.
>>
>> Cheers,
>> - James.
>>
>>
>> "Joel Greenyer" <jgreen@upb.de> wrote in message
>> news:g0e0s0$597$1@build.eclipse.org...
>>> Hi,
>>> (this is mainly an EMF-related question, but deals with extending UML2)
>>> I want to extend UML2 and particularly need to introduce another
>>> metaclass
>>> which breaks the typing concept of UML: I need something which is an
>>> Instance (Property) and Type (Class) at the same time.
>>>
>>> Therefore, my first approach is to inherit from both Class and Property.
>>> However, the EMF code generation produces code with a lot of missing
>>> methods. Is there any way to do this correctly? I tried hand-fixing the
>>> code, but I'm not sure that it contains no errors, plus it'll be awkward
>>> to maintain.
>>>
>>> Another approach could be to to work with Property and Class as is, but
>>> to
>>> maintain them such that each Property has a unique type-Class. However,
>>> I
>>> feel that this will need a lot of extra customization in the editors.
>>>
>>> Any ideas?
>>>
>>> Thanks for helping
>>>
>>> Joel
>>
>>
>
>
Re: Multiple inheritance problem (extending UML) [message #477389 is a reply to message #477388] Fri, 16 May 2008 02:36 Go to previous messageGo to next message
Joel Greenyer is currently offline Joel Greenyer
Messages: 170
Registered: July 2009
Senior Member
Hi James,

James Bruck wrote:
> Hi Joel,
>
> -It seems to me from looking at your diagram that you are mixing
> meta-levels. I'm not sure if this is what you intended.
> -Keep in mind that EncapsulatedClassifier can have ports so you may consider
> extending that meta-type instead.
okay
> -When you talk about connecting your properties via connectors, keep in mind
> that connectors must have context and that there is a subtle distinction
> between specific instances (InstanceSpecification) and any general instance
> (as what Composite Structure diagrams show). I believe what you describe
> would mix those notions. The difference between saying that "this
> particular car is red" and "any general instance of a car will have an
> engine and wheels in this configuration".
I think I understood that.
> - I'm still not sure why you need to invent a new meta-type. Wouldn't
> Composite Structure diagrams and InstanceSpecifications on freeform diagrams
> be sufficient? Of course I don't know what this project is about but it
> would seem that separating structure from instance would be the way to do
> this? I could be way off base though.

The InstanceSpecification again requires that we express what type(s) it is an instance of.
What I'm trying to say is to completely forget about types for certain elements.
Types are just a way for us (and the UML) to structure the world:
Imagine you want to model a car. So you specify how the type car is structured internally. You know, for example, that
you will need four instances of the same wheel - okay(*). However, for some elements inside the car you are yet not sure
whether they will be instances of the same thing. Suppose, for example, you don't know whether the front and rear axis
will be the same, so you don't want to worry about types. But, you want to be able to specify attributes, like "int
diameter = 50mm" or "int turnsperminute". Also, you want to connect your axis to the wheel instances. Since Connectors
are typed, I also need to extend this concept of type-and-instance to Connectors as well, but I did not want to overly
complicate my explanations.

(*) also, you are pointing out that these instances are different from the specific real world instance of the
particular wheels of a particular car on the road.

You are right - I can do all that with Composite Structure diagrams: If I am not sure about the type of an axis, I
simply introduce a new type. But, I want to hide this from the modeler. Also, I want to hide that when I copy an axis,
it will not become an instance of the same type, but rather that the type if copied, too. It seems like I would need a
lot of customizations on the Composite Structure diagram editor to hide and handle all this.

Still, if you can suggest an elegant lightweight solutions, I would be really glad to hear it!

Thanks

Joel



>
> Lightweight extensions (using profiles) should be easier or the same as any
> of the other extension mechanisms in terms of difficulty. I would
> definitely recommend staying with profiles. The only thing you lose with
> profiles is that profiles are not a "first class" extension mechanism.
>
> I hope this helps.
>
> Cheers,
> - James.
>
>
> "Joel Greenyer" <jgreen@upb.de> wrote in message
> news:g0hejs$gmh$1@build.eclipse.org...
>> Hi James,
>> I would really like to stay lightweight, but I don't see any easy way to
>> do it.
>> See my attached PDF:
>>
>> I plan to extend the Component Diagrams such that --in addition to regular
>> components and parts-- there may be
>> StructuralElements that may be composed without dealing with their type
>> (since they own/are their type implicitly). It
>> is important that they
>> (1.a) may declare attributes and
>> (1.b) may have Ports
>> -> Thus, they act as Components
>> But, furthermore, it must be possible
>> (2.a) to connect them on the instance level (to other Properties via
>> Connectors) and
>> (2.b) to specify attribute values
>> -> Thus, they are Properties
>>
>> How would you suggest to do this? Lightweight, middleweight, ...? Also
>> considering the complexity of building the editor?
>>
>> Thanks
>>
>> Joel
>>
>>
>> James Bruck wrote:
>>> Hi Joel,
>>>
>>> Have you considered creating a new metatype that would have references to
>>> Property or Class?
>>> Perhaps have a profile with stereotype that has metaclass extension to
>>> Class
>>> and/or Property that introduces the new concepts you need. You could
>>> re-use
>>> existing editors that way.
>>>
>>> ... difficult to guess at a solution without more details as to how this
>>> will be used and what new features will be added. It sorta' seems like
>>> you
>>> are looking to implement InstanceSpecification?
>>>
>>> Inheriting from both Property and Class as you mention will probably lead
>>> you down a difficult implementation path.
>>>
>>> Cheers,
>>> - James.
>>>
>>>
>>> "Joel Greenyer" <jgreen@upb.de> wrote in message
>>> news:g0e0s0$597$1@build.eclipse.org...
>>>> Hi,
>>>> (this is mainly an EMF-related question, but deals with extending UML2)
>>>> I want to extend UML2 and particularly need to introduce another
>>>> metaclass
>>>> which breaks the typing concept of UML: I need something which is an
>>>> Instance (Property) and Type (Class) at the same time.
>>>>
>>>> Therefore, my first approach is to inherit from both Class and Property.
>>>> However, the EMF code generation produces code with a lot of missing
>>>> methods. Is there any way to do this correctly? I tried hand-fixing the
>>>> code, but I'm not sure that it contains no errors, plus it'll be awkward
>>>> to maintain.
>>>>
>>>> Another approach could be to to work with Property and Class as is, but
>>>> to
>>>> maintain them such that each Property has a unique type-Class. However,
>>>> I
>>>> feel that this will need a lot of extra customization in the editors.
>>>>
>>>> Any ideas?
>>>>
>>>> Thanks for helping
>>>>
>>>> Joel
>>>
>>
>
>
Re: Multiple inheritance problem (extending UML) [message #477399 is a reply to message #477378] Mon, 19 May 2008 07:17 Go to previous message
Joel Greenyer is currently offline Joel Greenyer
Messages: 170
Registered: July 2009
Senior Member
Hi,
I am not sure how to make midweight extensions to UML2 correctly. Is there any documentation?
I create a new <<metamodel>> model (UML-Editor->Convert To->Metamodel) and introduce new metaclasses, some of which
extend the uml::xxx metaclasses.

Then, I create a new EMF genmodel based on this uml file. There I have a couple of questions:
1. I guess I don't have to worry about the huge list of warnings during the UML import (mostyl "... has to be annotated
with ...")? (I also don't understand the implications of most options, but I'll leave the defaults for now)
2. In the package selection, I reference the org.eclipse.emf.ecore genmodel as well as the org.eclipse.uml2.uml genmodel
and generate the code. In the code I observe, as expected, that all extending metaclasses extend the XxxImpls from the
uml2.uml plugin. What I, however, don't understand is that the packages with the XxxImpl classes are hidden in the
uml2.uml plugin.

I feel like I'm on the wrong path. Any suggestions?

Thanks

Joel


Ed Merks wrote:
> Joel,
>
> The problem is of course that Java supports only multiple interface
> inheritance but not multiple class inheritance. So if you extend two
> classes both of which contain hand specialized code, you'll need to make
> a copy of the hand specialized code of one of them. I wonder also if
> you are using UML's extended GenModel rather than EMFs basic one, since
> UML itself was generated with a specialized generator that likely also
> needs to be applied for any model derived from UML. Generally heavy
> weight extensions create difficulties and if possible you should be
> using stereotypes instead.
>
> Joel Greenyer wrote:
>> Hi,
>> (this is mainly an EMF-related question, but deals with extending UML2)
>> I want to extend UML2 and particularly need to introduce another
>> metaclass which breaks the typing concept of UML: I need something
>> which is an Instance (Property) and Type (Class) at the same time.
>>
>> Therefore, my first approach is to inherit from both Class and
>> Property. However, the EMF code generation produces code with a lot of
>> missing methods. Is there any way to do this correctly? I tried
>> hand-fixing the code, but I'm not sure that it contains no errors,
>> plus it'll be awkward to maintain.
>>
>> Another approach could be to to work with Property and Class as is,
>> but to maintain them such that each Property has a unique type-Class.
>> However, I feel that this will need a lot of extra customization in
>> the editors.
>>
>> Any ideas?
>>
>> Thanks for helping
>>
>> Joel
Re: Multiple inheritance problem (extending UML) [message #626557 is a reply to message #477377] Wed, 14 May 2008 09:54 Go to previous message
Ed Merks is currently offline Ed Merks
Messages: 25747
Registered: July 2009
Senior Member
Joel,

The problem is of course that Java supports only multiple interface
inheritance but not multiple class inheritance. So if you extend two
classes both of which contain hand specialized code, you'll need to make
a copy of the hand specialized code of one of them. I wonder also if
you are using UML's extended GenModel rather than EMFs basic one, since
UML itself was generated with a specialized generator that likely also
needs to be applied for any model derived from UML. Generally heavy
weight extensions create difficulties and if possible you should be
using stereotypes instead.


Joel Greenyer wrote:
> Hi,
> (this is mainly an EMF-related question, but deals with extending UML2)
> I want to extend UML2 and particularly need to introduce another
> metaclass which breaks the typing concept of UML: I need something
> which is an Instance (Property) and Type (Class) at the same time.
>
> Therefore, my first approach is to inherit from both Class and
> Property. However, the EMF code generation produces code with a lot of
> missing methods. Is there any way to do this correctly? I tried
> hand-fixing the code, but I'm not sure that it contains no errors,
> plus it'll be awkward to maintain.
>
> Another approach could be to to work with Property and Class as is,
> but to maintain them such that each Property has a unique type-Class.
> However, I feel that this will need a lot of extra customization in
> the editors.
>
> Any ideas?
>
> Thanks for helping
>
> Joel
Re: Multiple inheritance problem (extending UML) [message #626558 is a reply to message #477377] Wed, 14 May 2008 10:04 Go to previous message
james bruck is currently offline james bruck
Messages: 1724
Registered: July 2009
Senior Member
Hi Joel,

Have you considered creating a new metatype that would have references to
Property or Class?
Perhaps have a profile with stereotype that has metaclass extension to Class
and/or Property that introduces the new concepts you need. You could re-use
existing editors that way.

.... difficult to guess at a solution without more details as to how this
will be used and what new features will be added. It sorta' seems like you
are looking to implement InstanceSpecification?

Inheriting from both Property and Class as you mention will probably lead
you down a difficult implementation path.

Cheers,
- James.


"Joel Greenyer" <jgreen@upb.de> wrote in message
news:g0e0s0$597$1@build.eclipse.org...
> Hi,
> (this is mainly an EMF-related question, but deals with extending UML2)
> I want to extend UML2 and particularly need to introduce another metaclass
> which breaks the typing concept of UML: I need something which is an
> Instance (Property) and Type (Class) at the same time.
>
> Therefore, my first approach is to inherit from both Class and Property.
> However, the EMF code generation produces code with a lot of missing
> methods. Is there any way to do this correctly? I tried hand-fixing the
> code, but I'm not sure that it contains no errors, plus it'll be awkward
> to maintain.
>
> Another approach could be to to work with Property and Class as is, but to
> maintain them such that each Property has a unique type-Class. However, I
> feel that this will need a lot of extra customization in the editors.
>
> Any ideas?
>
> Thanks for helping
>
> Joel
Re: Multiple inheritance problem (extending UML) [message #626559 is a reply to message #477378] Wed, 14 May 2008 10:11 Go to previous message
james bruck is currently offline james bruck
Messages: 1724
Registered: July 2009
Senior Member
.... Ed makes a good point when he warns about staying away from heavy
weight (or middle weight) extensions. Profiles are the preferred
(safer/less complicated) way of extending UML. When using profiles, you
have 2 options, you could generate code for them if you need to introduce
derived properties or other behavior or you could use the "define" approach
which uses dynamic EMF.
You have a lot of options when using profiles.

Cheers,
- James.


"Ed Merks" <merks@ca.ibm.com> wrote in message
news:g0eqv2$euj$1@build.eclipse.org...
> Joel,
>
> The problem is of course that Java supports only multiple interface
> inheritance but not multiple class inheritance. So if you extend two
> classes both of which contain hand specialized code, you'll need to make a
> copy of the hand specialized code of one of them. I wonder also if you
> are using UML's extended GenModel rather than EMFs basic one, since UML
> itself was generated with a specialized generator that likely also needs
> to be applied for any model derived from UML. Generally heavy weight
> extensions create difficulties and if possible you should be using
> stereotypes instead.
>
> Joel Greenyer wrote:
>> Hi,
>> (this is mainly an EMF-related question, but deals with extending UML2)
>> I want to extend UML2 and particularly need to introduce another
>> metaclass which breaks the typing concept of UML: I need something which
>> is an Instance (Property) and Type (Class) at the same time.
>>
>> Therefore, my first approach is to inherit from both Class and Property.
>> However, the EMF code generation produces code with a lot of missing
>> methods. Is there any way to do this correctly? I tried hand-fixing the
>> code, but I'm not sure that it contains no errors, plus it'll be awkward
>> to maintain.
>>
>> Another approach could be to to work with Property and Class as is, but
>> to maintain them such that each Property has a unique type-Class.
>> However, I feel that this will need a lot of extra customization in the
>> editors.
>>
>> Any ideas?
>>
>> Thanks for helping
>>
>> Joel
Re: Multiple inheritance problem (extending UML) [message #626561 is a reply to message #477378] Wed, 14 May 2008 13:28 Go to previous message
Eclipse User
Originally posted by: cdamus.zeligsoft.com

Hi, Ed, Joel,

UML2 provides a nice little codegen pattern in XyzOperations classes,
which addresses the problem of copying TODO code across a
multiple-inheritance hierarchy. The XyzOperations class is a collection
of static "foreign methods" for the operations defined by the Xyz
interface. All of the classes that have to re-implement Xyz call out to
the XyzOperations, thus eliminating the replication of code.

Using the UML2 code generator, your generated PropertyClassImpl would
delegate to both the ClassOperations and PropertyOperations, as necessary.

Cheers,

Christian

Ed Merks wrote:
> Joel,
>
> The problem is of course that Java supports only multiple interface
> inheritance but not multiple class inheritance. So if you extend two
> classes both of which contain hand specialized code, you'll need to make
> a copy of the hand specialized code of one of them. I wonder also if
> you are using UML's extended GenModel rather than EMFs basic one, since
> UML itself was generated with a specialized generator that likely also
> needs to be applied for any model derived from UML. Generally heavy
> weight extensions create difficulties and if possible you should be
> using stereotypes instead.
>
> Joel Greenyer wrote:
>> Hi,
>> (this is mainly an EMF-related question, but deals with extending UML2)
>> I want to extend UML2 and particularly need to introduce another
>> metaclass which breaks the typing concept of UML: I need something
>> which is an Instance (Property) and Type (Class) at the same time.
>>
>> Therefore, my first approach is to inherit from both Class and
>> Property. However, the EMF code generation produces code with a lot of
>> missing methods. Is there any way to do this correctly? I tried
>> hand-fixing the code, but I'm not sure that it contains no errors,
>> plus it'll be awkward to maintain.
>>
>> Another approach could be to to work with Property and Class as is,
>> but to maintain them such that each Property has a unique type-Class.
>> However, I feel that this will need a lot of extra customization in
>> the editors.
>>
>> Any ideas?
>>
>> Thanks for helping
>>
>> Joel
Re: Multiple inheritance problem (extending UML) [message #626566 is a reply to message #477379] Thu, 15 May 2008 09:42 Go to previous message
Joel Greenyer is currently offline Joel Greenyer
Messages: 170
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------030504040005020803090102
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hi James,
I would really like to stay lightweight, but I don't see any easy way to do it.
See my attached PDF:

I plan to extend the Component Diagrams such that --in addition to regular components and parts-- there may be
StructuralElements that may be composed without dealing with their type (since they own/are their type implicitly). It
is important that they
(1.a) may declare attributes and
(1.b) may have Ports
-> Thus, they act as Components
But, furthermore, it must be possible
(2.a) to connect them on the instance level (to other Properties via Connectors) and
(2.b) to specify attribute values
-> Thus, they are Properties

How would you suggest to do this? Lightweight, middleweight, ...? Also considering the complexity of building the editor?

Thanks

Joel


James Bruck wrote:
> Hi Joel,
>
> Have you considered creating a new metatype that would have references to
> Property or Class?
> Perhaps have a profile with stereotype that has metaclass extension to Class
> and/or Property that introduces the new concepts you need. You could re-use
> existing editors that way.
>
> ... difficult to guess at a solution without more details as to how this
> will be used and what new features will be added. It sorta' seems like you
> are looking to implement InstanceSpecification?
>
> Inheriting from both Property and Class as you mention will probably lead
> you down a difficult implementation path.
>
> Cheers,
> - James.
>
>
> "Joel Greenyer" <jgreen@upb.de> wrote in message
> news:g0e0s0$597$1@build.eclipse.org...
>> Hi,
>> (this is mainly an EMF-related question, but deals with extending UML2)
>> I want to extend UML2 and particularly need to introduce another metaclass
>> which breaks the typing concept of UML: I need something which is an
>> Instance (Property) and Type (Class) at the same time.
>>
>> Therefore, my first approach is to inherit from both Class and Property.
>> However, the EMF code generation produces code with a lot of missing
>> methods. Is there any way to do this correctly? I tried hand-fixing the
>> code, but I'm not sure that it contains no errors, plus it'll be awkward
>> to maintain.
>>
>> Another approach could be to to work with Property and Class as is, but to
>> maintain them such that each Property has a unique type-Class. However, I
>> feel that this will need a lot of extra customization in the editors.
>>
>> Any ideas?
>>
>> Thanks for helping
>>
>> Joel
>
>


--------------030504040005020803090102
Content-Type: application/pdf;
name="StructuralElement.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="StructuralElement.pdf"

JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp bHRlci9GbGF0
ZURlY29kZT4+CnN0cmVhbQp4nL1ayW4kNxK911fk2YDKDO4EBAGS3DLgm6cF zMGY04ztwaBl
wL7075uxccnMKpXUpUGjS3xJMiIYwSUeM80Rlq+HPxdT/wEUc4xL9nb569fl n98tfxxgwX9/
/X4oNh/d4nI+huXlkFM+JkFfFkYe4jFXVFKeytpqlPDl8N/Db98dDKn9x4+k /2v9/1NV9r8P
0PX58LOM0eBgHp4PuQ61LK7E2uL5P8v3T3WceXn+7ZdbA3c3cGss/TrjTai/ 8S7emnT3r+ef
Dp+eSRiwy5ZR0L9fqsO+Lm1YZrkBHMOSfG1D5S8L2tLcCsbnar1Nocbh5VCi a6iOgpBzQOMD
cA41zVDazoK+LOfc+3E6t24upWB/k45+383ZFHTt/d1N/X3AYjGP5Gz+88Oe z0epJ31eUrVt
8PmeYTano10bRnqdua8mfKr2OYRP3Yx17CBCnZHqR0bqRwu5mtgdN0NpOwu6 KHYfoHPHRTRr
oexHDgzF7wcK3BMAeskzZPBkHNi7cAuOnmGxerR6FSsfTwS2qTwZVvDn48oS EnriTFzRKEAz
Ing07HFc3OsIe9xM1NkE1NdgwuDaEUizUcL5Te/6uk45J+Mm/38OKen8tphG s91DpqVKOzZA
RQ/dkCaneszVbco6X8W8oLtLnfkWSt0AyHelWoiLpSj0BKNC0KXU9j1dWQjD DO3YN49yE61J
0oqCPGolm6j2BAwzTArrAFzbiwMBmQlYQOgVxhkWgjL0KI4pLCii+c4383Gs 1tEeX70I6Jhm
RMCgVVEKkso9ECyDTcGSGjWiwjDDPNgU3GBRi1yUOoFhhn6zea6OOoXO0jxb zw2w0GdGfcZn
Hs8MhKHPDIS2zwxajm1PNaHPigHYsVceJSZe0ahP5wTa0mK+BscVdH0+IEw6 HxCUPh/A2j4b
BlCoYe5zAWHocwGh7XMBTOnB94MBNBcQxj4bRLLOhm4RzQY1gubCAPJgUXCD PRqnNksEwgRP
zQM9NhXKEh1mQqGdCDMLPl4t5Rm+bcOWkBUUEEm5pqjGkeslhaporoOhl+WU VSRaMkO1WRor
W2IL709blCbkJwSEHEmJuAZLYQ0+ipTSkDNG+1E5iAxLKIklgRDZHHDCt9FJ XRx6RR4pyYvs
OdEUZWSK0lCXhl6pybaE4qApNZuSomWM2jr0M5kQpNYHQxoYfV5ThISzxfl+ 6ng+dR6YGtCv
v7tJtybQLz+J9JvoMAr06+4sHpbYhB7XbNdr8VGO3OHkHG2AmqDQNjme2WJG IeHxLqsU1VmP
5loMdJIX+rWYwd6425rs1BaZD0o97MuK2ezoBxjz5A/V35KvhDNC42Yp+MLu CCjtAxsHQshI
id8g4nxafX1d2yzG4Rq8AuEc5Lydb1obGoGrnb3pdG5hpFzPwRYp8RulnHfs x+jbOhdSujrL
7DLfyTFRwDcxTB53O7XIX8rYxJeSdIq/JqRUb5RySbSurW/HMZlSqhPMUlbC U43RA1OLJ9wm
6pZRdsPUhJ1eDraaciZMBpOjXcrIsaFAEeVxTBbPskafQUnZywEXamNoDDgl DHFdlkZD9/OM
8bp6tn7xHhPUE2wxDmFCF2mkqOZMtAah7wyXd5iWfCMbxAO1k0FLO7lyQUVM 2RCFxuYQ2UYE
ZV+SVYAoTsgN/YIQSJYZGge0lkmTl14wMMCOwoSSoNzon7VKrhzVWSJpQaRY oWWMXKNZyOps
41mIXKNZMjbhfdYSxW26M/NJKTfiVmWUwYpC0lVvGfgeok73ejTIjobiVBcm tCV781kjaE31
fI6N6flsB6LXURAUGmFDZGUR8bphxoflMDx3Qw9gXijSoOtJiXmRlIXeHVr5 ONXwWk1JOFEi
lIX2FEGeydPB0+04EymfOq+rZeFxQZBrLErHw6TOZy8kztH4lGJGqevMzOdO MGuZ5Fsph6Hc
enTfi08U2QnBiDZBFmvliBK05XFgvdwQy0nWWByeY66xOERRWByWs7I4zU6Y Gxx6HQy9mMWp
RGZxrMsytbe+szaxSXnaVEcoTMgqh6vIdQ53QNQ5HNcph6v9GodDGU45HKGo HO4ALg4cjnUz
h9NezOEQQWNxqotZHNuhLE7rkvZrLE4lMotTO5jFsQ+Ut40xW4d9StAZNOvT GQ5H89hmGI72
V0lc3HC43DgcdApX6cxlHM66fILCwT1Soz0Khb+pquwUqpyjUFZ7PmBDeCTj Cp/PlWvy42nI
JIu7wknLffFvJn8nLPdv4n7zKpd0RhJKRnrMckozI01ERynnE9+P0beXu7gT aW+ddBlTykIJ
CxOUs/fqKuqd3MTbeEnSe/Y9yZ9LTXji4MYcMCvL4MiNjGzestDkkuatMVhN SLHIR2m2Y0mq
W6dXqPw3y946K2Y8cE9nwm+L3CDtncGLdKzupsArwqJpMD/cy4RdNvzKTWnE AvRGmye+I5QF
cV0UlAlhmiALpphek0tbPJGQ7xIzn3KkS8vZUC++AxebGM11hMKELCGyOBXq F+m8RZQJhalO
+tUyn1YowxFygiKhQCOja2oeGWsufM5Lr2J5nNlQOzvaUShbUDuKY/mtLqkd xQ/yfPNHlKgw
SoqmiK3XgjDxam+NZcbsnm1fn4su0mscY7c7O+3KlbyB1xMj7Uyb6OJCduAy w6QtkcOWSO8E
Ep/9kV4BpERDivQCICVZjSlSOiNPo6xSah+7HI6yaBBQNSfL8lux2oNToD1H JjYAhyAywGLW
IudzUlQ5dqFtkbtWI1RKwns1au9xrvAIVBnPY+nBl+8iq7BjUAcvCixm0wo8 dGqbTRPpl8zJ
GmvOvCZ5mA1ELc6zgI8lsq+Gx+FZJcau50EEXB05b/OjC6bB9v4It1CfHGVp ABFnF8PdIwiD
6kObgnbYVW2eLkQpJ6t7mjeUP0hqc38HloxL+J468pab5Qai7sifMMuh19on 8hu+4ff0wum9
JkR1z2wBb7mPxnOBjATZjPnvxtJ0xlKZVk53/GYouHowozSJkQny3h7gjKF0 VYLJGh1enMlx
4qamc1Eq2dJPwEnfvY6AO2H2HG/FirCXzAEsweE+zTctWRDfpuS6rnFRhELL dChrq95/5z7s
mH0ZE7mr6sI5i08S3XeoREavSdRWvf9l1l9P1+dxv6YXELgHJIeMbZU2UALj +h10i53LeHYF
upGrNgW8W2FUbSKUgO9igsW/M5KWk5Sd7G3lhY/Rid7gZ5EuF1Qyo0skS8tJ yqWjubbOTWwj
UtxI2cMc257B46r2Ywbfo0z5W8iRznMHKIsR3u2T5JDkegiP6xlJy0nKBX75 EJ0UZXoWbaG7
XZFlJQN9VbK0nKRcOppr69xEmZKU6NL2HeLOdffqrIu47hNlqKuzbnUExdvN EaZXB3JM8H3J
w85eX/igkj2MP9bV3UkQ7VuF8uqpLK1GCa98Jnx1XTufCWf82uH0nkmkj9+A 7JG+4UvCAm2j
xg9Q6HZb7VBIJgL4PBXFvEnEa1+JXl/bznszE3Ai7jpn/W5o7xXe4BzwxGcL mVsAE2pGNUaM
XOL7zmrkChi5Fx2FvOaej9C3892ip+UKaXNv0L+0BPrSkj+zpAU8fmNZH1ie VUjoH9dXjNsR
kaEvDSb9FAevo2ekx8x0LyNVMm0KffimDWWtKBpannf2+2V+fuMwa8KL1HoF dweqdW2BlNQa
1jrkAwPsTV+bV++Xiub9vPwNchURCgplbmRzdHJlYW0KZW5kb2JqCgozIDAg b2JqCjI3NTkK
ZW5kb2JqCgo1IDAgb2JqCjw8L0xlbmd0aCA2IDAgUi9GaWx0ZXIvRmxhdGVE ZWNvZGU+Pgpz
dHJlYW0KeJwz0DNUKOcCAAQoATEKZW5kc3RyZWFtCmVuZG9iagoKNiAwIG9i agoxNAplbmRv
YmoKCjggMCBvYmoKPDwvTGVuZ3RoIDkgMCBSL0ZpbHRlci9GbGF0ZURlY29k ZS9MZW5ndGgx
IDI4NjIwPj4Kc3RyZWFtCnic7X17fFTVtfDe+5yZM2femSTzSsKcySSTxyQk JBNCIJIT8lCI
QICACTYlQzKQkbwzIUIr4BONWrG+qy3Y+qBodTJRTEBq1FZre73S2lq09pbb Yn1UrrSXorea
mW/tPScPlPbrvd/3x/f7fc6w91p777X2Xnuttdfe+5w4hgeGgkiP9iAOye3d gb6e9as3I4T+
BSFsad8elv5yhy0L8JMICYu39G3tvuHwn/cjJKYjpPr11q4dWzZvS7kcIeNZ hFxnOoOBjoNX
5JsQmn8K+ljYCRVXxK4RECoCepTV2R2+stS0MQRlGcpdXb3tgWeuPtIP5ceh vKg7cGXfr8y/
VEOZ8ks9ge7gcv6DWxAq5qGuvK93MPxrlB9HaFMlbe8bCPaZVueuhPJXEDL3 Qh2GL/3oAVXT
MuF4lVrQiFqd3mA0mZMsySmpVpvd4UT/f3xUR1A6S4+idN6LwA7xU9MpFoqf om0Ukg9AWRmJ
pHyi6HH0a5yLJTSG/4Zs6BPswAvQcsSjj8FbnkRT6C6UgprQ3diCspAVrUfL MQ80PnQLvj++
Pf4+ugh9E303/gy+Jn4I2m9DL6FPQIJ/4zEqR6uAfj0Kove5d1BL/FtIg/Yi HVqC1mIrCqA3
4PtXkOEOdCf6If56/BMYNQVdA/1VompUHX8+/hnKR7fw+1QnxKfR7egoVsfb 4yE0D2WiEeKL
vxH/HfKiFvQ99DjI5MOT/CXIjbah69G92MG9BNhd6CEUw3rSytWonoORlqMN qAcNoxF0CP0U
W3Cj6oTqTPxr8XeRGiWjXJAphN7HZXgleZjXx5fG30KXown0E5gv/U7yl/OP qi6PVcW/HX8B
paJnsBY/i59Xlai+MXV1/MH4E+CRXrQANLIKxtmMrkXPo1fQn9FfyO74bnQJ Wgcj/xhnYAl7
QeNvEAfZRXZxr6P5MNtWkHYI7UcRsMgRdBQdA938Bp1E7+AUnIZX4M34dvwX oicd5DXufu4p
7pc85r8P+vagbNBRGD2MDsN6fhW9hlXQfzFuxFfgXnwP/jY+SSLkQ/Ixr+Gv 5T/lp1Te2MnY
p/FV8b8iO3KiS9FOtBt0+z00hp5C/4p+hf6C/hOdw2a8CHfiB3EEn8QfEpFk ktWkj9xNHiY/
4FZxt3PP82X8Mn4b/yr/luoG1c1CQIh99kjsjtgPYj+PPxP/OfiOEfr3onrQ 6NXgFQ+j59Dr
0Pub6Lfo99R/oP8leCP+KowyiG/Ed+If4B/jn+MPYJaIfTPJElILo/aSAdDT NeQOcieM/hp8
j5O3yG/Jn8hfORWXyS3k+rkHuQg3zh3n/sibeS8/n1/Ar+Y38nGwTInqYtU6 1UHVY6oXVGfU
leoOdZ/6PeEa4TrNv0zlT/1bDMU6Y5HYGPiuBjxpJ2jiO+i74PdPgQ1+Chr9 V5D4JDoLVnBi
N84BuStwPW7AK/Fl+Cs4iK/Be/E38b34fvxd/ATMAOZABJDdR6rJOhIgQXId 2UtuJU/B9wh5
hbxBTpDTILmN83A+bgG3nNvIXc71wBzC3C7uOtDs7dwh7jXude5d7j3uNFjN xs/jh/id/H38
o/xT/M9Vl6q64ftd1XOqSdXPVZ+pPlMTtVOdri5SX6E+qP69oBYWCo3CTcIv hf/U9OF0nA+S
S3OjBXHAGpxHDpEUfjc+DRUZmEcmmLkP7LAOVsV/oiouBnYx0naQLZU4+GTK qZb5CPCH8VFU
hn+MdqsJB5GYP4mi+G1ykn+RXIR+hduwg3+U61H9lLjRYxCN9pFnyVG8DD1F KskG8gCH8Dv4
IHoH/P1KdCfehgfRY/g0XoyvwuV4N/olsXLr8HWoMv5dwmMRL8dnEEiAruY7 0Ff/cRTEFeht
9H7sO7yB/zrEp3F0N1j0cfQ7/H30N6yKfwjRjYNoFIAocwv4+/WIRr1WWGe7 YT06IIJ0qV9D
T9EdRShXL+V3ojPov9D7qiPgUcsgkr4bC/Hf4f8QL48XwgqDVYYOwrrrRBfD inkHvOQYlGnp
K7DStRBLSmBVN6KNqANdBVHv9ngk/kD82viOeC/6GfD+DRfgv+EDsCLGgaMS /QS+t6E38c2w
Di/+n+0CsQ40iT7AdpyNS2A9nFZtV+1THVI9pfqh6lX1AtD2deh+8Ojfgzdr YQbt6OfoA/Qx
1oBtHKgA+UHeRSB7M+oiLdwxVIOdqA/WbC7E8WXKTAahl2tAew/Aej4Ga+MM xImvoB+iE5hg
G8yoHcbXQD8NoOdNQP0IWPBaPAY1HRC189GfYN5GvIiEYTwZerobotYkyPQ2 +iNoO87kKoC4
UIs3QF8fo8tQB4ywEDXiUbDAYVQBkbWW+xfQdxY2o2U4Ez8EfG2wQo0oA1Wo /oAJKoitii8i
Ie4Y7DFxqD8Au1caugj3gxQmmMcUSsWrUVlsLcjwOkJydZNctfSiyiWLKxaV l/lLSxYUF80v
LPDl5+XmeLOzPJluyTUvIz3N6bDbrKkpyZYks8lo0Ou0okZQq3iOYFRQ56lv kyLetgjv9Vxy
SSEtewJQEZhT0RaRoKr+fJqI1MbIpPMpZaDc8jlKOUEpz1Bis1SJKgsLpDqP FHm11iON441r
mgG/tdbTIkVOM3wlw/cx3AC42w0MUp29s1aK4DapLlK/vXOkrq0WuhvVaWs8 NUFtYQEa1eoA
1QEWsXn6RrFtKWYIsdUtHiVIYwChIk5PbV3E4amlEkS47LpAR6RxTXNdbZrb 3VJYEME17Z7N
EeRZFjH5GAmqYcNE1DURgQ0jhehs0M3SaMHkyC3jZrS5zafv8HQEvtIc4QIt dIwkH4xbG7Ht
PGWfLULnlprmvXNb07iROntIosWRkb1SZHJN89xWN81bWqAP4CXZ9W0j9TD0 LaDEhnUSjEau
b2mO4OthSInOhM4qMb+gp47WtF0hRUTPMk/nyBVtYBrnSASt3eGOOp3yRPwk ctZJI03NHnek
Ks3TEqhNH01BI2t3jDlkyXF+S2HBqDkpodhRo0lB9Ia5SHCmjWGMnGINa2c0 i6lEnuXgEBGp
XQJJmj0wp0U0Cy5CI+2LgAw+LRi4Ih1gkVBErGkbMS+m9ZQ/oso2e6SRvyLw AM/pD8+vCSg1
6mzzXxFFqZ/MuBq0T+MRny+Sn09dRKgBm4KMS1m5rLBg+zhZ6OkzSwBAfagR dBtoWVwE6ne7
qYFvHpfRZihE9qxpTpQltDktiuQiX0uEtNGWyemW1PW0Zc90ywx7mwc8+Sl2 EUiNaLwz/0xm
a3Jd5+IItv6D5mCivWGdp2HNxmapbqRN0W1D03mlRPuimTYFiyTXNHNpRMFI GsdawSm/MkNM
C836CJ8N/9TMqTsiHDglq8BSfcTcdkkib9G63X+XZ1zQzGEaj5+hXAzMsilS Rhb7zi8vOa98
nnT6EQ7k5b2koWnjyIj2vLZ6CEAjI/UeqX6kbSQwHt+z2SOZPSMT5FHy6Ehf Xdu0QcfjR25O
i9Tf0gKT6MSLwVkJWjbqwTeuGZXxjes2Nk+Y4fZ2Y1NzlGBS07asZTQL2pon 4Cgis1oyU0tL
Ei2hBgyOHiUa1pQ2ISO0h7XyrIKV28cxYnWa6TqM2sdJos7M6uBTCMcUanwV fGHXF9CypwiO
qYVxUiUnIxUf45BW4GMYOTRqVYxwz2IvEuGwa0d2n/lc5VTlKvPZypVTlagK cPNnkC0odie5
k7Ihw3CA+EziJj+TVehTJPGTMBa7hT0H9ywBaXH1BBLiJ2SxvMKvzoVMGI9P ymJumV8tQwal
E3KjOwfaIMtD+Xy+KldbpF+EylVV+ivQFSTIbVF1arZq3+NMK9SYaETMaUWR F0QMBwchBc4n
apHnJZU6RaVSa7SyM2Oplg6hc2b4tdmE49S8OI6flY1qgah4uIhp9DabE42T gKxzYXY92IM5
PE6yZNEl4mJxj0jEIyQL8UAhSiqscui+2m73gQ5aV045zrX2n23tt0+tqgvW /hEUUmmurKpc
eTrJUlFUOeXzVe5VzfftvepHe+fbKRDMlZV7f/SjUTWpaWp+SvSLBj/ytSwo xg0R3bqGyDxw
zQnExWNRDa89Eo+Bpj4bVfOL6KcF97f62Mft5uCL3ckcp3ou9sM9U4d3xF4i S3BF/k9fwitj
Y6ojn40Qaeok1fze+Hv8naB5E9w6vz2BLPFP5AW6ivK0i9OIZYN6g3aDdYO9 Jf1jQV3GLzEs
SS5Lq+MbDA3JdWl3CveJWr0Rji7IOU7CUZWQAkBO1ulMSGtza5x98/A8cx7h vKZxnCfrcR/a
A+M5MqqqmW76QQlTlX9cZe4/t/I06KXqNHzBT1B/K26taZZ1W9RbtFusW+yh dFVrC2r1lYID
LSwtgRME8mR6c1KTU2zW0pKFZX6vJ1O9Fzuuib4Qi01NXD4qW/zLd7Ree93W 4A2qI1Nn7oy9
G/uv2JnYW5e3PEDyH17dt/+xww9+mz4HKYa5m/mlKJ+8IE+qk9QeTY4tyea5 13Jvyj05d+WL
Qkp9CrEcNUwYX3a/4/nEcC5TnWdYbwga7tLdY3k0c0IvVHvkrFrv1swO717L 3pQbMq/NEsu9
dep63QrDalO9e1mmkJmV4y3Xl7nLMss8ZVmCWqtKEt12Q44+MzPTI2RlygWD +itTdqRuzxvK
vzH1uvxvpd6V/1TmUx7DHnyb7Rb7ffnfz48UqG1uq+z2+K1yusvvsuLfWbG1 VONuzL4tm2TL
9gx/trOAurAtSVvVWICLC3BRAS6Y5y42Y3MpdiNoGzOJVQwCCWIrirqWw3fl OLXGZ+A1K0+f
7T+9ytzaP+A75+unpQGf7zRKuKJcpsZYja3Ym7nQXe9uwi22DhyynYMzp43w TncmyU026Emu
cxPcrOtzdY1O7KxPFqqmWuFfksVWMZ1a+9MmUGb8Z2O5+X73eAJmjsdPjs3L ouWTY66sRNnh
ZGU5DZBtBrwwsz7zXsOdmT/K/GWm2p2pN/C8k87jaUeaH5ViOjNbYRXAyJio XcrKmdl+CuUM
Z7ofwaqV4VrPt8HiPYPhGmWGUhtcWyhlshUoMZZXIh5v4s/whE7BKkPX1lKb DP3aZOjUJpeV
+22ybz5k2XmQQb8mm8u2ydZr423rnXJmlt/kxI3OuJMok+/3nVXW5CkfLZ71 UfWyYkIZiUa6
wPtbUT98WlthG5tAWfFXZFFnqTLlQgZ6+PCwoUKfoq+gaFRfARr6YFRXgSgz Bn5YNMnZVlgO
5bAecrw54HRlflgsVpvKC8tDUKfCYuHpCVwNa6cYOy097d3l2Smpy2OPX77r rXfe+mVu7OOk
Tc29xVK6Fz/f0nz2ozencJFv7frc9CIpNSWpYemG+0ae/cbNC5Yuc1k981LT t6xouOGbv4jA
KnLF3yO3q74Nt6BX5TwJSdijzTMtNq4wtpgERyqyc9ZUZLMkp2CbhaRgOycK WkFvp+o2IdsB
W8TGtQGYtHG2ccxHUzENI2Mole42Ydmo14lF2iKEivAmCDVAIefaOa/Nsj61 KmV/ypMpXFvK
npR9KcdTzqSoUIo5RUopTuFTHM4rDyQicP9AQ6QcIucSFjlT4pOLWipX0h3p bGul+azjFLLT
sAO7FJCegqCcVGqCD9ijFad6klKYTm1UaV5QaZKnrLQsO4nsnNTlpOessG/+ +qU7K3Ti1Vdj
J+89GWu6xpee9lZ+6Zq6BXfh106+/lDsJtDPXthCyyHKmNFBOfceFRaNeJ1q i2pIxRVZmo2d
xj4LrxVNepee3KaP60mVfrWe6MfJsJwnCBhpOaLW5iLRLBaLfSIvOndb9lvI Jstuy5OW4xbe
YkZezNEAqyNkDz4AOnIkVU3gdDQdZM2nzXQ/bu0/1+pYSadbSWMt6KWihM4S tfajhogNNFQG
GhrVliyCWOuGfTp1IfiPTaDBVZ2ED8TexaqabbVtLZddfNGStUW8955ttWV/ nV99KPZniOrL
IZLOhzl6UAnulzsFpyZdlWF1rki7JH159m/Mv0sSFzrqHZd5tzi2em/wftNx h/MR50Tay86f
pOnVakOqVe2w5qjzUlscw+QG8oj6afVLav1z/jfNJCOrZEFSgSGLrrosOTMX MkeGvzfrsyyS
VZ9BV3ex0eS/KAOjDHNGJOO/MviMjAJcimSoNSEXiLbeLacnVbnlNDNkdhpU SPhpXtAbtDRk
jkEbg9DMIFAUUMeTU3TzFng1eWKuocWl368nLj2O67FeNlr9eudqP/a3gW2/ UYwxLs1zb7Lh
39nwahYKOJujNFQ97X0sqraC/s/5EqVT9Fh0GtYtmAH2fxogTsFZAEJBItJG izJwf8vpRIEG
gsln0jL8TVkdWaTV10KjCXgpZ4RzQmUiarT24xxqK6s1lUux2tzgqDlq6rEQ ARaWLyxPbJBY
raZRgIUICBI4GPf94rVnxxu4tOzYBzqzwF3yUOtDxzbc/80fX9rY29CEv7rw g6zy5tpL60rN
OvL7+d+6s+WmZ2Ljt1x/aXq5Q1NfH71x460N6dlS+pq6JbFfWErsOZVLNpR4 y7OCoJX14A1V
4A0O9O/ymmZTi6XF2mkKWULWq+w7HPeQe/QvmV+y/9r8hv199fua95PfT/1E nbwoeVHqCssK
a729RR/SC4st5dZyOzesGjbtVd1guslx0PKodcJy2CoamZXS/BQ+bUnxG0sN tMYxz8+gKclv
OIJ5pAUbWpJ0SAZSJAMdKt0HtjqC4fwJTZJNwLQWNsciA0UM7tVGbHSmCW4I Hs0J862E7fBc
68rTvrOnfahq6mzrKbDa1FkavX1wUAHFw1mFBdiEZheWq6jiEZxQwBz8gtif jO2rQ1ft3ta4
BcKa7+yr78f+hK2nX3iHfFiyrun2Q8ceuLy36IcvYC9sQwLOfpSeSVbE/8j/ RfU6KsDH5Ysm
ksYzDue+VMALyUKqLdmWavcFVcHcsPpKQzj3Tf0bHn2Ldr1xfWaLp1O/xbLV HcrdWjCccUPG
3W69xcM2VZefQjkIm+iazDWe5zOf9/D9mf2eqzOv9vx75r971D5tviErM8tT YfB7GrQNhtrM
Gs8VhqBnh2Fn5k2GkcxHtI8aDmYmi1rRoM5Uexxah8EKpxqP1sBj2wa77JD8 vXbca99vJ/Yj
JIjSYEnqnRWuNJxWmMKhS9gOvNwp+RP7bxveB0EqgiexBv8HLzsrzHBeKMwX 7R/FbdgmJ9v8
tgYhx+uc78o5YI6YibkBf5QkoWJ6ciz8xbrEqmpY1zyK5EUtsJpaqYkA+gbg DDnFtttTCTgA
ywp2WLbfsi01E/SRlrEU9HFcgX+IJtOd9CQAKL0StdDScdlkqTBIlgotSyZa 9x7sQ1BnqNDa
aUqu8M39tChHpNTF2sUGes5r0C431GTWex7Rfj9Ti1pbEr6i7ND0wJrDvnR9 lkr8eVu0lW7R
vEdCK7Dk3L/3ttsvutQ/8R9te3d/9H0MO6gQO5F81VVXLy8qWIQjrw3dEkfP xT6IvYF/m377
jTvW+JenWeYv2bDjib4Xt/zlp4b+9rLMCn920ZbuYzfvensbeD74lzG2hl/L e1Ey9j9lyVXh
ZOoedr3Jr7EaTH6BZmqaqaxQR6jxXM7FfvBr3qAzqs0EJav5ZMJzHHSnTm6D A+Y4flK26EyG
ImMuklKLU9tSuTOpOJWdwLx+CmVL+jx/Klyi+ApOtjv8uzm6ZeXIImEluOHS kgVXIDl9oV+x
dsqPlB3cB5coyOGfcony+SCQms+egjDaWlQF9ylzJYaNuwJBYLRUACJAdASd 05MRfFobImbY
3hbD9hblzehI/AzC8TOjnBmzWxPzDRU1sSGpKtmc7IDMYq9SjcfPjEGBwiiU E321JLuTk91Y
MHKezJwctuSN2Bf7BHtiN9Vk11y2u3HNKseyss1fdfDeKSP5y2dkonXzRZlJ bxsGW6j2b0eI
b4HIaEX7ZbuQbEveqOnU8OM89mv85lpNrel9s0pNt5+MJMFoUOt1OjgBEOy1 IlnK8j8JgkMn
TjvVqRVOm/vsB+ykz37GTj6yY7tW59Ub4SgQNRj0lMIELAf0+AzsWg5bVWXi QDDgm3MkgJM+
q2A3dXYxrTpNnRXiGhwB/CyyqVOT2GmgtGQeSeVbYu9mralYHvbR88DNr7d+ a7WLzHs8uKjx
umjMxXsfeKqm87qv0ZnqYaZt4Gc6fK98c67wE57cK0zgt/GvhDMGlUZw8nZ1 rrocLdJcglvw
1/GQoPVin7AQLxbq8QrhXt0n6k8EMZv3CvlaP79YW8Ov0r7Iay7VNvEt2g6+ W3slvkp7J3+3
cET7K/5t7WdaA8cLgqi18hKfry3lq7T1vJjKO7SLtau027SP8s/wr2jP8aJA zWqx+/nx+Imx
VBuFJ+VUfZIf81qBR4QBDRI1HActh/MK/XHqrEBksmb5OS8RUwgRVWqdTmk+ o8MUlW3QrPMi
VQpCKrVKBac2jSjqkGqcdEfVpSIAWacJrjbsN5w0cAaOVpNSHa22nKEP2syI +j2Pgnrq9w52
eLBDYDvtWAlnB4ahooSNIKMPDXz9088NEhimNwpEs0Q8eloriW42wShAxG4Z 9MLQ2t8/gGlW
ijHzZuzmOD3eHbsdX/bsS3hF7F58U+zRE28RD+Fib+OsmDj1c7w89gy16h3x d1VZqiOws4/I
iwSNIApmm8YqXqy5WBQuEzeY7zbfk3Rv6v3WR83PWH+d+o76nFpn0OsxIkJ2 sqjXSYbXYJMd
JzfLmXJaY1pbGteXtieNSGnFaQfSJtP4NEzgAuEodkw6OAeQjTkXDCWCAPXR ldRjz7Um3PU0
0wM9wfYnu5MgdNLFuLAMfNVsJMpx/Q6cq0u+7eu79jhxbvHVJ574xZu7UjJU Rz7747FFG7u3
3v0E5/ssFvvkrbtbAvev33VOWZ9qB8xPT+yyTsd5NV4dxzMH2COL6Yv9Wmnx Er9Id1YFyg+l
z4dayNSiRvsH8UMtz4tabTJJ582iS+shBbwEF5itpJMPildoh8mV/EPiIe3T 4hHtOfFvWut+
fp+4X/uS+Ir21+QE/4b4pvZd8h7/jviB1jAsXqm9ltzCXyveot1HhGZdkFzB bxU7tdvJDl6o
JQ18rdigvUxzmdisFezaIqOfLOb94hJtlVHgiJ5Xi6I2lTh5mygoG5QL4rZW VOkFoURt1JfA
vcTMEU2jxuDX0YzN0qgz+DWyMcevoxlUPSCbKaLTcHBywkTQIg0NFlWV1NMS G2ArLjpt/uVp
WpE2Hl8iF8IoEg/+X8LxKRzHE51WW8IRQAl0w+l5QvRarSgKGhd1B2wYo++C jpBFEIcnxy5v
9avYw4x1TX5ViSALuzVYc4zuGcd0kk5Pxski2CsQkoEQyUCESuBsrqfdGKi7 QJCD47W58j/M
lU6Heap/qr/SaTfDURsqzKf6UWLHqKoEac9/9qY8Z0teBxuCJn5yVCfRh2qt 7JO4tSNff2tp
El0x4GfYjZNux0exFs5uz8ZOx34b+0Ps38C77Nx7f6vnr/l0F03gU9+GSPiw 6gmkQhfJzkYB
bmhghmwV0vAqp0A4CSc2POru6gUTs+6+yhyjYRmwKubnpSwOfxvnkpOqJz5d /jH111LoW6+a
RBm4St70tP0wXKp+yr9sP24/7jju1NSk1aTXZGxw3M/fZT/EP5KuUTslBFHX eQlfY69x1Dg1
WfYsR5aTs3r5DfyN9gfSHkh/IONQ+qEMjYXep6SMBRnbM67L2JfxRoaGXbas Kan+DGLWmzJo
vCJUchlx7LmSxeqHOTw4RrDeNI43yB6XvggusjLU6x9JVoknrFa8mu5eLtMJ 8zBxzHv9hcQh
+yw9wvVX0m0JjnC+/lNwHYcgBf5VgZNKfYnnIRnxyWhSBZUhamJANporeI25 QqVJAphUcf5R
TCemOdJIWjKmb97prd5SQY9huLVhTfMxOKOeROmQMuInleemra04yb3Qwq5G 7LokZC/MgjM8
HMYENa8WeP1nOeYDH/7QtzjY0typib3nwJqX3vzk4pWlsXMXW7Eq9umdWPzN aNVl678avOJr
6e/99IMn2sc2V59t9NJnrNVwH8qBXT8FpePvTSBz/BO5Xldxn/gtw93mg6pH tUfFo4Zxp0aT
gi8hF6vrtavnHTQcVh92vqz9if4N7Qn9J8LHBkO6KT1VhptgqmxM8ptSn0t9 LZVjhyzTvCoG
jTaA5FZZbzJaGo1tRmK0W+jp+7AjzY9LLcxIGZKfwcy8BPQVJqA9nUHZBNfm A4ntiKBNFgt9
FMPrLHZ6JMnSCciNi1ITF6WieZvm9c7bP4+fZ3JrZDgwahwZyq3XR+9NrfTi BHtW1Wmwn5xi
l3NTquzyPBNkcNW20zs5M1jVFLOvBYQACgsVBogsypWcwug06VnlcRljQNBg qaBCR20UsMd+
rFjtrvLRfa6FPmOraGXDG2XQkpEOaqTDG2VQFnt41sIewsPirgRfY7sJavVh eo2TYAOh9zjE
udnekpw4pdvI37B94ftPxv50fQinvH4aW9RTMndNYNnGHO7KDV+prMR4bdG3 Hnz69t/CDccX
ezl27KqbL8FdO3fX1AxSX2gCXwgoz9v3yYWWFnWLtsWSeMp+r3Cf+Iko9s3b M48s5vz6xal+
xwquVr8itdZxnyimsMfsOid7LqYTjCYwlNaWZzR4MX0AZDIh5230mbsbTNFc OXOD7T+XeNKO
Ek9+Zk54Nc2yIaQOaUOWxFN2dWuL212mXGAtpSU2CHRzH7Hzgdin1aMbn4l9 Gnsheg12TFmK
ancGbrxua8feBy5vwTkwXyN23EnMn/UdurTn4YeeeXA/CBiAE8NX4T7rRG/I q24Qb0q5ybof
3at+Wfwl90vdXzkxW8zV5xryUvKsQ6oh8QY4GiYLNrjq2vJIPkRJIVd1n+oe 8RXuxzpVFV4N
wXOtmf6p5RkaMenTbHvCgbUGgHijbLMX8howr8VvbNhkwqtN2CSn2v0QkXLl TEuhljN9ZNyA
PkKsK2dxOk5PzTkgYJPgEooFThgnt4yl7VKumf3n+fEUfXZ7KnH/B6SVaZEG DhW7r8Gd3y3Z
lOet6iQz1RtfhV3LYq9+GHs7diPeif3YcLCjJPYb58Pbv/eznxzYfoikXX7m fXwb3oh78F37
vxqpH7jug9jfYh98eDf1lLXgKd+CqGGA09Y98iXv4Xc1Hyd/nMq/TN5TEYtD 5RBJi3lD8gZr
i/0ecq/6Xs09+nHxV+Q3qrfFX+nfVb2rfs9gflTzM/Iv6hc1L+lVQ5qb1Ndp uCTqRFqdjTpR
Ci+kVAjOtrQ+iJVGNzrvwUfitUzCXegrmX7wFzFk3gLeErLzmL6SgSut3wIX A5SagjyZWd7s
lFlvWTsy9cCfsT/2yoffjH08gqW7e3ruuqun526SeQtWj8Re/ujPsRevix/8 zsGDBx44eJDu
ZUOxCfwwpn9dVfW0qNGptcI4nienqR/Ai+D8MIC9QhZ9opc4Jjv0W7crr9hO TYGcYKMpTK+A
FRULipPdELfVQs7CheWeW7Ajf2hj+fpLyI3Y8crOW/ukcPrm9VS/d8Cgj8NK pO83hyeQCOGv
KklbJYuNItkjRsRJ8bj4kahyiW3ibvEAVKg4tYBUPAfrTkbH0UngbCVwC1bB /qAlghfz7L2K
O8vPOzTKfWv6ckW/U7CpcSozPbcmHt0N+JLpOQLSHdgBFyoHfxjzsc8+XcF7 P32LnraphKAR
DmXJqXA60hLvHA3wMxqYovNfUFya6Ih2RfW5GVbeMVh5Ejoh1y+a1zBvg7Bd s11/veY6/fW2
69JEtU2dZrFZ0nKTcu25ztx5mkt0l/NN4kbdFfzX+J32sPOw8bD5ZcNL5l+b 3zUbuXS1hBKP
Aypc0Hs2wdiaXqgWLXSxWRpWJ+NkutKS6UrLtxaaOISx5NgE1TmWDcQlSRxx SpnFmSTTkXNA
i01al7ZYy2npinPv2n/eiqM6M5893c/ekSZWHiy800n0jWm/jx4MlMWHy9xJ sPoys0iZHzbv
mYcp6lQawBaWl3FVZFdrbP/Tf4wdenxy4tZf4CRcWhB7y/XYnhfeee/Z1qM1 JO3jqfGNNz2P
t77+Du7YtPydn5Z3XXXuLxDjPl3uPwLzvAdOWNeBl4hoQK7SqHi1KluQNMWa 5zS/0/BFmn0a
otEgjgd1EBFphCr1ajVRr+XgJgnT1RXriI4X5x7xtAvWzT3itdL7DBSYi0xV sgfBAJmbMIum
ulm6hzs9tYR0TD2gOvJJ7OFPpm6nFq7Ge0mIHAD/KJHd9PkaweXsUC9xxXBt qVUlLpUc+MrD
XXTUU60rzX9sRUWnIXpR16smuXjvtL/AmvjjVr0n/MNNpsq/ahwa9ldx3/1D 5exfO6PYGrgd
vQ60ovI35IxPWBpbhWpm/5Dwc39Yl6aGKtXLoMc/oL38IComh5CLy2D4ckjr SQXcmTegFYAb
geZ2gHqgv0N9CPA/oG9DuRRSNeBNUB8AuBZ4hiDdQZO6Am2GunugX9hi0UL0 n7ifS+Ee4q2q
DNVR1VH1n4RDGpeoFXdqH9L+Qvew/jGDxzBpXGTsMz5vPGm61vRz0ydM6jQ4 T7O/RYDcjIoQ
hAn1KnMvKJDWbuJ3IvrXEEwRLOfYbLWsxDEuuKkoOIeasVnBeZSCOxVchez4 6wquBvxOBRfQ
j/DjCq5BXtKn4CIaIXcruJZ/gZMUXIc2C79XcD3aoqlVcIP6Kc0hBTeir5i+ OmOP3aYjCg7m
MFcoOEG8eamCc6jAvEzBeaQ19yi4CunNVyq4GvDrFFxAm837FFyDks1/UXAR 1SWpFFxLAkkr
FFyHFiQ/NvNfH5Qmv63gBm5jiknBjWi+LQSSYJ5q3Wi7R8F55LQ9zHAV1Gtt zyk4j6y2Vxiu
hnq17XcKziOL7R2GC9Quto8VHGxhizNcA/V6e7KC88hudzFcpPa1lys42NdR puDQj6NKwcG+
josVHPp07FdwsK9jTMHBvo6fKTjY1/EHBQf7Oh9VcLCv81UFB/umXabgYF/J oeBgX+lrCg72
lf5dwcG+OXcxXEt1lfNnBQdd5STmqIN6S65DwXk0L9fHcD2dS+5yBQf5c9cw 3Eg9Pzeo4DxK
zx1iuJn1c7uC036+x/BkqvPc5xUcdJ77MsNTqDy5byo4yJP7LsNToT4lDys4 j6S8VIZbKX1e
mYIDfV4Nwx2MvlXBKX0/w9OoD+TdruDgA3n3MzyDypM3quAgT94zDHcx+lcU nNK/zvAs6gN5
7ys4+EDeXxmeT/WTb1Bw0E9+Qs5CGgny8xScn8Y1TP8zOMifz/xHw+aVv0bB af0miusT9DsU
nNbvZTizS/6DCk7H/T5qQjtQHwqiLSiA2gFK6PuQmlAnw1eiXtQDKaxQSRCJ e9EA4DQPQH2I
UUhQ0wX88wGrZfWB/8OeimYkk9A6aOlCQzM0g1C3HGBivAWoAr7FqFDBSlht NXB0AVwLPFtB
hjDjWgv9DUIaQNsh7wCqAWgPAOUyNkbHF+RcPIdGmqFajDawXgZnpC6FUYvh K6Fc6CMEsg1A
yyCkLdBX3gV7+Xt9zNIWzpGraU79E0yzVG8d0Ec3wAG0DeroaP9znUtQGwRt hUCmMJON6kiC
MqUJK72uB3tIqJHxS8jLxlsJ+WoYewvTfQDoKV8QeqXaHmactLf5F5ApYede GJfK1Ae0O/4u
VZD5F6UbZlJtnRk3pHhvIbNyL9qsSL2KtXQyLQZAmoIZ2QdYS4h56jrIh5jU CYskvGoR+FIN
kyTMtDyttwGQRQKqgOKLCY8KMd13MA+jPtfDxppr93alrwCTjXJ2sx6p3J0w fjfrMaF9iUkd
YOO1K9ZItFCpBxV7BNgcE3w7ZuwfUry9T7FgkOlmkHljYnbTFgoo8g+x0SQ2 wlyppi1PdUPL
w6zvzjneQGl7WV+JsafrE9oOKxppVzx18At0YegzyLQSApjou12pGWKaph41 69O9bOUOMI12
MX4qKbVnt8I1PUI749+ujBpSZppYj7SHWS1sAUraW6J2Vq8hRbu9ykxCjH6I lWatOsi8tItJ
d2GfmI6tgzNzoW3drL/ZPmi82KZIG1D0386inqSs0mmddbCxt7LaBD9dYSHF hp1s3fUpPtIL
OV3R2xVtJ3qYjfYBZquEd0hMh+3K/EPMal2Mpo+tvYQ39jDOxEzmendoxrPo yr9SsUw3k4b6
5nZlbSXiTteMHN2sNOu94c/tSIOfm1+7MsZm1sMQ03THeb4ZRP1QP61Z6tvt MzPcwnxbYj5w
JdPtIPO78Ew8SVidyp5Y72ElaiRW06DiZbPRM9HazSwSQDsZf0Jq2m87a531 tMToHUxbfWyV
7JiZxfTYPSxm0vYA08SAMgZdQwkthhn/tMTTvfcxH+pmcXNatvls7wtD22LY U4ugX/qdz6jm
Rtj5LDp1A0UnW0tdgHUD1sMsFGSlQbSJ+UDC4vNnKP/vjjDMPCZBG5wzyiqI 9E2w79dDqgHP
o/hqqKU7QD3kl7L6OqhZBzn1zYthJ6iD70pW24QMcJuiqYl50+AFfE2aqU+s k4RG+xSdz/ro
P7eLzVpmOiJP23kza90B9EMzY7bPxLaEP8/uR3OjZSJyzMbRxPoNKTFzUFnT W1kvwZmYSFdr
izIaXd3blVi6eWY3SowZ/geamY6dwzPRKaisuOCMTw+w+BFW1vMWxR8vpK/p VUg1FpzTy+wq
/uJ4HcoOSD1wM4uMCak3K5bpUXq+kIVy2KzO11QiIn/RK7448nRso1EswM6i ARi1S9H2oBJD
/t7YVPvroWY2zu74gi2Cyilj7pkrEb0DTKI+ptmQctL5Z2wuKb7YMye2TY9L I0kH03Rozi4y
MOesXDBDPTDHb2f37n+sKSpdN+t/2q96z+tvmNl/G7Pm3HPodHycpewF2sQJ dYhpnPbfOTOf
hFxzvbtbiagJ/SdWVZ/iH7OR93wf+kczmvWP5WzuX7Tc9NmL7jlB5YSWmE3i vNfOrNrzORsM
fE7fsz0PstPqEDv1J/ah7exsNIzmnq7+99af7m9AOf+FlDvPhU5xX7RjQluz J9Z21ucX1/G0
xQKf0/WW/5a0s1r+4gjn7/fnSxRUTrFh2Hume6D3k2qUuAnkwhnej8rh/iVB vgBKhXC/8rNb
Fn06sh41KJTF0LoAWvwKXg63sXLGtRCVwV2AJtr7f2+v+5/vjNNtRZ/T3sx+ 2LSjL7gl0B6U
vi81dQallb09vWGokmp6B/p6BwLhUG+P1NfVPl+qDYQD/xuiItqZtK63a4jW DErLe4BvQUVF
cSFkJfOl6q4uaW1oa2d4UFobHAwObA92VA+EAl3Lers6pvtczGokWrV4Q3Bg kHZdOr+4WMpd
GWof6B3s3RLOmyWZS8FqC1lfTQw/KDUNBDqC3YGBbVLvln8ouTQQ3BoaDAcH gh1SqEcKA+n6
dVJjICx5paaV0uotW+ZLgZ4OKdg1GBzuBLL5Mz3BnHu3DgT6OnfMrQpKtQOB 4VDPVsobAvUW
Smt7N0PXq0Ltnb1dgcEC2vtAqD0UkNYFhno6YCKgqkUlNb094WA3lW1ghzQY AC2CokJbpI7g
YGhrT4GUmHs7UAVC0NjdOxCUOoe6Az0gvtTeGRgItMM0oBBqH4R5BHokaNtB 5x8CtffBBIPt
wcHBXhiOTigA/Q+1d0ohpSs6+aGeoDQcCncyNXT39nZQboqD2GEQpB2UOjhd Fx4O9oRDQaBu
B2RoYMd8iWm6d3twIAD2Dg8EA+FuaKIM7UNg80E6GLVjcICJsGWoqwtQJisM 390Lg4R6OoYG
w2yqg+EdXcG5mqDeOkhHCQ50h3oYxUDvNug2APK3D8FACQN2hAJbe2n7cCfo XOoMdvWBRnql
raHtQUbA3D4gdYE6pO4g6K4n1A7kgb6+IKixpz0IgyTUHaLKkoJXwmS6g107 JJjbIPhOF+2j
O9TF1BtWFtKgMl47cGwOSkOD4FJMm8H+ISrsUDvVv7SlF6YMPcKkwmHqJzD1 gSDYPQyuAWYa
BJUx94Rid2BrYGeoB7oOhtsLEkoD9o7QYF9XYAcdgnL3BIcH+wJ9IBqQdICI 4dAg7ZiS9w30
dvey3uZ3hsN9i4uKhoeH53crDju/vbe7qDPc3VXUHaa/1VPUPbgpQCc+n1b+ kwzDwS6oDTKW
Vaubltcvr6luWr56lbS6Xrp0eU3dqnV1UvXFa+vqVtatajJoDdqmTlDrtNao iqlNQFCYQZhp
9AJLjE2GOjKd8+Yd0o7eIcrZTr0N9MzWUcItwTmYj4J9Yfn1AHlg60AwSD1x vtQCbJ0BcIPe
zXQZAWf4PGGodw5TdwqC4YJU0wPB9jDYeQvocVYuasLerUFGwkw8wwemAe/d PBSGrkHMXlhR
cyaUMzgtFDjyjCpmmKm3SdsDXUOBzeBhgUHwkLnc86X1Pcxnd0zPAuakRC5w 74A02BdsD0HQ
+eLMJdBiD/M2yhvo6AhRnwCvHGBRuYBWDzDdstX9OaG6Qt0hOiEYhNEN9w5s G0w4KfNHVtk7
DAF1aHNXaLCTjgN9JdTdDY4K8oOp+nZICedVNHT+QEwfy7fMTo5Gr/6h4CAb BuJee3CgR5nB
gCI3Ix7s7B3q6oA1tD0UHE6Eqy9Mn9KBJYMQATpmQ9zMHEEsFljbw7M2phML KFJvuXC3TOQZ
BmXdKx3BOIHwYkqwfl01bAK5i/zleVL5gkWFxf7iYlFc3wCVxQsW+P2Ql5eW S+ULyyrKKgza
v7Pq/uFipKUiRTy2DuG6GlQOSfSoM/cxy/ktYTSEDXA0eP88mtnaLej8x9yS UlOvPPSY26LU
cTdyx7gfcc9BPjq3/bz6L18bfPna4MvXBl++NvjytcGXrw2+fG3w5WuDL18b fPna4MvXBl++
NvjytcGXrw2+fG3w//Brg5nnByH0954sJFouBZjw1l5WM3Qe7RdbL2ZRY/A8 qum6evQ+lLeh
c0D/PtSd/9Th/LZpnunzVe8Fe5xt3cCwuTSJmktYaTt73nF++/ktjcruO8Tu fr1sVc6lvlD7
XE31/l0d9vIufim/hK/hF/KLeJm/iG/gK+ZSX7C96YJPdGZr678wn0RNAy3h BUAzt222tkE5
m277nMRz6nES+j3nAS+Z0z5T98/6zT+pm3+6v3/kV8rfy6N4Dvo1usDnh6iJ +xYyYfozUpPc
vWPmlBJ5nLtvzJRcIlebubtQIySCItxKNAmJoF7udrQbEgHyhmjhgpIJioxp jSVmoL8ZSZD2
QOLQAcgxK8uQKP3NY8lW2v21UVMS4/tatNifQMbM9pLG6hTuSoS5INeDPMjF 7QI4D2A7wAyA
m7kOiBRUTnnMZC7ZA+NVAXkVlwphyMVVc1ZUArCWc6I0RjYUNSbGGYrm5pdU a7kazs5ITJwB
4pGL03BCtMQlHeXozzDK3I1joo7Kd2PUnFpyjLueE1AKUO0BKpvLdIzToiJI dCZNY6KhZF+1
nmuCaTaBWlwc/WP9/SyXuZ4odATj1XHpyApt27gMlAqwnpsXTXVNHuXuYGTf pL3AeEujmlIK
xgzGkslqkaP/PUCE+wZo/BtstH1j3kUlqNrL5aJiSASUuhuw3fSPxbkRwEbA TCNgmhEwzQhI
MYLUYPmboOUmoCnidqI+bhjtg7QfcB66TI2CBicYkpVbMsE5ODtownwUdIeh 1jkmGqlk9qgl
mZHZx/TGkqpj3CBaDYmA8OExm72k9yiXz6ZSMGZPowx9UVEPqrMlbAGMVmqD Y1w6N49pIoNp
IFLtgjJGJs6FMPkpOU61Q14nv6L2pT+RzuDPFPiqAv81AeOT5PgYjCKPk19Q eLI6nbwDnW0i
v0X7ASPkKHkRthoXeYuMUynIm2QCVQE8AeUOgBMASwEeibp/4hon42MAQPb7 owYrnSx5Meor
UhBXtoLY0hTEYi2pziYvkOdROnTxa4BZAJ8nkygT4HMA7QAnSRj9BODTpAwt AfiUAn9EnqU+
TZ4hh2HPdJGxqJGKEIkKFDwZVVPwRBQlSo1FrmfJE+Qx5ATSH0S9Tqg9OObN cpmOQn+YPEzC
0QyXpVpLHsTN+CwQHUAnKEQW8t1oOe1kX/RZyTVB9pF9sr1czpYL5Ue44uzi wuJHOClbKpTK
pUekajP5BlKB8mDBkpshh/2ZgPdAkiHtIzdF+fJI9RTMic6LoD2QH2BYG+R9 DEOQm2dazzCs
ilyPVkMi0McuSLsh7YF0NeIh3wnpa5C+DukqVhOGNARpGMJHH3D0AUcfcPQx jj7g6AOOPuDo
Yxx9bPQhSJSjDTjagKMNONoYRxtwtAFHG3C0MQ4qbxtwtDGORuBoBI5G4Ghk HI3A0QgcjcDR
yDgagaMROBoZhwwcMnDIwCEzDhk4ZOCQgUNmHDJwyMAhM45i4CgGjmLgKGYc xcBRDBzFwFHM
OIqBoxg4ihmHBBwScEjAITEOCTgk4JCAQ2IcEnBIwCExDjNwmIHDDBxmxmEG DjNwmIHDzDjM
zD5DkCjHSeA4CRwngeMk4zgJHCeB4yRwnGQcJ4HjJHCcJMOj3PHqHwPLcWA5 DizHGctxYDkO
LMeB5ThjOQ4sx4HluDL1MFMGAbfZBWk3pD2QKO8k8E4C7yTwTjLeSeZeQ5Ao bwQ4IsARAY4I
44gARwQ4IsARYRwR4IgAR4RxHACOA8BxADgOMI4DwHEAOA4AxwHGcYA57hAk yvHfd8r/tmnI
1bhZA5sr2YPzGNyNPmRwFzrB4FVolMGvo0cY/Bq6hsGdqJzBYeRlEPpjMIxc Ghx1lZuqrRAC
VkPaBKkX0n5IT0J6DpLAsNcg/Q5SnJTJmbxJWC3sF54UnhNUTwonBWJSr1bv Vz+pfk6telJ9
Uk2k6jRiYHEUQgu6jeW7If8IEmwikFcxrIr4YVw/xNky+PqJX046LX2Uj1/L x8/l4yfz8W35
uFokF2OeRTo46RMQHDfLeu9S1wlI5d6cpRCZvnH4Q5sr6l3oGsfPJkCe7AP4 IaRRSI9AugZS
OaQSSIWQsiG5WF0+0DfLmUqXz0LKgeSGJNEhkNUKpxtLkkaeIAb8yNiPDYj+ qHA0Jxf4jkZz
igGMR3NWA3gmmrPZVS3iwyiHHoPw02C5xwA+GXWdguYfJMDjUddRAAejLj+A 1mjOfACXR3Ne
dVUb8Hrk4ilrkwLXwbwpXBt1bQCyNVFXHgBfNMdLqfNhoGxozcPN6BTAbIUr KzGSJ+paAiAz
6qqg1BqUQw2P1aiQiaeCRCE3BgJ9NIGbeSzrXKddd7g+BPY/gWLBPd6UxnkA r2XTXwLRup4t
/A4QV7ui1VpKD/vDqAIjFD7teiT7Jtf90BfOPuy6zzXf9Y3CcQ1U3wpy38SG iLqukcbJY3Ky
a4+r2BUuPOUadK1wBVxrXa3ZUB91fcX1LBUTteBm8thhVyN0uBxmkR11XZw9 zkSsd+1wya4c
V4X0LNUvWpTot7zwWaoBVJIYvQD0m589Tn18ffk4TpLzhTPCPuFyYZmwRPAI mcI8IUNI0Vg0
Zo1Ro9doNRqNWsNriAZpUujvAfnof16ZojZToOZpzjPcTGhOEv99LMEaglag SDLXQBrWLcMN
kcl21LBZipxb5xnH2jUbIyrPMhyxNKCGpmWRRb6GcSG+NlLua4gIjZc3j2L8 jRaojZAbxzFq
ah7HcVp1fRr9Yf9RjK6/NW0CYey4/taWFmS3bq+yV1mWJlXU114ga1PyOT9n Z5+LZkTubljX
HDmU0RIpoUg8o6UhcjX92f8JYiKGutoJYqSgpXmC7yOmurW0nu+rbQGyU4wM vNkIZCiHAiDT
LEMSJYN4soySgY0SdF5gBzo3BUCnNSAvo/NqDYyOx5Ru9IRUVzsqSYwmG6ET jOZENppDAx4D
vLWjXi+j8ki4mVLhZo/EBMtjHblcQFLoYiRwc3OxjlyYDRYpmiXJVkjKZkjK 2FgcnqVxJWhS
cqdpUnKBxvd/+Aku8+GxBUO7XqT/J4U2T10QUlvk5u2d9siezZI0umtI+V8s eNs2t3dSGAhG
hjzB2sguT600uuDFCzS/SJsXeGpH0Yt1Tc2jL8rB2ugCeUGdJ1DbMlZV2Vx9 3lg3zYzVXHmB
zippZ810rKrqCzRX0+YqOlY1HauajlUlV7Gx6kLU7xubRzVoGf0NPgbHiE4L PtyW5m5ZZjX3
LaUOPbHEbd+VdoRH+CDS+Voies+yiAESbSqsLqymTbDOaJOR/u8ylCb7riXu tCP4oNJkhuok
zzI0rVpEiehv3jZE3Os2NlNXiciBC9tskH5Ysx3VhWrhH5TDLMF3LiUavOAn fKHP0NDQIM2G
fHBLbojkr2uILKS/wCsIMFRbbQvUzZ+u4zhWNyqKdePxSWj0gRA4TIejmA/T 38SRtXDrEsgB
9QGB0KtCeMyZUdJ7DHbw3ZDgHkeGo0XsvkyGxzKz6f0lPFZUloBwP6Uw6nSX 0J9TKQdWCrMT
UE4qBGRf9r7CfeUHsg8UHihX0x8WegQqXY/QrTRa9AiHwr7BaUUAGm5BiZ/q gfEejKZnsIEP
UMTna/ENst9TRJ9XtU/5zUZQ+oxiB5VeB1n34WmDJOoHUYI40egbmmYaUlhY 4xBjYQP+L8Lm
9xgKZW5kc3RyZWFtCmVuZG9iagoKOSAwIG9iagoxNTI2OAplbmRvYmoKCjEw IDAgb2JqCjw8
L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvQ0FBQUFBK0FyaWFsLUJv bGRNVAovRmxh
Z3MgNAovRm9udEJCb3hbLTYyNyAtMzc2IDIwMDAgMTAxMV0vSXRhbGljQW5n bGUgMAovQXNj
ZW50IDkwNQovRGVzY2VudCAyMTEKL0NhcEhlaWdodCAxMDEwCi9TdGVtViA4 MAovRm9udEZp
bGUyIDggMCBSPj4KZW5kb2JqCgoxMSAwIG9iago8PC9MZW5ndGggMzQxL0Zp bHRlci9GbGF0
ZURlY29kZT4+CnN0cmVhbQp4nF2STW6DMBBG95zCy3QRgR1CEgkhpRAkFv1R aQ9A7CFFKgYZ
suD29czQVuoC9Gx/Yz95HOZVUdluDl/doGuYRdtZ42Aa7k6DuMKts4FUwnR6 Xkf0130zBqGv
rZdphr6y7ZCmQfjm16bZLWJzNsMVHoLwxRlwnb2JzUde+3F9H8cv6MHOIgqy TBho/T5Pzfjc
9BBS1bYyfrmbl60v+Qu8LyMIRWPJKnowMI2NBtfYGwRpFGUiLcssAGv+ramE S66t/mycj0of
jaJYZp4VcaKQd8SHHXLMHCPvmSmTcJ5qD8yUPxKrCPlEvKf5M9eekB85f0HO ef6IXHB+j3xh
twK5ZM49y4h4hw6S/RPMy9UfPSX7x3iuZP+kRGZ/Rfus/ugj2V+hj2T/+IDM /nGCzP6qoItd
bxCvGN/AT+uEvjvn20YPhfqFneos/L6lcRixir5v1H6n/QplbmRzdHJlYW0K ZW5kb2JqCgox
MiAwIG9iago8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9CYXNlRm9u dC9DQUFBQUEr
QXJpYWwtQm9sZE1UCi9GaXJzdENoYXIgMAovTGFzdENoYXIgMjYKL1dpZHRo c1s3NTAgNzIy
IDYxMCA1NTYgMzMzIDM4OSA1NTYgNTU2IDI3NyA2NjYgNTU2IDYxMCA1NTYg NzIyIDgzMyA2
MTAKNTU2IDU1NiA2MTAgNzIyIDYxMCAyNzcgMjc3IDI3NyA3NzcgNjEwIDMz MyBdCi9Gb250
RGVzY3JpcHRvciAxMCAwIFIKL1RvVW5pY29kZSAxMSAwIFIKPj4KZW5kb2Jq CgoxMyAwIG9i
ago8PC9MZW5ndGggMTQgMCBSL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGgx IDI5NjA0Pj4K
c3RyZWFtCnic7b15fFPH1TA8M/fqXu26kmVJlmTrGlmysQwG22AMDhZgQ4jD bohNcLCwBRZ4
l82SZjFNCIRsNG3SLE9DtiZka4RxqCH0gSY0zUahzdbQJpCGNElbAm0Tstp6 z8y9sk2S9un7
ft8f7+/3Rtczc2bmzHbOmXPOzJXt7q6eKDKiXsShcGNrpOOGzrWrEEIvI4Rt jeu75dv+OP44
wCcREias7ljTaly1cTFCWgnybWtaNq0O7v6CQ8jci1DBV83RSNP8jlIzQtOu gD4mN0NBy9D3
Rcj3Qz6nubV74wHj9R2Q/z3k17e0N0ayn3AnECpfCPnprZGNHWv1P+YhvwPy clukNXrhL/Zv
hDzghH7b0R7vvh3lJxFqvpbWd3RFO/bv/fQhyD+IkB7KEYaHfowACjRPOF4j iFqd3mA0mS2S
1ZZmT3c4XRlujzcT/T/w0exHGRDcmodRBh9ELoSS70P4gKZDseQHtJ6m5C+A PKAGhHahJ3AM
PYEOomfwWWj1JNqH+tHzyIkq0X+hK9CP0FYkoOVQcj1aDI8Gyn+EM5L9qBDd B7J0HzoCuJeg
q9B+5MCu5IfoarSFewVabUEmNAbNQAtRO7oJX5zsQSvQCf4aVIouRm2oA/cm a5M3J29NPoh+
ivZxzycHkQG5USM8R5IfaX6f/CMaBy1uQ3eiE/hW3VMoDKP0AuZPUBe6i6vn cXJN8guYQTba
AHPg0Tx0BB8iIeg9it7HLnwFNwt6eSCZSB4GLC+qR83oLrQfT8JzSLZmRXJe 8ghywBgbodc7
UR/aC88A+gU6jo2as8kHk2dRBipAc2E9/eg3+BA3NLh5qIISGqg0FpVBTTv6 b/RrdAz78S9J
u8aoKdKENZcnX0V2NBEthdk+DC3/jD8lV8FzNfccPzs5E5mBLj+g1Ea/Qu9g Ny7EC/AyMpa0
k3u4LqSFESfC04RiQO87oPe3cQjvJUZylHuAf4z/UsgcOpk0A0eC6G70E/RL bIKVyjiOv49f
x++SWWQluZv8ifsR/wj/OzECq74MtaKb0GPoU2zDU/AifCluxlfgrfgH+E58 BB/DH5AZpIas
I2e4Zq6T+wU/E54lfJy/RnOd5gbhg6HaocNDvx36NFmUvA4tAnnYDLO/Dd0D K9uHjqI34TmB
/oQ12IDN8Mg4Gy/F34PnKnwTvh/vwo/gfhjlGP4T/hD/A3+CvyQIHoF4SDYZ A4+fdJEN5Efk
v8hReI6Rv5HPOSc3hgtxk7hyro5rh1lt5XbA8xT3Du/mj/JJoHOR5nbNTs0u zWOaZzRnBaP4
fS3SvvzVA4P5g28PoaFtQ7cP9Q31J99B6cBDN1DBh8ph9hF41gK/bweJexK9 go1AOzfOx9Px
xUCZlXgt7sQbgZLX4rvwT9ncf4YPAJXewGdgzibiZXMeTyaRmWQBPJeRKOkk O8itpJ+8Tr7g
RM7AWbh0Lp+bw9VzUa6b28TdziW4l7m3uD9x57iv4Enyet7Hj+GDfIifw6/k e/h7+Pf59zUr
NC9p3hP0QqtwnTAg/F2cLE4XF4qLxHrxFnGv+Kq2AaTzWfQU+vnoPY9Pcpu5 Ku4pdDMp5jPI
b8hvQJ5XoiZuHgFJJbvwNnIl7ic5mo3CNDINz0dn+SDQ+jmyk5wj07h5uBov QWvJRKU3wc4/
Ckk5/yw6zR+Atf0Get4oGPFV5IxgRH0YkTIY81fcBD7EvYSOcyewyN+H/sDr sROfJg9zC0EK
fsFP19SibO6/0M+4TnwleopUgcb+UnsjyPF8/CjohRpchD/jkogj80GKSrl3 0TVoHfk9Og37
eBv6MW7i16CbUTG+Ar2PHoJdMVbTJuQL6fgFEuO3kzTcjwj/CKyuDOdgTmNH 1+J67i7hDHkT
9aCjvB69zT0Osz9KfsbN489qFuNm2AFXoutQZ3Iz2qSp5X+H1yAOL0MB/iRo tyu4Ij4b0qtB
q6wAnbYXdvd+0AMzuHlQ4gLJuRjkYiloiLvguQP0BA8SFIM9fglosd+gfqGG DKA1GjMGrYMQ
/9LQYrQ8+RC6M7kGtSVvReNAH2xNXgE97kLvoVvQLrxl6HuoA2XBznkbX6yZ TY5qZifHke3k
TbKE3H4+f4HaAexCf4HnZ5CZrnkabeffQEtQRfLG5Gsg3XmgYe9Eq9BF6BSs 8iMY4ULuECoe
mk92J2dzHbDeE2hR8uGkD+tRc7IFLUAH0E9FDYqIofCspTUzwhXTLyifNrVs SumkkuKiiRMK
x48rCOWPzcsNBnL8Y7JlX1am1+POcDkd6fY0m1WymE1Gg16nFQUNzxGMCqr8 sxvkRLAhwQf9
F144jub9ESiIjCpoSMhQNPt8nITcwNDk8zHDgLn6a5hhBTM8jIkluRyVjyuQ q/xy4kilXx7A
yxfVAnxTpb9OTpxm8DwG72CwCeDsbGggV7maK+UEbpCrErPXN2+vaqiE7nYb 9LP8s6L6cQVo
t94AoAGghNPfsRs7p2MGEGfV1N0EaU0wqYTbX1mVyPBX0hkkuEBVpCmxcFFt VaUnO7tuXEEC
z2r0r0og/8yEJcRQ0Cw2TEKYlRDZMHKMrgbdIO8uOLT9xgEJrWoIGZv8TZEV tQkuUkfHsIZg
3MqE8/JTrpEsdG6bVbt1dK2H217lisk0u337Vjlx76La0bXZNK6rgz6gLQnM btg+G4a+EYhY
vUSG0ciWutoE3gJDynQldFXK+qL+KlrSsFZO6Pwz/c3b1zYAa9zbE2jxpuw+ tzu8L3kSuavk
7TW1/uxEhcdfF6n07raj7Ys37ckIyxnn14wr2C1ZFcLuNltUwGgaDUSH6xjE 0ClUvXiYspjO
yD8XBCIhN8owk1o/rGkKjaJT0PbGKYAGnzoMrRJNwJFYQjerYbs0lZbT9glN QPLL2z9BIAH+
0387vySilggB6RNEQSonw6IG9Sk4EQol8vOpiIizgKcwx+ksP2lcwfoB4vd3 SDIkQD60EGgb
qZtaCOTPzqYMvmEgjFZBJtG7qFbJy2iVpw+FC0N1CdJAaw6latKX0preVM1w 8wY/SHI/c3/T
E9rg8I9FcqRVNU9NYMe/qY4q9dVL/NWLltfKVdsbVNpW15yXU+qnDNepUCJt Vi3nISpEPByr
BaFcMYxMM7XGBB+AH4EJddOAqAWpZCVYnp2QGi5U4jp9dvZ/2GggeZa2YslI M3Waiamh8/PT
zsufNz3jdg4mDGawumb59u368+pA1JQB56oJSDyqqc2WZyXQUtiZAfgZSB6a QkOdJxEGks2i
CCB/SpGaPQ/Ro8J18KHSOa5gNii67dtn++XZ2xu2RwaSvav8suTfvo88Q57Z 3lHVkBKcgeT+
GzyJ2TfWAa2a8VTYFATN3O3H2xbtDuNtS5bX7oPDmbytpraPYDKrYWbd7hyo q90nIxRmpYSW
0kKakWkGVWNYZB/RMnzPvjBCvayWZwUs3ziAESvTpsowahwgSpmUKiNQxitl YVZGP1THzKqp
HS09bEvWjQNpJJg5zxoE3jicFLOt2dYARBgM6lcyd+irsAZ9iWT+EGCCb4nw dXCKoZhTwjKv
QYKoI0I5z5VjgdeT8kJUgYgMM7tPe98drpD0cX3naVRRcVo6ja22sjL4mTgh bVJxOgdh35Ej
R7i6I0e+evjIEej7HrDSg3AaMoF17wsXRK3r7KRaqrZfKl1q5w3GLIvZjJyu LKAp0tqCWr3J
RJZqJYNBWKodSH4c9hiNALllN4Yft8skYzoNWZLIUjSQPNdvsagAbQfAF2GD 0QiQkfZA8/20
AwDOhqFrgOozpq2AFZwLKZ/68sHy+VJnPc3Po2uCvK2sEOKJE3A9qi+2Zhc5 s0i6nWRnWwGe
PKkkmBv0Z99Dxt46r+XWuo+GXhjahr934J76iydeO3S9Zr/ZFt3b+vTQ4ODj HL7x6hXXpJso
hS9KfsB7+engQZSSceECnUmXn2Fy54815eeXmSanl3qm5s/NrzfV5681xfIb Jmw3XTf2Lsfd
7kdM6XkDyQ/66WJyAQhnUOihjEfz9mY8nXc442je79LfytNWOnAWJZaVrtVm o7HGSONJA8mT
4aUU8jl9rlBBfkkZX1Ywl7+wYJm2LrRaGwutN241vmD83PR5yFpaYsa8VJhT 4izKtrtWjm0f
S8Z6C80V5lvMO81Js2an+UnzGTNnNlKamweSf+mnXDDTgdMlSVhqNlICmwWL BWKzl3MOkEf3
um6ze70iokhuxomqXH2RlzOMjUgRJDCmBbJzBpJ/Y51RIGygpTk8ZSPkT8Hi GfAxowIAfwwb
6HA5bCDIf8VYnDNALg2bc8MoKAXl4ITgk0FNGSiCfrOZLA0OJF/fy4CJtCxs yvKXTCg7VEbu
LcNlTjq3GbRHZ8A1pjDnoHBUID6hQiCCma5UMNL5CC46H8FIJyMw4RLMdLmC RAcXJk4ZkajO
0x+fDkn1nSEoqT/9sVocKh8MvfceqjhdcSpUcXrwFOybwhR+J2ToPoLN5ISd hOppOe6EBHUG
BME/JjipZPLkUvZMKgHxGyOIudNJcZHDAa5iut3h9Ac5QTSDmDqKiygSV960 b+2TB+bEL5y0
7vgaXFy17epNmQlX27Hrtz26UNI5xxzwOlcdbl9R1Bprvj+Yec3S2Y9tmb95 vt1scucE9G3j
LqjrdHXeUB2OXDR+49kvt1wwBb+V55Xy5hVe2HDpggs2wBZcmPyAOw0S7cbL dxOqhsIl5qst
2GLAYbQQPG4O8TavQXR5eTirpotaSn6RkVI0UlKKEiWlyGhw5NXnKGFOS4fr i2iYOMETnqMz
Yp93Vtos55K0Jc6GtAbn3eRu7i7Tg9KDbqPWlKFfS2LcWk2PscPUa3rI+JRu r/4po9FhvM74
LuHMY1Za2i1XWzgLBiEMb5qA6KQaYFo70L3oJDqLdMhiMaCROXph6jlmLZPg MR5YX44h5MMY
YYzDlNs4TCUEX0i5jd0UDc/1puccFbFPrBCJaKZIop4iiWwDihM9JYdVRQMs VsSjvktV1vsQ
pkbqdNfHodNdbO0gDtayQqn+FPxQEejE9Z112Em5j6wltsnAbKcYpKxXmMyV 784887PjQ592
fXj9E3/0PZlx9fJtjz547dqb8Rbnz4/iTKx/HJPNT97nWdfy7CuvP/N9eoe3 DYzBZ6CLDSQS
9ghsu4rCMmG5jrOY/qk5J3A6I92FAt1slEf6FKBLARxVQhJtuJTboCc2QU7L LgFFfXaPLbcE
sM72Q2rTsIJsVhC+FkoEntfwQqluDq8JCOP0tfoNXI/+OPeuID4kYL8QFAPa MmGKrsK0wFTH
1wm1Yp3uSn6T5k7dc8Lv+NeFU8KH4qfC59p0m16v4TieCGCfdFrI6LTagCjY RVHgeD6g0ds1
Gr1eBxkt2BN2Q6k1GJCeH8CWsE7DM804Rktz2TLjG9u+onuHCZsMAUQCGO9A uAJObgR01lB4
IhVbJDE9JTHDoqdii2zMvDBGIyY0KMNoeid7zmpXKDT/42FNUD5PAhsJ9uVc qH4eqAIwMOUS
PBXwWJ1lWzXjQ/yV0mFIXSEzAKKkLdeWcyzeLbBdZarWYZ/uWo7oXCZrCYJO 68Aygf8W1usK
Mst02szMcmDY232ZZZC82iezZHd2GZtCXT3qrMedKBSCFvuQkDzUl10GTDzU 56DJ231SmaAk
LGdkyW6D0jhUh0OsYdj2Fo+1dgeMZreXswhanetz0cZ/2+1R0HF9naK5AOoM FVuLrbgYYz8W
rdv68aMfDq3FB98euu9qzf6vDuDE0PrBJuK7fOhSah1nDi3i/gK6JAvl4/Zw g8GgsRcYAvaL
DVV2QZeZkVlgCNoL/GWGyfaLDLPty8RaQ7PhC/0n6ebx/oLc6f7puRfn7ii4 t0CcnD15bEXB
bMPs7KqxNdk1Y2NiY3bj2IaC3oLjuR9kf+Q/k2t1OoT0AbK7P8+bJjLdIMlo AtMMvegQOgYO
0AC5Mlyk8Xot+qoxXqPekV4cKNYHXK5jTiw5w84GZ6+TLwAvgywtCFO5cNro nmFWxErthVOg
MuN0sDqwkqA+QFYolkDzHzFrBcBX4Yuo4Di7LTiAxvhyDlqOWk5YkhbeZ6mw LADVJVNJs7ip
1FnG0N4sXtqThe1bC7OmloxQQXd2ycJRUlffCYJ2WhoMDX9ADKXBU+fKQc2c AstTf4qmzL3p
BDXjdIINYUYjF1QNmcRUjXNSsdXODE8aUzbg9IDiWf2koWhW95XbXGa8PvGH s22/venA5Q9F
/3Dvf//lzoeuvGLXE5dv3FXrXhQoalpemrgBl791B8Y33tH71drPjm58jMv/ 7aGDLz/73LOU
39XgDWUBv9NRJl4SdvqQNx1US72mXrfUEOXWadp1UYM2ndp+ulQrAOHFFMr0 0jjX9qbmC/s5
Nz/RNjVjoneGbZ57hneRbUXGYm/E1uqOeDcKG9PPkXMuCTmwxeR0LnQ0ODoc nMNr2SHdKxFJ
4j1evYj2k0epFmaOB6ZugURZJIHGvy0NLIIzbAJfg/mVJso2OrSJej2U8CaK r8vNL0mA4nD7
ILcnECyhaXgGdS582OcolnLEcE5+CTUQC0ROZPwUmR8hepkhVIyGl6kgB9PG GVklpa7QfCnF
zNC8wVOgPkKhc50h1UMFDoZCp5jBAOe1s1z1wBV3lfkNXSmzIaHiImS1i9kO ykScHWSuA3fZ
/oKP9n04dAbb//gaNuOvPtD3bWm8cfA4WWScsuz6Kx7By5wP9GMf5rAR5w29 PfS5JD+5vxnf
dt2s5ofAiqxOvq9Zr3kFZaJXnmokazMJTrmoiFqHlRSSUZGpETZVd2YvujZz B7pL8xj3U9M+
rt/0a9MxdCrzn5lWsy3TmpnJ5Qt51nyv7JtjWma/JH1ZRrNmXeb3bDfY7uLu NN/l3YUfJLus
r5nTkB25Jbvk5gnVU3lljGHj8sokC8K8Jy3LyHmyeJ0UtFyEgjKw0O1zBmUt 1jJXTZuR1bhC
ISuo4fnSOaqMTzOza6UOF6i5eroZgHiUdrx/TA7dCDnFRbxqc8GzslEa8v3P XDD07Hunh964
+0k865k/4oJpB4uf+eEj765o/fN1D/yJkIlnvvwlbvvde3jp7pMvjbv31vuH zvzg6aEPtx+g
cl8Jcp8Lcm9CGXjd3nQXZXkaJR7b0ZR4cQplsAqbqM8wzhEu1C4T6rRrhJhW WyJNtU11THJV
SdW2akeVa4VmhW6xVG+rdyx2tWpadU1Sq63V0eTagNN1gsZ0KVejqdFfamzh opqovsWod3p5
0Qo6xJ7jYZrLE2YSSXUU01yii0mlpJaeZTxlAJNNClCXmwFMZikP0nICJRNE jERJlEHIJ57w
YA8tn0u3AcDmHGQ000OajRlR5vshLzOiTPwRc6ORke495GAGNQxd+uiJE010 0+0A/BpWZqdh
M9Sfqx8pCCl8BCZ2gq2jxkq3RLNEt0qzSsdTi0RR0qRSUGoonak0NFqlVT54 /a/+gB3f++sN
J4ZO7+vbel3fni1b+0gazr15/dA7g0f++n2chU0vv/Tyb3/10osg+1sREoLA QT/+9T5kAqeI
Tp4eVBkA/s7vw/MMppIAf4o/pXvH+Z6seU1zTiZOrezXuTyyjuP8WV4hnSpy EQt+d4akPxbA
OwL3BkjA6XSbAzus2MpTjWR1UZZY2YGIGhSrnVLOSoXESalnJZR6VkY3KzsK WVOnXQA+UzUn
rg8bXYEdwAfWnWe4Ow/rDvIfha20Ow9Pu/MwB9ZDPR8D7cBjpB17UmcsD+3P gUixP4CPIUx9
aUIZtQC8fdom8xveEjsvIYeqHL7qZ1ymptJOO0Z6xm9FAjJyAgN4457sOaOt GTNfXeWgBaVR
JSOHKsgMzq+KVv65E7zo8vJyOL8zlwu2NdWLVC3O2hQ2G+1pQbvR6sE2U7oH oxBs+M2qugQ/
JX0y865plG71W0sUL5tBAAC09b6ih9au/7HvqhfveXSPf8X0jh/11zZdvHkq H7xt/spVtfuf
3DuYS37SsnLqbQ8O/pj0bdy48K4fDL5Jd/zWoRifDfJiQ1l4VfhmozROukCq lvgKOSETnzzW
6M8sSi/KnJnZIe+QtVOdUz0XOS/y1GkvNa5wrvCs1a4zxqRW5zrPIfkV+1uu t9yvZJ2yn8o6
KSdlh58PSaH0SfxUaTZ/kbRces/w18whyWA1g6HzUulyeM0GZM7IOabHkj6s b9D36nmZbXmZ
bX/w7v8cNlCx0LvU/Bcpt/8jtveZ/08Zpadi56fM0nfjtGJSbAsgdAh8ZXwv TuCzmPfhCrwA
DAZ1a5gUYCYFmEkBZhoFM1WM6V0NO0pRVAftHLOrCmANPVRl+OaUuvCIBUwJ gDT48akRp0a9
foIfK+Mxqgdnpgt1pqWY6Ui3E+q+5Fq5Ubt964NTb23edmxtz4nvLb9lvPWh 9Rsfe7g7vnso
pvnF9kWLbkze8cDQlzdcPHXwS+7BI4dfeu2lF99Ayp7n/gw8dOArw2kaTkgj u6QB6V3u/bSz
3Lk0gaeHnHLY9JskfId0zHXSlXTxstZutjtsXg3lg0lvMhvNOa4w3dcuxgFD HoUNdkoqA92U
VkouA7v0MIxhGHSXMNfRYKf0gvznyqY06CnVIH8uzA4ghnDx5JKkAcOPYb6L 6l53yeSShOus
i3S47nUlXIdcvIsjxemOAGZXZVarclXWr96ifRF2so3Ljzrg8Kn7M2oaACJs p/Jsp9IhbDDm
WXrtLYPTfBLxaL4T1HTnyL4sHyz/uJzdgowupfoazj+wVxnvsLpBHYJVp9fq RT0nSEGrYPZg
i96mbtT8zdRRBZaznareeYzaplvv73mr4b6Fkr4/f92F8Yf54I+frOqYV3Tl YJxc19Y649aX
Bw9QLuYk/0HyNXciJ/r9PqQHf80fpOdT8NcA6M2Ak77RpMcccki6kEUPm4cz WKQxaAw22QJG
nBS1VbqqBrFD7BV3iDwCW3evmBAPicdEQaTbhZJSVLYLA/7BLp5ERROrAPP8 FLorVpTuPnoE
V42p4geI+8la5MKTd68edU1JRR42wGmgqnTqY+rK04tKKvzW4mLpBer8hUIB JxX54CSrH9z3
UqCW32qnnh+R3BeXr2opuPbaPU89lRbKy7pvpzQ9ej9pvBGLLUM33Tj4w3kF bqqtuvB9/FRe
YPfAc8K5GgHzog4FOBzgiBjgeSEwgeCd5Cgh5KAGuXU4Q3vJcupXnZL+jArn nYZtWQ7at5zd
C5eVWem1MM6elG2FwE/9agr3PA3cZbsG795FebIFBn0OdpYVvRCeVpiGJR77 +RJ+Fr+EX813
84LOqtVpdaY0q86EOC02MLWG9Lq8HeDZjZHTcBoZY2VCDc771wWSUlwV8M/C 1lECLjABP88a
MT2EhFHH+fm2OYdH0x+EuByMUP3HXadA81DZpctjvjeSXthqvvIw1UJduD5l T8BxpNd0IKBb
7p8eq7j0sukzZ067zJ7FB+/rvHDqw7lzKhq6Bl+lVFiRfJ//K/jTE0h6OLeR a+TjXDfPB3In
cWXeWdxc8eLMKl9lzuzcJVyduCLzkrzr08x+KmDqhakCBFJAMAXkpgA/ux5X kBUgkAKCKSCX
apPZFMozBXNIDpcbmGwp8VcGqgqXy8v8SwMthrWmdebV9qhrk+Fy0+WWK6We nHjgOm674XrT
dstN0pacawK3mm633J6epV5cjMsO2jxBty44FgcRGuu28UUTgygKYmYat8lz vYd4Ag7TuKzc
AA5oHBrKBWYHNFnjdFlZDo55dSGgb71yOUqTenZBWnhaeTzhcYEcs8mgyfZm Znm0osBzRMCB
nDFQJmiyPOPcYcrvW9zYfdqBxrETg42WSFjGC3ED7gD7JeABnAinjaND0qFh xhfpgmgsHkuP
elRqxtKpmWi7se4iWBMO2uh1Na2ypV482KiMWSiOrYa+n8iY2HgpO2/UzzvF nFZ66AiFRo4d
EhziTtHoY7oi8FbY9S+Adezub0Rbgu5LK80iYMKUNw85uUF2Gcz0YOo+0Ong ndTkUfc2J7ji
56aVz1/Z/uiShSumDbUsiq256h8/euDz6zT7LU88krivbAp+s7b38uu+/Mmv h/55J35Darvp
kpnxyqo1fmckVPpAtP2XTbGXN5tvuHnzpQuKi9flTXtqfc/RePeHVFKvSX7A naTfdsML9iE3
PQGnO0uInOYosVBtVmyzl4TScI42zWHEaQ4DbFUrqFFU7Ai4nNRIuZkFdDLb 57Sxa5LhC38n
25zOYavntKsXJp8pVs/JXFEnlVMTlZOkEx9yYud8N2VrOjV47rNu0uG+151w J9282xjQDasF
HUY6WXdMd1LH61JqQTesFnRsZJ2ejqqj/TNtoGMWT0eYXz8/g3qlo674gaXf MG2gHyhvK8oV
vcAMm5uXzCaLiQiiVtBqtGDeeKMHmbRWD6LGLT9/M7gu0DZ7ElPduaC8i63A TwdjOMBcxRWv
XfbAAsnQb7C2LVp087T+/+q/sHXBpDi5dXDPTRPnLFpyyzZS9uVxyh1gUalm P2jvd/dqJlMl
p6H3EqVTSlhaMklJJ0xU0jEBloYDwEOLxqfZqTmh4RdAdFbD+TQdml5NUsOD PtUTTlGxtCem
atOLJ5XsRPgQOgub+dv07RfqSWC0Q2FnDoVWVblD/aonkUy9n/sqrBwG5vPn kZq5f8ybALXL
7qy6lGJ6v3hNv2b/F7OpZN6PEE+/c2lAt4XTYfNrtaKIOJ6+VtTrsgxIy86q mZKtRKzhLpL1
sono3SZe9z++TmRG+1vfIxqnXTr6pgbOKOXsZuHjUyFEjXPqTaJEXyUWW7PT s9VwP5/z1T1c
6KvXuGs1+58Yqnh8yPQEtb7bYCHljH8iOhK+TMdYuEC3Q3evLqE7pDuhO6sT kc6n69D16naq
RSd1SZ3eB/KNRZ5wOoG7CiNBI/B6QQxoEL+Tv5dP8If4k7xwiD/LE8TL/DHI 8XyKW/yw+8cz
bvGMWzzjFq+842OAwjB+mE/8fO35fKJeOmNSeYXyUtjK3grj+q7OEHs1DPza 1t/fz//16NEv
0/kgiCyseTZolBOwZivKxEvDD+oJbwqYSkyVJs0k+yTvJaRGv9i+xLuGNGmi ukZ7g/eQ71XN
a2lvZbyX9p79jPOvGe9lnvQlfQ6fL+Qud5S7q90dvh0+cTzJMY13TCWTTNWk yjTbPtd7iX6Z
aY3pPeF9xxf4Y7OE0zmzQbIgj9cgWpE+HbSUqxijgNUSkKRjVixZw9YGa6+V 9zFv3cfOS1Z2
0Wsdvui1soteKzs7Qek/FL1lNbMTeeqil57FwzPZYbzblnNQPCqeEJMin7oT zBp1J5ilvBxj
ly7Kuxl2x0vvBBeOlrTOeae/drsL5qSc6Z5yGqxlVvVMRG9EVM0ySX2FRG/l R52IuCnRw1e/
1rP21Wsabi/cMyg/3rP+p7u+t/G+6+658csHdmJu+6IZxPzFbGJ7+cVfPnf8 5cN0rwkIaX4O
VsDGZypv/vYhG6UJm77ySldQz5Ov9htNTMY+CBsoZJWNSsWhfrMifIfChRSy hlleb+UwMoLX
hAWLHulNRoFSxmjFhNfzVr16A6K41NbCUOjIEen1I9KroSPUJ6uoUF+fqpYT ggd0uR3n82P1
5CLrpdabrZxVppSFGZxMCfTJ1CXz2bDOl10ieTOVN1nhn/tySnjBqEsTPLoM m4ZHvGDQGcxa
m4TSOLvo1XoMmeYcFBDztSFzCZokTtVOM1dyc4SwOE9bbZhlmWO9yHapZbFt ndikXWPbJFwu
dmv3Cfste22fCF/q8gzWPJRnyjXnWXJthfYpqNS2QXud9g7ux8aH8S6yy/CQ 8Sm0V9hvfp5/
XXhT9wH/geV928fCFzqvQaAzNrJYEpSX7uwGkcU21f/y6M0W3oasWlEbEC0B Mz2ym0XOhI0B
00Dy9XApFTQTCeB8di43YXuaoDdYg/qQtYZfrF9hbbFeYd1u1Vv1PIcwZYfC mBFS17N9Xhj6
uFBxY+AYAI/irsGPJ2znNBowfaJGp9drDUajXrJawVOo3qNBNnkgOTe8Wm8x y89aRa0sWm22
kEa0azSiGfgcMJntJpNZCxstpNfaoTnSEJgrsmNMv9si2nitxWo0m9j0bOAR UI1PCBZsFvqN
Er39nGTCDSb6cpgzDeCHw3p5gR6366/WE/0AWRrWLbDiduvVVmKlOYOkwQ3M 5nEaQH4Kn0s7
t5rtuYx5H9fXuwbrO+HHnTEI8J+H3+FJ6mNTLpvo12CsLN46b3xo65WHt453 fTMBqdxqlg6L
ZqmcBgrTUJ3wLantN8lGmRxInkQYgjl5rB9NsMjgXJ7EU9RPXXWiZAnsOG3y 2G5xAmYF2Uuq
E8XspbI2eXK3KCulNijNYqXQ0V6LTPvWDiSP9YkTaI99aArZr4w03PlwOydr Z02e3KOXeRnR
CvWtI+3t1b22MlQAgb5oTKMv/+pGLHWIbr/Oelxfl42L05yTS9Mghgj7uVwO Vw89vf+RCr74
kX07J12w98mh/qcfGfsGHxy8+5T1RdI2eMdLR8jqL4+TK5766igiyUHQNHVg HURkxmv2YrMF
dAShxxoVUG45CdXIdcxbM4589aVQmiCt0TbrGqRt3A7pBc1zwiHprGTQaurw MrJQajYkpH8a
/2n6pxncP97EmzmDXqcBGwhCBxJrBFgrGEUQtmHXHsmi0Q5VhONoWTp7Hy7z Rju00mVpNNos
gRMGSEdYh7TGD8PgepD92IAwNsCxQ0ZRkVu8kD/Kn+C5HTzmB+gXCxYaD4kn jNwOIzbSvGQB
+0CuFntFIv7Q8vobyjetMiDAjwtOEe4M6fRp5Kood5+uOAV6H37oO+QQfYcM 4kVTxfaCDEqH
D5sPH96qUVLgXnXCoIpEP2/htOL+5FmEkp8xtuOuTvVK3Y8pq7K5tGwumCuI HCn+Lal967HB
u+97E//9ztljvMXU58IHhirJcnz7vg033UDt+HXJD3gfcEoCO94bvhtrjJYc zSRNlUZT4Uv4
iM8H7bwzvdQ6C1PTqKm+2HGxu15bb6q11Dsuc6/VtpiaLW2ONvch35vG487j GX9K+5vzbxnv
MvueIWsKLYX2CZoKS1hzsWWhZrXmeOYn/BeSUUo38wIBOy6IGMy42eDKOWbA kiFsaDD0GnjF
cBvYN5YMzFDTazPm0xlSLzgMqUtOA7UF7EKNClQhu2rrxtZi1Y1V7r6KuQAh 337zOZR6k5i6
AjWOugK1nXcF+tnXr0Bd7ArUrlyBZs0Z/Q5w9BVoKPT1S1B6B1oxYvHZLWi2 H6w8WPsski4h
/5hczu4csfh43MP9XbtXPdkZHvrHLw6sIyVLf7D+8Z/2rH9cs3/wk1sW3PJi fOjM0Os/wbcf
XHrDkZeOPXcELH720CLuI7D4bvyp+l2fTL3dwhk4b4bFJhiEtLDNIhvCRtnC 3jJYMgpD7rfc
riMgrjRhFybMNHv2WLwYLMDb4VZvWZ59meVJPRc2hS3EIudNKJFoBFvP5jC5 bLmGXGOuabJx
smmS+U6rIc+Wl3aho85Wl1aXHrPF0mLpm4T1pk3Wy+2Xp28xbbfeaLsx7Xr7 HfpdhgPS09b9
9r/o37d/YhqUPrcnvVkpk+hIM3g9vKXScq2Fs2QMT1+50LGp9swTLrVYjBLY Iz3iMuxpaQGb
3g4ZixEMTsCgB9dYn0a/ZGcQaAfIK3lJofegl3gHSMVTFqBF2D5AasKGClvY RlbaDtqIbQDP
3GvBY1CVR0+rGLXCsnGCcYGRW2hMGgls/5l7Ci1AG1LR75GvAOMDxBuk+97t YtveJX18KkM6
BUx3u6TTDAJFcFqxQlQJaEd/kQTBSsCslJdrwbKYYdu7YNs/jYzJD5Ah+QEe rc/tybf3lpbp
x5SWmcFPeyq9zDomnX2ho46ebhHoBdDlabnKdwTgAa3uYGodgzsAvuXV9mkF 5Rc6rUGNYaj1
mbdCY3yhd/uHWmbkTLhiWcnQmkekvBzPOksmnzd4Z8/mK9aTdV8+/+TMuiVU azQm39e8pXkV
mZEHvRhe6LZgu2S3e5weD89LcAZxGjz8I8695ufMnNPp8hA5M2xdkLbAGXbX amp1l0hLrSvT
ljtXupa5L/Hc4LyTSBlZHGfLMujSg7KI2Y2qei/7UeoW9mzqFvYvqbebH6fe bn4Rzla+DNSb
iTMtQXowFNihVbkXzPCm3iErL5Hr1aNP/bzhN5D0HXJ9fWeahLKLeFu6nbA3 yaXKa/gSAtsP
NeJtePJLePZj/UN7Dx4d2r/reZz5xh+wZ9OHP/jN0BvkRdyKf/LM0E//eGLo 3qeex8v/e+jT
oaO4BHv2YMMPh96DKV0xtIg0aF4BTXtBWJ9rwUiyiXCqHsDFe9BOsxbSsFXc ab4McRIncxz3
uPUnN7JXqIPnTkvn6BeQlO9+4CCxlgA7i4GLopAuYXzitt/MW35g86bcC/zg PA8tOoA/w+aP
jg9+eaxu++1P/2LINySfN340bMwjeRLR6SWMbDo6A/1OUIS4uB/t5C4zU2Kr 3xD9rF/9zugp
xgczvfWx6PWgKsw+MzE/blPnSOn5tXmm+YF0uUF4iunFv0QGN4NnP+aC3Ms3 H1g+7+jQInwS
v3Ng3+3bl//uy8HjHw39Y0jLvo3PIRTcMuX7Ky3ln2g9WvbbPfe/m5uf+k2f 5ODQIiEIsoeQ
Tv3dVnq2QeL0oflo1sgvBH3t1z4zBcR+L2ufZhm6h4+ji3iEFkLYBvBMCNWa X6PVkFYKj6Kt
kLIA+Dn846iLPIq2QLsVUHYN/jW6BuD7IaVtZ0M7QbMsOQjwddBftlCGGunv f0GbK9AVbOx0
mNdzpJDT8Us184QC4QXxUe0zugf1Ww0ZhkWGV01jTZ+Z15t/b1ksFdgiaZPt gfRF6X9N/6sj
5LhKXUkWmkJvbOi3w4F/hWgZAqumTwKtaOlsbr5CN/gMsZhj7fQsx7FWZqxV YQ5dhh0qzCM9
7lZhDXLhq1RYAPzbVVhEh/GDKqxFQdKswjq0ndyswnr+Gc6lwga0Sjyuwka0 WluuwiahX3u/
CpvRCsuyYR5dbelTYYw00kQVJkiUJqswhwqlC1SYB5wWFdYgo9SpwgLgX6nC IlolXavCWpQm
/VmFdahK+lyF9SRina7CBjQxbefwb0oXpx1TYRO33M6psBmNd9bDTDBPqW50 3sBgDeWI88cM
Flj5wwwWWfkeBmsZ/CyDdZRHzldUGHjk+q0KA49cf1Bh4JHrQxUGHmXMUWHg UcYiFQYeZcRU
GHiUsUGFgUfuaSoMPHJHVBh45P6rCgOPfE+oMPBItqgw8EjuUWHgUe5YBuvp unK3MNhA15L7
AwYbWfl9DDYzWOlTomvJ3cfgNIBtub9msJ3hvMngdNbPewx2sPJPGJxB2+Zh BnsoTp4yt0yK
k+djsI/BIQbnMPxSBuczuIrB4+jOyFtCYS2bvwqzsfJWUtiolK9jMFtL3gZU gzahDhRFq1EE
NUIqo0cg1KBmBs9D7agNQreKJcPObkddANM4AuUxhiFDSQu0Hw9QJSuP/H/s qXB4ZjJaAjUt
qGcYJw5lcyFVxpuIyuCZgMapUBErnQEtWiBdDG3WwBy6WavF0F8cQhdaD3ET YHVBfQQwac0a
GKMFcl3fmO3UUZjy13CngnaiPcaHV1AMM5gAj4zyoKcYzLMLauIQVkOPY0f1 9a9ajmDMAzqM
5H7GKErp1QQtW9n466CM9vx/TmsZSumKYjCTbjYjShsZ8hSnW+11KfBBRgtZ exkF2XjzIF4A
Y69mNI8APm0XhV4plTewlrS38d8yJ4W/7TAunVMH4G76l1hRJlcUbwOb1Zrh cWOq1I5jfGlH
q9RZz2c1zUxyIjCbguG5d7GaGJPQJRD3sFkrfFCkaQrI0Cw2k25G5RTdumAu MmBFVBlUJCnG
aN/EJIvKWhsba7S8NKp9RdjcaMtW1iOddzOM38p6VKgvs1lH2HiNKjeUGjrr uMqPCFuj0m7T
MP9jqpR3qByMMtrEmeQpq0txKKLOv4eNJrMRRs8qxXlKG5rfwPpuHiUNFLed 9aWMnSpXqN2t
UqRRldT4N/C6oc8oo0oMUqXvRrWkh1GaStSITLezHdvFKNrC2tOZUn62qq1S IzSy9uvVUWPq
SpW9R3sYocJqtodb1NIRusZU6rarK4kx/B6WG+FqnElpC5vdt8tESqfGh9dC 61pZfyN9UN2w
Tp1tRKV/I9N2srpLUzRrYmOvYaVKe7rDYioPm9m+61BlpB1iuqPXq9RWehjR 8hHGK0U6ZEbD
RnX9Mca1FobTwfaeIo1trKWyktHSHRuWLLrzN6qcaWWzobK5Xt1bit5pGZ5H K8uNSG/31yxR
/Gvra1THWMV66GGUbjpPNqOoE8pTlO1hfzMktcLVTLZlJgMbGW3jTO66h/WJ wnU6d2W/d6ta
Q9lNcVXKRrSnUtvKOBJBl7P2yqxpv42sdkTSlNGbGLU62C7ZNLyK1NhtTGfS +gijRJc6Bt1D
ChW7WfvUjFO9dzAZamV6MzW38czmdUPdVLClhdAvfcYzrNEadjzTTq2A0cz2 UgtArQC1MQ5F
WS6OVjIZUDg+fhjz/98RNjCJUXCjo0aZD5q+Buz9bAizQPIovABKqQWYDfHF rLwKSpZATGVz
DliCKnjmsdIaZIKTAQ01TJri3yJr8nC5sk8UinaoNB+R0f/Mio1wJqWRU3xe xWo3AX7P8JiN
w7pNkecRezRaWyqaY0SPKvs3purMuLqn17BeosM6ke7WOnU0urvXq7p01bA1 Usbs/jeUSenO
DcPaKaruuOiwTHcx/dGt7ufVqjx+G71Su5BSLDqql5Fd/M3xmlQLSCVwFdOM yqxXqZxpU3v+
Ng7lslWdTylFI39TKr45ckq3US0WYT5oBEZtUakdV3XIvxqbUn8plIzo2U3f 4EVU9TJG+1yK
9o6wGXUwysZUT+c/4bmsymLbKN2WGpdqkiZG6dgoK9I1ykcuGMbuGiW3I7b7 31OKzq6V9Z+S
q/bz+tvA+L+OcXO0H5rSjyOY7YCreKg9jOK0/+bh9SjzGi3drapGVeiv7KoO VT5GNO/5MvTv
VjQiH3PZ2r/JuZTvRW1OVPXQlNUo/l4j42rb13jQ9TV6j/QcZ94q9UiaVDu0 nvlGG9Bo7+p/
5n6qvy7V/4upZ51v8+K+yUeFWiMeayPr85v7OMWxyNdovfp/a7YjVP7mCOfb +/NnFFW92G6w
Pake6PlkBlJOAnngw5egUjhryRBPhNw4OFWVsLMVvSVYiqpVzAns72qVwKPA pXAGK2WtJqNJ
cBaggfb+v2fr/s8tY6qu8GvUG7aHNZs6oqsjjVH5EbmmOSrPa29r74YieVZ7 V0d7V6Q71t4m
d7Q0jpcrI92R/wGpkHYmL2lv6aElcXluG7SbWFY2YRxERePlGS0t8uLYmubu uLw4Go92rY82
zeiKRVoWR9f0tES6Ut1OZYWyWjp1WbQrTgcoHj9hgpw3L9bY1R5vX909lmGN rmQF82pYskuu
6Yo0RVsjXevk9tX/dtZyV3RNLN4d7Yo2ybE2uRtQly6RF0a65aBcM09esHr1 eDnS1iRHW+LR
Dc2ANn64J1hv+5quSEfzptFFUbmyK7Ih1raGto0BacfJi9tXQdfzY43N7S2R eAHtvSvWGIvI
SyI9bU2wBiDTlKJZ7W3d0VY6t65NcjwCFAQixVbLTdF4bE1bgazQpRGwIjGo bG3visrNPa2R
Npi+3Ngc6Yo0wjIgE2uMwzoibTLUbaLrjwHJO2CB0cZoPN4Ow9EFRaD/nsZm OaZ2RRff0xaV
N8S6mxkZWtvbm2hrCsO0u2EijUDUeKqse0O0rTsWBexGAHq6No2XGaXb10e7 IsDr7q5opLsV
qmiDxh7gd5wORrkX7WJTWN3T0gIgmysM39oOg8Tamnri3Wyp8e5NLdHRlKCS GqejRLtaY20M
o6t9HXQbgfk39sBACgObYpE17bR+QzPQXG6OtnQARdrlNbH1UYbARD4itwA5 5NYo0K4t1gjo
kY6OKJCxrTEKgyjkjlFiydGNsJjWaMsmGdYWB9lpoX20xloYebvVTRRXx2uE Fquick8cRIpR
M9rZQyfb00jpL69uhyVDj7Co7m4qJ7D0rijwvRtEA9gUB5Ix8YRsa2RN5PJY G3Qd7W4sUIgG
zZti8Y6WyCY6BG3dFt0Q74h0wNQApQmm2B2L044pekdXe2s76218c3d3x9TC wg0bNoxvVQV2
fGN7a2Fzd2tLYWs3/fuYha3xlRG68PG08D9ssCHaAqVR1mT+gpq5s+fOmlEz d8F8ecFs+eK5
s6rmL6mSZ8xZXFU1r2p+jUlv0tc0A1lTVKMkpjyBicIKuhlFv2WLscVQQaZr XrVJ3tTeQ1s2
UmkDOrN9pIglCAeTUeAvbL82QI+s6YpGqSSOl+ugWXMExKB9Fd1G0LL7vMlQ 6dxAxSkKjItS
SndFG7uBz6uBjiPzoixsXxNlKIzFw+2ANSC9q3q6oWuYZjvsqFELyo2nJgWC PEyK4cZU2uT1
kZaeyCqQsEgcJGR06/Hy0jYms5tSq4A1qZoLxDsixzuijTFQOt9cuQxUbGPS RttGmppiVCZA
KruYRi6gxV2Mtmx3f21SLbHWGF0QDMLwNrR3rYsrQsrkkRW2bwCF2rOqJRZv puNAXwq5W0FQ
Yf7Aqo5NsiK8KoXOH4jRY+7qkcVR7dXZE42zYUDvNUa72tQVdKnzZsjx5vae libYQ+tj0Q2K
uvrG8ikecDIKGqBpRMUNrxGmxRRrY/cIj+nCIuqsV397t2zKww3Ufa92BONE uqdShKVLZoAR
yJtSUjpWLp04ZdyEkgkTdLql1VA4YeLEkhKIS4tL5dLJk8omlZn0/2LX/dvN SHOF6vTYPoSj
ajs75FGnnB7RNmETGP614AB8yNyGVN0S5gbRQyJ12pq4u7jd3C+4gxD2cfu5 x7+70v/uSh99
d6X/3ZX+d1f6313pf3el/92V/ndX+t9d6X93pf/dlf53V/rfXel/d6X/f+GV /nkn/xE4wvC/
re6dr7WJnncnwG4F/kWfLUzCR+X5LH4iX83P4S+AuOy8EagO/le9zGd7huoe ZfXNOIHv4xDb
F/+6zbfDw9/lRclcdDv6ls/uGsuMMZwTnYGQhMAhH8SFEBZAWAnhFgg7IQjI opa0Q7gawkEI
Z1lNmHP23VocHoDkBpbsWdtSxLIRJbuinmX3XFKnpPMWKWnlXAVtqoI2sUQp Hj9TSXMLlNQW
KOqlqd5UdGiGg3OgYxz99mUHxJgcRhaMkQ/dy6WjBATCCWpJmLPtyQkW7TzI 8QhzhMNAVF/y
EIf7TNaiGXqSJGeQDfnIR+S0UkNO7zFbi3bOuIj8CT0J4SAEjvwJnnfIO+hq chJhJEFcAWEn
hIMQjkI4A0EgJ+E5Ac/b5G1kIW+hQggVEFZC2AnhIIQzEETyFsQS+SP9OjCL KVwBgZA/QiyR
P8Cy/gCxhRwH6Dg5DlN7pa+0rGgfA0KFKuALqIDTowI2R9EA+V3f52N9A+Td PXLId++MCeRV
lIBAYLBXofNXkQxhIYQGCB0QBIBeB+h11AthB4R7ISQgCNDmdWjzOrR5EcLL EF5HEyCEISyE
oCXH+mCYAXK0LzjTN8NBfkN+jZxA1CPkeZa+TJ5j6UvkVyx9AdIsSF8kz/Vl +dAMA9QjaCNB
KkFaCPUa8ss9OTZfcoaVHATy+CAuhFABYQGElRBugSCQg2RMX5PPBp08jV7U IsDsQx+y9CF0
vxaF1/rCwVkgYzKNglMvAAiinfLOIAkHb78TsjQK3nwrQDQKXnsjQDQKXr4Z IBoFW9YDRKNg
01qAaBRcvhIgGgUX1AAE0QC55+c5ub7SBeuwPMNCNgCVNgCVNgCVNiCebKAP +pync7u7Lz8f
KHZXODQ239e7H/cewL2Lce/9uDeKe6/CvZtxbznuvQz3hnCvF/dm4d4w7n0a TwFS9OJw/3nZ
srAL976Ie5/AvXHcG8S9Adybg3tlXBoeINl9c4tZUsWSPTPovoL0gulFFphj NlA0G8Q6G7b9
QYiPQkiyXBiQ5DEKckYWTcfsya9Q8uOnFrXPuJA8Cw2fBTY8i05A4IFBz4IY PQud0K+nWyCu
gLASwiEIZyAkIQiAPQYmfguLLRAXQqiAsBLC1RDOQBDYdM5AIKhdneKTbGKF 6qQX0Bx5Fh76
L42ySXY4U/JKIelC7hYvtmThBVnJLFKKHPTXE2xWrXUAm/Z+avrsUxPSzdCR m8ktKBMYsUNN
b+n7PNM3gO/oCz7tm5GOf4yyeJA6XIaCOADpFBRn+UnIq6VpCfKSxyAt6vMu g2aWvmCBbz82
01Z7fZ97T/k+9A4QAD/wPu17Qx7gcZ/vNSh5bK/vVe/1vhcKB7RQciA4gCHZ LzPUfd4pvide
ZKiboeKuPt9VNNnru9I7x7fOyyqiSsVlcciFLb7FweW+C6G/Su8qXzgOfe71 VXgv85UrWJNo
m72+CTCFkALmw2THetmg/izW4dLSAdwcLhBvF2vFBeJksUgsELNFn5gpekS7 1qaVtGatUavX
arWCltcSLdLa6R+TD9HfrrALEvtDADyNeQZLhMZE+UUTgrUEXYQSaVw1qV4y E1cnDjWi6lVy
4twS/wDWL1qe0Phn4oStGlXXzExMCVUPiMnFidJQdUJceGntboxvroPSBNk2 gFFN7QBO0qIt
HvrfWPYhjK1bbvLQNG/LTXV1yOVYX+GqsE23ls2u/JaoQY1H/aEW13lwZuL2 6iW1iUcz6xJF
FEhm1lUnfkj/Xcs+/A98tqpyH/47Tepq93HT8T+qFtNybnplXV31AF7G8JCM /w54IDF/Z3ja
LCRTPCRrsxS8uxS8ALQHvByaAJ5OhwIML6DTMTweU7zd8Zyqyt05OQzHCb4n w4k75dE4LwYA
JxBgOI5e9CLDedHRS3ES0xmK1wsoWV6Ggt3Iy1C82M1Qlo2gFKoo1w+jXM9G 4vAIjlfBMZ1M
4ZhOAk7oP/1EZ4ZCeM+0usYV9F/dNPirohAaEjesb3YlelfJ8u7GOvV/4AQb VjU20zQSTdT5
o5WJRn+lvHvaim+pXkGrp/krd6MVVTW1u1eEo5V908LTqvyRyro9cxaWlJ43 1vXDY5Us/JbO
FtLOSuhYc0q/pbqUVs+hY5XSsUrpWHPCc9hYiMn4wtrdWjSzbtYKJd1DDHqQ 1wZPdt1Mh9Qx
nQnvtGzXVZ794JDsQoZQXcLon5kwQaBV42aMm0GrYE/RKjP9f0Zqleuqadme /XiXWiVBsdU/
E4W6e+I9yFUVq1R+4vCBou4eSnAlDsX/1QfqqhLhSGW8G6HqRP6S6kTFouW1 u0URShvokhJT
U2UGQ9VA8pBSOB4Kp9JCjhtGpGXltEynUxG/yf8eNWW/cdpLnt6Dw1kYTnV1 XCKruoaAKqhR
/3HMfnCXqHmI18EC4ziE46k+2LTVP+6B6HpTobtHhVQ6dKup0gqaxFPkGP5Q KqH/BQa/r+sK
ZW5kc3RyZWFtCmVuZG9iagoKMTQgMCBvYmoKMTU5NzYKZW5kb2JqCgoxNSAw IG9iago8PC9U
eXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0JBQUFBQStBcmlhbE1UCi9G bGFncyA0Ci9G
b250QkJveFstNjY0IC0zMjQgMjAwMCAxMDA2XS9JdGFsaWNBbmdsZSAwCi9B c2NlbnQgOTA1
Ci9EZXNjZW50IDIxMQovQ2FwSGVpZ2h0IDEwMDUKL1N0ZW1WIDgwCi9Gb250 RmlsZTIgMTMg
MCBSPj4KZW5kb2JqCgoxNiAwIG9iago8PC9MZW5ndGggMzU1L0ZpbHRlci9G bGF0ZURlY29k
ZT4+CnN0cmVhbQp4nF2SzW6DMAyA7zxFjt2hglAKQ0JILS0Sh/1obA9AE9Mh jRAFeuDtF9vd
Ju0A+uLYyZc4YdWcGjMs4aubVAuL6AejHczTzSkQF7gOJpCx0INa7iP6q7Gz Qehr23VeYGxM
PxVFEL75uXlxq9gc9HSBhyB8cRrcYK5i81G1ftzerP2CEcwioqAshYber/PU 2eduhJCqto32
08Oybn3JX8L7akHENJasoiYNs+0UuM5cISiiqBRFXZcBGP1vLs655NKrz875 VOlTo2h3KD3H
xPsIeUecSuSEeYe8Zz4ip8wZcsa8R34kTig/53iNfGA+IR+JM9qr4vgZ+cTx BPnMbpRfczz2
LCP2xPUl+2e4r2T/tEJm/4Tid/8c+e6P60v2z9Bfsn+C55Xsn9Je7J9RLfsn eBbJ/jH6S/aP
H5HZP87p8u+3jG3Ad/LTXqFuzvnW0mOinmI3BwO/781OFqvo+waSza8pCmVu ZHN0cmVhbQpl
bmRvYmoKCjE3IDAgb2JqCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBl L0Jhc2VGb250
L0JBQUFBQStBcmlhbE1UCi9GaXJzdENoYXIgMAovTGFzdENoYXIgMjkKL1dp ZHRoc1s3NTAg
Mjc3IDY2NiA1NTYgNTAwIDUwMCA1NTYgNTU2IDcyMiA1NTYgODMzIDU1NiA1 NTYgMjc3IDU4
MyAzMzMKNjY2IDU1NiAyMjIgNjY2IDIyMiA1NTYgNzIyIDY2NiA1NTYgNTAw IDc3NyAyNzcg
MzMzIDMzMyBdCi9Gb250RGVzY3JpcHRvciAxNSAwIFIKL1RvVW5pY29kZSAx NiAwIFIKPj4K
ZW5kb2JqCgoxOCAwIG9iago8PC9GMSAxNyAwIFIvRjIgMTIgMCBSCj4+CmVu ZG9iagoKMTkg
MCBvYmoKPDwvRm9udCAxOCAwIFIKL1Byb2NTZXRbL1BERi9UZXh0XQo+Pgpl bmRvYmoKCjEg
MCBvYmoKPDwvVHlwZS9QYWdlL1BhcmVudCA3IDAgUi9SZXNvdXJjZXMgMTkg MCBSL01lZGlh
Qm94WzAgMCAxMTkxIDg0Ml0vR3JvdXA8PC9TL1RyYW5zcGFyZW5jeS9DUy9E ZXZpY2VSR0Iv
SSB0cnVlPj4vQ29udGVudHMgMiAwIFI+PgplbmRvYmoKCjQgMCBvYmoKPDwv VHlwZS9QYWdl
L1BhcmVudCA3IDAgUi9SZXNvdXJjZXMgMTkgMCBSL01lZGlhQm94WzAgMCAx MTkxIDg0Ml0v
R3JvdXA8PC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0IvSSB0cnVlPj4v Q29udGVudHMg
NSAwIFI+PgplbmRvYmoKCjcgMCBvYmoKPDwvVHlwZS9QYWdlcwovUmVzb3Vy Y2VzIDE5IDAg
UgovTWVkaWFCb3hbIDAgMCA1OTUgODQyIF0KL0tpZHNbIDEgMCBSIDQgMCBS IF0KL0NvdW50
IDI+PgplbmRvYmoKCjIwIDAgb2JqCjw8L1R5cGUvQ2F0YWxvZy9QYWdlcyA3 IDAgUgovT3Bl
bkFjdGlvblsxIDAgUiAvRml0QkggODQyXQo+PgplbmRvYmoKCjIxIDAgb2Jq Cjw8L0F1dGhv
cjxGRUZGMDA0QTAwNkYwMDY1MDA2QzAwMjAwMDQ3MDA3MjAwNjUwMDY1MDA2 RTAwNzkwMDY1
MDA3Mj4KL0NyZWF0b3I8RkVGRjAwNDQwMDcyMDA2MTAwNzc+Ci9Qcm9kdWNl cjxGRUZGMDA0
RjAwNzAwMDY1MDA2RTAwNEYwMDY2MDA2NjAwNjkwMDYzMDA2NTAwMkUwMDZG MDA3MjAwNjcw
MDIwMDAzMjAwMkUwMDMzPgovQ3JlYXRpb25EYXRlKEQ6MjAwODA1MTUxNTM2 MTcrMDInMDAn
KT4+CmVuZG9iagoKeHJlZgowIDIyCjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAw MDAzNjI4NiAw
MDAwMCBuIAowMDAwMDAwMDE5IDAwMDAwIG4gCjAwMDAwMDI4NDkgMDAwMDAg biAKMDAwMDAz
NjQzMCAwMDAwMCBuIAowMDAwMDAyODcwIDAwMDAwIG4gCjAwMDAwMDI5NTUg MDAwMDAgbiAK
MDAwMDAzNjU3NCAwMDAwMCBuIAowMDAwMDAyOTc0IDAwMDAwIG4gCjAwMDAw MTgzMjcgMDAw
MDAgbiAKMDAwMDAxODM0OSAwMDAwMCBuIAowMDAwMDE4NTQyIDAwMDAwIG4g CjAwMDAwMTg5
NTMgMDAwMDAgbiAKMDAwMDAxOTIxNyAwMDAwMCBuIAowMDAwMDM1MjgwIDAw MDAwIG4gCjAw
MDAwMzUzMDMgMDAwMDAgbiAKMDAwMDAzNTQ5MiAwMDAwMCBuIAowMDAwMDM1 OTE3IDAwMDAw
IG4gCjAwMDAwMzYxODggMDAwMDAgbiAKMDAwMDAzNjIzMSAwMDAwMCBuIAow MDAwMDM2Njc5
IDAwMDAwIG4gCjAwMDAwMzY3NTcgMDAwMDAgbiAKdHJhaWxlcgo8PC9TaXpl IDIyL1Jvb3Qg
MjAgMCBSCi9JbmZvIDIxIDAgUgovSUQgWyA8REIyRTM1RjVFQjM1QkQ4MTcw OUM5NEI5Mzk5
QUYwMjI+CjxEQjJFMzVGNUVCMzVCRDgxNzA5Qzk0QjkzOTlBRjAyMj4gXQov RG9jQ2hlY2tz
dW0gLzE4MkJDNEM2ODZBQzY0NEFFMEY5QjBFRkEzMzk5MDc4Cj4+CnN0YXJ0 eHJlZgozNzAw
MgolJUVPRgo=
--------------030504040005020803090102--
Re: Multiple inheritance problem (extending UML) [message #626567 is a reply to message #477387] Thu, 15 May 2008 14:21 Go to previous message
james bruck is currently offline james bruck
Messages: 1724
Registered: July 2009
Senior Member
Hi Joel,

-It seems to me from looking at your diagram that you are mixing
meta-levels. I'm not sure if this is what you intended.
-Keep in mind that EncapsulatedClassifier can have ports so you may consider
extending that meta-type instead.
-When you talk about connecting your properties via connectors, keep in mind
that connectors must have context and that there is a subtle distinction
between specific instances (InstanceSpecification) and any general instance
(as what Composite Structure diagrams show). I believe what you describe
would mix those notions. The difference between saying that "this
particular car is red" and "any general instance of a car will have an
engine and wheels in this configuration".
- I'm still not sure why you need to invent a new meta-type. Wouldn't
Composite Structure diagrams and InstanceSpecifications on freeform diagrams
be sufficient? Of course I don't know what this project is about but it
would seem that separating structure from instance would be the way to do
this? I could be way off base though.

Lightweight extensions (using profiles) should be easier or the same as any
of the other extension mechanisms in terms of difficulty. I would
definitely recommend staying with profiles. The only thing you lose with
profiles is that profiles are not a "first class" extension mechanism.

I hope this helps.

Cheers,
- James.


"Joel Greenyer" <jgreen@upb.de> wrote in message
news:g0hejs$gmh$1@build.eclipse.org...
> Hi James,
> I would really like to stay lightweight, but I don't see any easy way to
> do it.
> See my attached PDF:
>
> I plan to extend the Component Diagrams such that --in addition to regular
> components and parts-- there may be
> StructuralElements that may be composed without dealing with their type
> (since they own/are their type implicitly). It
> is important that they
> (1.a) may declare attributes and
> (1.b) may have Ports
> -> Thus, they act as Components
> But, furthermore, it must be possible
> (2.a) to connect them on the instance level (to other Properties via
> Connectors) and
> (2.b) to specify attribute values
> -> Thus, they are Properties
>
> How would you suggest to do this? Lightweight, middleweight, ...? Also
> considering the complexity of building the editor?
>
> Thanks
>
> Joel
>
>
> James Bruck wrote:
>> Hi Joel,
>>
>> Have you considered creating a new metatype that would have references to
>> Property or Class?
>> Perhaps have a profile with stereotype that has metaclass extension to
>> Class
>> and/or Property that introduces the new concepts you need. You could
>> re-use
>> existing editors that way.
>>
>> ... difficult to guess at a solution without more details as to how this
>> will be used and what new features will be added. It sorta' seems like
>> you
>> are looking to implement InstanceSpecification?
>>
>> Inheriting from both Property and Class as you mention will probably lead
>> you down a difficult implementation path.
>>
>> Cheers,
>> - James.
>>
>>
>> "Joel Greenyer" <jgreen@upb.de> wrote in message
>> news:g0e0s0$597$1@build.eclipse.org...
>>> Hi,
>>> (this is mainly an EMF-related question, but deals with extending UML2)
>>> I want to extend UML2 and particularly need to introduce another
>>> metaclass
>>> which breaks the typing concept of UML: I need something which is an
>>> Instance (Property) and Type (Class) at the same time.
>>>
>>> Therefore, my first approach is to inherit from both Class and Property.
>>> However, the EMF code generation produces code with a lot of missing
>>> methods. Is there any way to do this correctly? I tried hand-fixing the
>>> code, but I'm not sure that it contains no errors, plus it'll be awkward
>>> to maintain.
>>>
>>> Another approach could be to to work with Property and Class as is, but
>>> to
>>> maintain them such that each Property has a unique type-Class. However,
>>> I
>>> feel that this will need a lot of extra customization in the editors.
>>>
>>> Any ideas?
>>>
>>> Thanks for helping
>>>
>>> Joel
>>
>>
>
>
Re: Multiple inheritance problem (extending UML) [message #626568 is a reply to message #477388] Fri, 16 May 2008 02:36 Go to previous message
Joel Greenyer is currently offline Joel Greenyer
Messages: 170
Registered: July 2009
Senior Member
Hi James,

James Bruck wrote:
> Hi Joel,
>
> -It seems to me from looking at your diagram that you are mixing
> meta-levels. I'm not sure if this is what you intended.
> -Keep in mind that EncapsulatedClassifier can have ports so you may consider
> extending that meta-type instead.
okay
> -When you talk about connecting your properties via connectors, keep in mind
> that connectors must have context and that there is a subtle distinction
> between specific instances (InstanceSpecification) and any general instance
> (as what Composite Structure diagrams show). I believe what you describe
> would mix those notions. The difference between saying that "this
> particular car is red" and "any general instance of a car will have an
> engine and wheels in this configuration".
I think I understood that.
> - I'm still not sure why you need to invent a new meta-type. Wouldn't
> Composite Structure diagrams and InstanceSpecifications on freeform diagrams
> be sufficient? Of course I don't know what this project is about but it
> would seem that separating structure from instance would be the way to do
> this? I could be way off base though.

The InstanceSpecification again requires that we express what type(s) it is an instance of.
What I'm trying to say is to completely forget about types for certain elements.
Types are just a way for us (and the UML) to structure the world:
Imagine you want to model a car. So you specify how the type car is structured internally. You know, for example, that
you will need four instances of the same wheel - okay(*). However, for some elements inside the car you are yet not sure
whether they will be instances of the same thing. Suppose, for example, you don't know whether the front and rear axis
will be the same, so you don't want to worry about types. But, you want to be able to specify attributes, like "int
diameter = 50mm" or "int turnsperminute". Also, you want to connect your axis to the wheel instances. Since Connectors
are typed, I also need to extend this concept of type-and-instance to Connectors as well, but I did not want to overly
complicate my explanations.

(*) also, you are pointing out that these instances are different from the specific real world instance of the
particular wheels of a particular car on the road.

You are right - I can do all that with Composite Structure diagrams: If I am not sure about the type of an axis, I
simply introduce a new type. But, I want to hide this from the modeler. Also, I want to hide that when I copy an axis,
it will not become an instance of the same type, but rather that the type if copied, too. It seems like I would need a
lot of customizations on the Composite Structure diagram editor to hide and handle all this.

Still, if you can suggest an elegant lightweight solutions, I would be really glad to hear it!

Thanks

Joel



>
> Lightweight extensions (using profiles) should be easier or the same as any
> of the other extension mechanisms in terms of difficulty. I would
> definitely recommend staying with profiles. The only thing you lose with
> profiles is that profiles are not a "first class" extension mechanism.
>
> I hope this helps.
>
> Cheers,
> - James.
>
>
> "Joel Greenyer" <jgreen@upb.de> wrote in message
> news:g0hejs$gmh$1@build.eclipse.org...
>> Hi James,
>> I would really like to stay lightweight, but I don't see any easy way to
>> do it.
>> See my attached PDF:
>>
>> I plan to extend the Component Diagrams such that --in addition to regular
>> components and parts-- there may be
>> StructuralElements that may be composed without dealing with their type
>> (since they own/are their type implicitly). It
>> is important that they
>> (1.a) may declare attributes and
>> (1.b) may have Ports
>> -> Thus, they act as Components
>> But, furthermore, it must be possible
>> (2.a) to connect them on the instance level (to other Properties via
>> Connectors) and
>> (2.b) to specify attribute values
>> -> Thus, they are Properties
>>
>> How would you suggest to do this? Lightweight, middleweight, ...? Also
>> considering the complexity of building the editor?
>>
>> Thanks
>>
>> Joel
>>
>>
>> James Bruck wrote:
>>> Hi Joel,
>>>
>>> Have you considered creating a new metatype that would have references to
>>> Property or Class?
>>> Perhaps have a profile with stereotype that has metaclass extension to
>>> Class
>>> and/or Property that introduces the new concepts you need. You could
>>> re-use
>>> existing editors that way.
>>>
>>> ... difficult to guess at a solution without more details as to how this
>>> will be used and what new features will be added. It sorta' seems like
>>> you
>>> are looking to implement InstanceSpecification?
>>>
>>> Inheriting from both Property and Class as you mention will probably lead
>>> you down a difficult implementation path.
>>>
>>> Cheers,
>>> - James.
>>>
>>>
>>> "Joel Greenyer" <jgreen@upb.de> wrote in message
>>> news:g0e0s0$597$1@build.eclipse.org...
>>>> Hi,
>>>> (this is mainly an EMF-related question, but deals with extending UML2)
>>>> I want to extend UML2 and particularly need to introduce another
>>>> metaclass
>>>> which breaks the typing concept of UML: I need something which is an
>>>> Instance (Property) and Type (Class) at the same time.
>>>>
>>>> Therefore, my first approach is to inherit from both Class and Property.
>>>> However, the EMF code generation produces code with a lot of missing
>>>> methods. Is there any way to do this correctly? I tried hand-fixing the
>>>> code, but I'm not sure that it contains no errors, plus it'll be awkward
>>>> to maintain.
>>>>
>>>> Another approach could be to to work with Property and Class as is, but
>>>> to
>>>> maintain them such that each Property has a unique type-Class. However,
>>>> I
>>>> feel that this will need a lot of extra customization in the editors.
>>>>
>>>> Any ideas?
>>>>
>>>> Thanks for helping
>>>>
>>>> Joel
>>>
>>
>
>
Re: Multiple inheritance problem (extending UML) [message #626581 is a reply to message #477378] Mon, 19 May 2008 07:17 Go to previous message
Joel Greenyer is currently offline Joel Greenyer
Messages: 170
Registered: July 2009
Senior Member
Hi,
I am not sure how to make midweight extensions to UML2 correctly. Is there any documentation?
I create a new <<metamodel>> model (UML-Editor->Convert To->Metamodel) and introduce new metaclasses, some of which
extend the uml::xxx metaclasses.

Then, I create a new EMF genmodel based on this uml file. There I have a couple of questions:
1. I guess I don't have to worry about the huge list of warnings during the UML import (mostyl "... has to be annotated
with ...")? (I also don't understand the implications of most options, but I'll leave the defaults for now)
2. In the package selection, I reference the org.eclipse.emf.ecore genmodel as well as the org.eclipse.uml2.uml genmodel
and generate the code. In the code I observe, as expected, that all extending metaclasses extend the XxxImpls from the
uml2.uml plugin. What I, however, don't understand is that the packages with the XxxImpl classes are hidden in the
uml2.uml plugin.

I feel like I'm on the wrong path. Any suggestions?

Thanks

Joel


Ed Merks wrote:
> Joel,
>
> The problem is of course that Java supports only multiple interface
> inheritance but not multiple class inheritance. So if you extend two
> classes both of which contain hand specialized code, you'll need to make
> a copy of the hand specialized code of one of them. I wonder also if
> you are using UML's extended GenModel rather than EMFs basic one, since
> UML itself was generated with a specialized generator that likely also
> needs to be applied for any model derived from UML. Generally heavy
> weight extensions create difficulties and if possible you should be
> using stereotypes instead.
>
> Joel Greenyer wrote:
>> Hi,
>> (this is mainly an EMF-related question, but deals with extending UML2)
>> I want to extend UML2 and particularly need to introduce another
>> metaclass which breaks the typing concept of UML: I need something
>> which is an Instance (Property) and Type (Class) at the same time.
>>
>> Therefore, my first approach is to inherit from both Class and
>> Property. However, the EMF code generation produces code with a lot of
>> missing methods. Is there any way to do this correctly? I tried
>> hand-fixing the code, but I'm not sure that it contains no errors,
>> plus it'll be awkward to maintain.
>>
>> Another approach could be to to work with Property and Class as is,
>> but to maintain them such that each Property has a unique type-Class.
>> However, I feel that this will need a lot of extra customization in
>> the editors.
>>
>> Any ideas?
>>
>> Thanks for helping
>>
>> Joel
Previous Topic:Editor shows api generated import twice
Next Topic:Re: Programmatically moving Packages within an UML model
Goto Forum:
  


Current Time: Sun Apr 20 04:33:25 EDT 2014

Powered by FUDForum. Page generated in 0.02682 seconds