Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » Interdependent attributes
Interdependent attributes [message #552878] Fri, 13 August 2010 23:15 Go to next message
Amit  is currently offline Amit Friend
Messages: 3
Registered: July 2009
Junior Member
Hi,

I have two int attributes A and B in my EMF model which need to follow the rule A + B <= 200. If A is 150 and B is 50 and then A is changed to 155, I want to set B automatically to 45. Similarly if B is changed to 55, A should be changed to 145 automatically.

I currently have all this logic for ensuring the <= 200 rule in my UI code. Is there a way to do this in the model? that is, if A is changed in the model, value of B should be adjusted automatically and vice versa, and also a notification should be sent to the UI when A or B is automatically changed so that the UI can display the new value.

If this can be done, my automated tests will be much simpler because they won't be UI-based any more.

Regards,
Amit
Re: Interdependent attributes [message #552886 is a reply to message #552878] Sat, 14 August 2010 02:27 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33141
Registered: July 2009
Senior Member
Amit,

Comments below.

Amit wrote:
> Hi,
>
> I have two int attributes A and B in my EMF model which need to follow
> the rule A + B <= 200. If A is 150 and B is 50 and then A is changed
> to 155, I want to set B automatically to 45. Similarly if B is changed
> to 55, A should be changed to 145 automatically.
>
> I currently have all this logic for ensuring the <= 200 rule in my UI
> code. Is there a way to do this in the model? that is, if A is changed
> in the model, value of B should be adjusted automatically and vice
> versa, and also a notification should be sent to the UI when A or B is
> automatically changed so that the UI can display the new value.
No, you'll have to do this in code.
>
> If this can be done, my automated tests will be much simpler because
> they won't be UI-based any more.
You could do it in the model code.
>
> Regards,
> Amit


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Interdependent attributes [message #552889 is a reply to message #552878] Sat, 14 August 2010 05:03 Go to previous messageGo to next message
Ed Willink is currently offline Ed WillinkFriend
Messages: 7655
Registered: July 2009
Senior Member
Hi Amit

On 14/08/2010 00:15, Amit wrote:
> Hi,
>
> I have two int attributes A and B in my EMF model which need to follow
> the rule A + B <= 200. If A is 150 and B is 50 and then A is changed to
> 155, I want to set B automatically to 45. Similarly if B is changed to
> 55, A should be changed to 145 automatically.

This is sensibly done by renaming the existing setA, setB as setAGen and
setBGen, and reimplementing srtA as setB as correcting filters.
>
> I currently have all this logic for ensuring the <= 200 rule in my UI
> code. Is there a way to do this in the model? that is, if A is changed
> in the model, value of B should be adjusted automatically and vice
> versa, and also a notification should be sent to the UI when A or B is
> automatically changed so that the UI can display the new value.

You will find your UI code is much more reliable if you totally remove
the control-view coupling so that the control code is solely responsible
for invoking model 'set' and your view code is solely responsible to
listening to 'notifyChanged'. This ensures that you display the model no
matter how the model came to its prevailing state, normal
change/corrected state/multi-control change/reload/....
I code all my (VE) GUI entities with at least Control and Adapter fields
and often LabelProvider and ColorProvider fields too.

> If this can be done, my automated tests will be much simpler because
> they won't be UI-based any more.

and with the UI having no magic functionality both your tests, and your
users are less troubled by surprises.

Regards

Ed Willink
Re: Interdependent attributes [message #552897 is a reply to message #552889] Sat, 14 August 2010 06:47 Go to previous message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------090801050004030608080106
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Am 14.08.2010 07:03, schrieb Ed Willink:
> Hi Amit
>
> On 14/08/2010 00:15, Amit wrote:
>> Hi,
>>
>> I have two int attributes A and B in my EMF model which need to follow
>> the rule A + B <= 200. If A is 150 and B is 50 and then A is changed to
>> 155, I want to set B automatically to 45. Similarly if B is changed to
>> 55, A should be changed to 145 automatically.
>
> This is sensibly done by renaming the existing setA, setB as setAGen and setBGen, and reimplementing srtA as setB as correcting filters.
If you're going to do this more than once you may consider to install EMFT Mint ( http://www.eclipse.org/modeling/emft/?project=mint ). Among many other nice things there's a Source menu action available for customizing EMF-geneated methods:



Cheers
/Eike

>>
>> I currently have all this logic for ensuring the <= 200 rule in my UI
>> code. Is there a way to do this in the model? that is, if A is changed
>> in the model, value of B should be adjusted automatically and vice
>> versa, and also a notification should be sent to the UI when A or B is
>> automatically changed so that the UI can display the new value.
>
> You will find your UI code is much more reliable if you totally remove the control-view coupling so that the control code is solely responsible for invoking model 'set' and your view code is solely responsible to listening to 'notifyChanged'. This ensures that you display the model no matter how the model came to its prevailing state, normal change/corrected state/multi-control change/reload/....
> I code all my (VE) GUI entities with at least Control and Adapter fields and often LabelProvider and ColorProvider fields too.
>
>> If this can be done, my automated tests will be much simpler because
>> they won't be UI-based any more.
>
> and with the UI having no magic functionality both your tests, and your users are less troubled by surprises.
>
> Regards
>
> Ed Willink

--------------090801050004030608080106
Content-Type: multipart/related;
boundary="------------010400040105010308010808"


--------------010400040105010308010808
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Am 14.08.2010 07:03, schrieb Ed Willink:
<blockquote cite="mid:i4582u$hh9$1@build.eclipse.org" type="cite">Hi
Amit
<br>
<br>
On 14/08/2010 00:15, Amit wrote:
<br>
<blockquote type="cite">Hi,
<br>
<br>
I have two int attributes A and B in my EMF model which need to
follow
<br>
the rule A + B &lt;= 200. If A is 150 and B is 50 and then A is
changed to
<br>
155, I want to set B automatically to 45. Similarly if B is
changed to
<br>
55, A should be changed to 145 automatically.
<br>
</blockquote>
<br>
This is sensibly done by renaming the existing setA, setB as
setAGen and setBGen, and reimplementing srtA as setB as correcting
filters.
<br>
</blockquote>
If you're going to do this more than once you may consider to
install EMFT Mint (
<a class="moz-txt-link-freetext" href="http://www.eclipse.org/modeling/emft/?project=mint">http://www.eclipse.org/modeling/emft/?project=mint</a> ). Among many
other nice things there's a Source menu action available for
customizing EMF-geneated methods:<br>
<br>
<img src="cid:part1.02040906.09020404@esc-net.de" alt=""><br>
<br>
Cheers<br>
/Eike<br>
<br>
<blockquote cite="mid:i4582u$hh9$1@build.eclipse.org" type="cite">
<blockquote type="cite">
<br>
I currently have all this logic for ensuring the &lt;= 200 rule
in my UI
<br>
code. Is there a way to do this in the model? that is, if A is
changed
<br>
in the model, value of B should be adjusted automatically and
vice
<br>
versa, and also a notification should be sent to the UI when A
or B is
<br>
automatically changed so that the UI can display the new value.
<br>
</blockquote>
<br>
You will find your UI code is much more reliable if you totally
remove the control-view coupling so that the control code is
solely responsible for invoking model 'set' and your view code is
solely responsible to listening to 'notifyChanged'. This ensures
that you display the model no matter how the model came to its
prevailing state, normal change/corrected state/multi-control
change/reload/....
<br>
I code all my (VE) GUI entities with at least Control and Adapter
fields and often LabelProvider and ColorProvider fields too.
<br>
<br>
<blockquote type="cite">If this can be done, my automated tests
will be much simpler because
<br>
they won't be UI-based any more.
<br>
</blockquote>
<br>
and with the UI having no magic functionality both your tests, and
your users are less troubled by surprises.
<br>
<br>
    Regards
<br>
<br>
        Ed Willink
<br>
</blockquote>
</body>
</html>

--------------010400040105010308010808
Content-Type: image/png;
name="moz-screenshot-2.png"
Content-Transfer-Encoding: base64
Content-ID: <part1.02040906.09020404@esc-net.de>
Content-Disposition: inline;
filename="moz-screenshot-2.png"

iVBORw0KGgoAAAANSUhEUgAAAoUAAAFyCAIAAAAMNDe/AAAgAElEQVR4nO29 e3QUVd7vXeuZ
9f77njlnXOt9z3pm5jzPLGcmjzPOqKSz1uRdR5/njKOOszzjUXRklNBGjBMv jzIiiAqSkDQE
UaLcQiAa7iEdEq4NyE0uISGXjhIyXJqQQCAkIel0d/qSgFrvH3Xbde26Jd3p /n7Wb0H1rl27
dlXv1Kf3rureVACAxBHUTUgfI/oI6yaij6g+YroZ1ceYPm7r5o4+vtXNd/r4 Xh+0BcLhcKLb
OwBaUImuAAAAAADgYwAAACAJoCoBAImmo6ND519sR0dHois7XqTwoQFAovb3 jv4xAIlH+6+U
gddVKDKWehH3UgVAyqDW1OFjAJIFDRsxMh4KxYZCsav9wdQL5tCGQjGIGaQJ 8kYOHwOQRCh6
iJFx/3Dkcu9wykf/cIQJWBmkPJIWDh8DkFxI/kQZGd8YHLnQM8TEXfluSfCr UiluDI7cGByB
kpMQz6n6pz/c/PSHmw/WNyS6LpMesoXDxwAYIF8TW7ZS9PHV/mB71y0m7sp3 X43SfNyV7+ZX
pV5c7Q+mbUf53e0b/9n1/j+73v/DiiXvbt+ocyvqv7z55trx1SRj4oP1DRm5 q8d1R3HJyF2t
5zOBuT9b0xua/nuHjwEwQH5+vtrPTWj/fRraqrKyklzu7B1uu9zPx135bu8g 7R2k24Zo7xB9
V7677XL/8T5aEuQmkzo6e4c7e4cnhZIvX77c1NR06tSppqamy5cvmyjhfy8/ wi//s+t9RsOM
kvUXwit5T3N74c5v3qpsfK385FuVjYU7v9nT3G6iVhJ0WnAC0F8Txb9BbRmr bTV+f+/wMQAG
MP33aehTttzHTRdv8nFXvntP13e7u77b0/3d7u7v7sp3N128+cNnlkqC3CTZ gj/2uIl8JL+S
L1++fOrUKZ/P5/P5Ll++3NzcfOPGDaOFTP1ojzzRqI8DnJK31Hcv++r66oab G9qGVjfcXHT4
2jtb21YftqrkRRv2Pf3h5ozc1Z5T9RaLsoihTwaSP964MpZvMt5/7/AxAAYw +pfGb2Xu8zKz
fLHHf7rjBh935btXn42tbo+tPhtbfTZ2V76bXBsnyl6gOH79br3uDTc9SU15 c/+N0/sX/ppZ
0L9HpeBPSH5+vlqKPC72+JNZyU1NTQ0czc3NFy5cGBwcPH/+fH19/ZEjR+rr 68+fPx+3EN7H
727f+IcVSxgTm/Bxx7UeRsmHu0aa+6LNNyMtfdHm/ljJyZuvbvIePXsubglx x72Njle/tav4
Bwsfu3dlzlu7ivVvpV0Toz11spnpzD+Rf+/wMQDjjkUfd3QPHj/bw4f8eS5y rVasfp6ipryx
l3l58o37qF/POamef+MTQmZy2YYgTwhzaSNfamzY0T2YtEo+derUfo7jx49f unTp/PnzR44c
Oc/BLGsXwvuY0TCzbMLH77nbdpwbYExG0/T3NB379vvvadp5oGf2Pt977jY9 haiJkLHgwfqG
pz/crLM+j1f+54zq2XvPVpSdLp1RPfvxyv80cDA6atJ8tlVnUdoqtQX4GIDk xaKPv+kcONJ2
VTt4N6vnOf7qb6g/rSRSdn/4K+qvi1XzV/6JmvLqbvmyPaF4TvLz8+Nu+E3n QHIq+eTJkydO
nGhoaGhqavrHP/5x69Ytr9d7+vTpkydPHuc4ceKEdiFyHzNPdRn18XNl9Tn7 rpS03mJM9nnH
8E/WX/jNZl+2u9N58OpzZXrHmZnNy8vLXa7izz+vaG0+HggEFm3Yl5G7+ukP N+scr35956Jn
t73lblvLRdmz2956fWehoSNSrAkzbM6EodLGFfgYgOTFoo9bL/UdbO7Sjh8+ s5Sm6R8+s/Rg
c9dd+W5mQRR1C+6hpi0SJX71t3sf+Ftd18HmLx6nmAV++YvH+XHtp74gMogX /j6NyXLP378i
9sIg2ZdCyO/nxT1MJlov9SWhkru7u1taWnp6egYGBgKBQCQS6ezsPH369IED B3bu3FlbW1tb
W3vkyBHtQuTj1eaGrJ9bdTyzrvufVndsvxxiTPY9Tf+X9Rd+sKYjs677uVXH dZbT3HSc2by5
ubmuru6zzz5rPqN3W54fLHys8Ehh0dEiNo4VFR4p/MHCxwwVYktNJgb4GIDk xaKPz5zv3dvY
qR38Y1yqeWrmZ9w7f50o8ejL91KPLe/c21jxGPXAyzVMIr+snVjxGEVR/6di b2Pn3uXTKGra
wkbxJsunZcw6ql1nuY/jHiYfZ873JqGSR0ZGmpubd+/eXVVVtXv37ubm5t7e 3paWlsOHDzPj
2IcOHdIuQfF5LhM8sfLUQzuu/N/lFzZcCNA0zZjsjZM3f7juwkM7rjyx8pTO csrKyrZv385s
fuzYserq6jVla4xW5sdLp+ZWvzVr15xZu+bM2vXOrF1zcqvf+vHSqYYKsaUm EwN8DEDyYtHH
9edu7Kz38SG/f0yuVY3t7/+Sem6BKPHwS7++/6Xtvp316x+hmAVyWTtRae32 939JEfzv9Rr1
URuv1nUs9b6d9b76czeSTcnNzc1VVVVnOKqqqpqbm7u7u5uamo4fP15bWxv3 /vELxVsU0z95
ZKUktMuZW+3Nqbn4v2qu7vKFaJr+25HrjMmKm279tapjbrVX5xG9Oado+/bt e/fuZTavrq5+
c06Rzm15ZlS991DZjCUHC5YcKCg5ULDkYMFDa5wzqt4zVIgtNZkY4GMAkhej T2lKfHz8mx73
8Yt8yH8PhFyrHl86f039YSmRsvW9X1B/ee/4RffxdX+g7nduZdL5Ze1EpbVC gXFC+3kufYdz
0X384vFvepJKybt3764VU1dXd/369aNHj+7fv1/P89Uvz1cWLe/grfOq9fj4 6Nlzz1e05B/o
2XEpNBj97uPmW6Ut7L3k5Ycv63m+msHlKl6xYoXb7a6qqmI2d7mMPR3N8B9r X3l83ctrjiwp
3Pfh4+te/o+1rxgtwa6aTACm/97hYwCSDomPj3ivbjt6ng/574FsO3pe/nsg 5CZsLH6Wop6d
y74s/z1F/eK1g9uOnt929GDOr6jfL+bz3J+zicnALJDL8gVJIl+mVuQTXztR S9EZR7xXk0fJ
VVVVK8RUVVUZKkGtz7d1XnVAt4wZPjpwdmZl64f7Ln3aOLDw5K35R3t3nu03 +utdzWe+enNO
UWXlF3v37l2/fr2VH//Kd3/4g4WP/dvyv+a7PzSxuY01STbgYwCSF4mPDzZ3 bTzUwYf890A2
HuqQ/x4IuYkQxc/ww8n/UayU/qdn/oO67/kNHRsPdcz+E5NStvFQGZcoXxAv b3j35/wO/lSm
XIdDHXxfIW6injjY3JUkSt68efMXYjZv1vuNoDfnFJEhz8DImBGzTnY2tRfs 8L64tuHlslN5
6xoLd3hbLl8zarKWpq9cruI35xS5XMXNTV8lUITJUxN7gY8BSF4kPt7X2Ll2 7zd8yH8PhFyb
nrGr3pcMSm5ubl6xYgU/WL1ixYrm5mb9mz/x1+lvzil64q/T5askPWNDVpZj 0WTJI8LkqYkV
4GMAkheJj3fV+yQ+lkTCdZgMsePEpWSYeaK5ubmysnLFihWVlZWGZMygKOMA cf84EAhsnVdt
0ccBKDmZgI8BSF4kPt5x4lLCbTcpYvuxC9uPXUi4kscDxsd8L1nnLWQwKYCP AUheJD7efuxC
wlU3iWLL4X8kQ0cZAJ3AxwAkLxIfbzn8j4RLbnLFhoPnNhw8V8kBMYNkBj4G IHmR+HjDwXMJ
N9xkjArPWSYgZpDMCD6uBAAkH+TfaoXnbMLdlhqR6HcVAGVYH6v9rBcAIFFU in2ccI0hEIjx
C/gYgOQFPkYg0ifgYwDMMzo62tPTc/PmzaGhoWGCQCDA/MsTDAZDoRAzAZ8e mPIVfZzYQwYA
2A58DIBVUtLHrdfOTf981p8+c/7O9eTjpTnTP5/Veu3ceO8UgHQGPgbAKqnn 44J9n/3O9eTf
Nr85t/ZdJv62+c0phU8U7PtsXPcLQDoDHwNglRTzccG+zx5Y+GjBnvk7v3af uHzs9JWTJy4f
q2xYt3DPwrvnPAglAzBOwMcAWCWVfNx67dzvXE/Oq5179NIhyarDFw++v+u9 KYVPmBi4Ls2m
KYqmKJrKpn02VdUibJUs1CePokuT5GBASgAfA2CVVPLxX9e99WLlK180lDMv D13Y/+nRZXvO
7qRp+upw9+IDxS9WvvLSxrkGSvTR2RSd5xFelnq0spOMt/Aslg8fA3uBjwGw ipqPR0ZGIpHI
yMjIJPLxI8tznlqd8/npDTRNXx7odH6ex8QbW996ZeOrr2x8ddraFx9ZnqO/ wNJsQsYGgY9B
WgEfA2AVRR+HQqFIJHLvvfeSSk6gj48dO7ZkyZK42aYUPnHfgkeWHy2nafpk 55nfzP/DvR88
fO8HD/9m/h+mFPwxq+jxB5f8eUrBn/Tu1UdnU7SijkmZ8cv8sHaeh86juCHu PKEofq2woYdN
z/PQvlI2Q3apqAJMoofbJC+PfcnvN245ZAZRInwM7AM+BsAqch8zMv7pT3/q cDief/55XsmJ
8vGRI0d+9atf/eIXv4ib85HlOf/f4j/PrV1M0/S14RsPlTz14OInH1z85MYz te62Pc+tf+PR
5c8Z6B/76GyVG7QKPvZw6lXJw2rYR2cTHmVvAHsIU3pE9mVL8LBr85SEqqcc NoN47/AxsBH4
GACrSHzMyPhf//Vf//jHP86bN2/ZsmUul4tRckJ8zMj4ueee0+PjlzbOfXDJ kznrXw3GQjRN
H75w4rVt731ypJym6UAsOH39q0+tdr5eVaB334b6xz46m+zaknnE5XjyWDcr drIlBVLifrbi
JnHKEScq7h0A68DHAFhF4uNIJPLMM8/MnTu3oqKitrZ2//79x44d83g8kUhk 4n3My3jatGl6
fHyhv/PuOQ9OXfPivNqCSwOdfHpvsG/Z4RXPrZ1595wHDT1frXb/WE2BzFix VHgWfCzZuXUf
80cEHwN7gY8BsIpi/1jOxPePSRnr9DFN0wv2lP7mg0ce+eQvzsr8D3YXFR9Y 9sHuImdl/l/W
zsxa9OcFe0rjF0HiEd3x5Z+vFjztoSmx2Hylwtiy2ni1dDha3aPZ4vqa9jFb jsreAbAOfAyA
VZL2+05Lliz5BYHL5dJ5RAv2lP52/iNPrc59tnzms2tnPls+86nVub+d/4hh GTOQ48b87WSP
MIws3D8WP3vlyVN+nkvbnbSsY604Xk1+/1iPj5mnwKRPk8HHwD7gYwCskrQ+ tkLrtXNTy179
95Ln/tdHf/33kudeWJ/Wv18N9YIJAD4GwCop6WNAAh+DCQA+BsAq8HHKAx+D CQA+BsAq8DEA
wDrwMQBWgY8BANaBjwGwCnwMALAOfAyAVeBjowQONzT8070N/3Rv4HADn5iR u/rpDzc//eHm
jNzVCawbAIkCPgbAKvCxURr+6V7JAk3TT3+4OUHVASApgI8BsAp8bBRSwzzw MUhz4GMArAIf
G0VjvDoBg9XElE2KWPqyU8fSVfMfXTX/0VXzl3ZqZBuoqpqf3zJgdi8gJYCP AbAKfGyaSTFe
rehjXZIeqKriNTxQ1dJB0/Tpg/AuUAE+BsAq8LEePm2sfXjD7Ic3zKYn2/1j 8z7uWLpqZZVf
lAQfA1XgYwCsAh/H5dPG2syyv5UcKCg5UEDTdO/Hlcx4de/HlXwePSPV7CQQ 4rmeFKZ58LDp
zKRMojkfPcIcEswUER6l+SeyS8WzP4kLzBPPUcGibN9Hq473kC/Z4evq04yb D1bnr5q/tFPw
9OmD8/NbjrOj3MK2A1VVbEoVjJ6qwMcAWAU+jktm2d9m7XqHWZ61653Msr+Z KKQ0W2HyRFLM
vD7ZWaT4RI8gTnLuZL400TxOHprmpmGWFugR5p5S6B8r+Jim6Z6WlY+umv/o wQ7mJdk/Jm1N
+pixNXPvmRnuPn2QK8F/PH8VfJyiwMcAWAU+jssPXU8wPWOapksOFPzQ9YTh IoiJhxVTSNHy
piQTWY9yEz4qzKvoo7P56SDjzY5s7CGvgaoqVqgSH8uXlRIHqqoE02PEO2WB jwGwCnwcl/lH
vmCUzMh4/pEvDBdhysf8SLWvlM4uZf9lmFAfM/1abowaPgaKwMcAWAU+1sP8 I1/8tOQpkzKm
aVrHeDU/ksxmI4Xto7Oz6bxsBbPSOsardflYPl7dUcWJs6dlJTM0bcrHGK9O D+BjAKwCH08Y
eZTq81ykMpkHtciHvGia9uSJHr9StCxzh1jheS5ZTk+e3ue5iAe4aJqmO6tF z3Pp87HwPWY8
z5XCwMcAWAU+TirURpL5AW1dyIfHkwTyO80gtYCPAbAKfJxUKPtYfG84Lp48 7pnqJKOz+lGl
p7hBKgAfA2AV+DipkPuY+daynsev+O83U8nVOWa/NBX/dzfBZAY+BsAq8DEA wDrwMQBWgY8B
ANaBjwGwCnwMALAOfAyAVeBjW/ht3eP/+l7mzxY4Dg3VJ7ouACQA+BgAq8DH 1vl3zzTGxMuv
Vv5sgSPR1QEgAcDHAFgFPrYO4+NE1wKARAIfA2AV+Ng6+n0sfCUpab4fzFbJ Qn3I72j5Smkq
j/bkSX8cFKQ88DEAVoGPraNrvNpHZ5M/gemjS3V/R9jo9A9GsVi+aAJmzuul 2eNbZ5BswMcA
WAU+1snR9RlH12eorY37PBc/WZMJJouPyRmoyGmbQToAHwNgFfhYD0fXZ9Ch nXRop4aStVD/
QWnF+R74Ye08jzALBas3YhYKXvB5FF3qYdPzPOz8ThRF2JHYip9Iipm4wiOZ 90mzHDKDfPJH
UZ/Y4G98gskOfAyAVeDjuBwq+yU98Ckb/Z8eWvtLw0Woy0nBx7KepSQPOT0U 71H2BrCHMKVH
ZF9+DihmbZ6SUPWUw2YQ751fID9z5CXXz3aC8QU+BsAq8LE2B1bcTfeW0Vfm C9Fbtn/Fz42V
Yqh/7KOzKdHzUKIbtEQ5/KRPytMvigukxP3suPMix80g37tEwLiFnFbAxwBY BT7WZvfHP/ve
t+z7tteF8C3b8/HPjJajdv9YTYHMWLFUtxZ8LNm5dR/zR4T+MaDhYwCsAx/H pXbxv3x/ZTUf
tYv/h5lSPKI7vvzz1YKnPdJ5nPjHozTGq6XD0eoelXwBybSP2XKU9o77x+kM fAyAVeBjPVQX
/ISRcXXhT82XQo4b867yCMPIwv1j8bNXnjzl57m03UnLOtaK49Xk94/1+Jh5 Ckz6NBmer057
4GMArAIf62Tbgh9vW/DjRNciwcT5ZhS+f5zGwMcAWAU+BvqJ+01l/ve50DlO N+BjAKwCHwP9
jPcvk4DJC3wMgFXgYwCAdeBjAKwCHwMArAMfA2AV+BgAYB34GACrwMcAAOvA xwBYBT4GAFgH
PgbAKvAxAMA68DEAVoGPE4bsd7j0QsytpAY/YyP/Q2BWvqrEf6tY8qObKpw+ OP/RVVwc7ODT
e1pWcukrq/xszvyWAZO1AkkFfAyAVeDjxEDO8cD9lrW2MvUK1UdnK/1Qtnkf G/7VLSXLDlRV
kW4eqGrpUMkJJifwMQBWgY91cnR9xtH1GbYV5yF+wprDFh/rmUjKEMZ/lVpu 2Z6WlWRHWSMn
mKzAxwBYBT7Ww9H1GXRoJx3aaV7JxIwO/LRIkkmOyfkePHnS6R/UZi/mh6bz PLomWpaULC1B
6aXWrE0dS7nBZx6ZZQeqquYv7VSolJCzs5obyq4+TdM0Obh9sEP+EiQd8DEA VoGP43Ko7Jf0
wKds9H96aO0vTRQiGNQjaJgxn3yiJMUNFSdcKs0W39NVn+VQXrgwnRTZ5ZX1 gOPMaqzsY/7+
8dJOmqYHqqqkefickv4xl9KxlBMztxfyJUg+4GMArAIfa3Ngxd10bxl9Zb4Q vWX7V/zcWCnk
dIeUWHjE7V6RMomnvVR9LO8N6+gfS0v20dlkT13yUiZgHbeQzfSP6Y6lnMLz WwbY+81Vx3uI
EoiXIPmAjwGwCnysze6Pf/a9b9n3ba8L4Vu25+OfyXM+fPcm1VLUNUlzTy/T sumKmfy8/3T5
OO79Y6WS2ToQPXXyZZz+sQLG7x8Lwu5pWSls6z+eTw5QS16CpAI+BsAq8HFc ahf/y/dXVvNR
u/h/yPM8fPem8m/e0FCy5G4x7RHdAGZWibqwzLAz8dUmXePVNNv9VX2+Wqlk NmOpqCj+pQ33
j2m2+6v6fDVfyEBVlXhb//F8slsseQmSB/gYAKvAx3qoLvgJI+Pqwp/K1z58 96Yndz7NhKqS
ySFrpUe0aP5Jqzya5h+qyqbzssXPYcme5+LLIR0s7Ev2/WNpyZKvQcu+FR3n +eo494+lY84q
3z/mHtdaufTgSs7Q5B1oyUuQfMDHAFgFPtbJtgU/3rbgx/L0h+/e9PqfT5Ch NXA9GTH8/WOQ
jsDHAFgFPgZx4X+fS8eXj0GaAh8DYBX4GABgHfgYAKvAxwAA68DHAFgFPgYA WAc+BsAq8DHJ
t999f+Ts0Mr9V4tqOhGIhMfK/VePnB369rvvE/2XER/4GACrwMcke1sG9nkH r/vvhEZpBCLh
cd1/Z593cO9kmHMDPgbAKvAxydKdV4Yi3w1F6cEIApH4GIrSQ5Hvlu68kui/ jPjAxwBYBT4m
KarpDI7St8IIRLJEcJQuqpkEP4ICHwNgFfiYpKimMxCj+0eSI2rzKJa8bcp5 PNOp7EXfmCiQ
yizxxctvsHAiGkuyqRc9217UsxdmRwLTa5V2/U1pptnKTOoz2T9CB2LwMQDp AXxMUlTT6Y/S
N0OJCs8LVHZBG30zRN9sK82k8raE2OWCmnj540ZNHiVk9hVkUZlLfHorYyja SjOzSk+ze9FT
gnxH+netI+fkPZMh+maI9kfhYwDSA/iYpKim0x+hbwSl8c7+0v+r4I+/WeV8 Z3+pfK194XmB
yl7YRt8I0jdq8qis0nr9+eOEb2EW9UINkdJWOoXK22RP4aKoX5w9ZbGPfVmT Rzk9Bo7a8K5V
c25yTroz6VuYpVCOPwIfA5AewMckRTWdt8L0tWFRPLHp7RnVs/eerSg7XTqj evYTm96WZNAV
3tIpFEVR1BRX6fNU9kKvKJGi8jYMe57nx0CdnmvDnucpaorLRxaywUlmoK8N e1SKoq8N+xY6
2NfPVzNrmXQ+fAsdzLae56ns553Z7Ibx6ynZRLwjoVhuQ0fpCXK/1XmUJIU8 ivgp5O4kZ4zY
BVsZfttJcSbZqoqOZZi+FYaPAUgP4GOSoprO/hG6yy/ELM/Hz257y922louy Z7e9NcvzMZlH
R3imUdS0arrLT3/lyqao7AWtTCKzQHdV5z3g8olS/HSX37fAQVHchuLSJCXI iqrOo2Z4hE1a
Sx9wlH4lKsS3wMGU7JlGUQ+4fAbryW0i2ZHfM43K+0L1Jd1VnUdJa+KZJtw+ ZjJLzgORorA7
Imdr6QMUJc4wec4keYqIqvaPwMcApAfwMUlRTWffCN05KMQPFj5WeKSw6GgR G8eKCo8U/mDh
Y2QeJmhamiJEU+kDjtKj7EvPNCp7fhPd2VT6APEcE5XjEVZJtqWoaVV05yDd WcU/RsRkUy+q
qfQBinqgyEcUklchqpVvvkNciLl6SnY06Jkm2hG/F42QH7V6isLuhJwVOfyZ UXkXkvlMigqk
KG4vffAxAGkCfExSVNN5I0hfuiXET5Y9m1v91qxdc2btmjNr1zuzds3JrX7r J8ueJfNcukXT
NM1MsyhJZ+NM6f2O0kPsS89fqOz3z9CXzpTeT+WtF+XkVok3P1SUTeV4iPy+ 9x1MNo2iuA0p
6i9VzCbMAlEldhNip2brSezI8xdRZslLxZAfdZwU8e4kOX3vOyhKZadJfyaZ youO6EYQPgYg
PYCPSYpqOq8H6PP9QsysLX6obMaSgwVLDhSUHChYcrDgoTXOmbXFZB6akzHz L7mKC8+zFPXs
Nvp8P31wUTZFZc9rZBPvX+QTZ2NW0ee3lbIL/b55mdT9i3znt+VRmaUH++nz jaX3CyWoFcXG
wUXZbPq2PIrKKyfqw+UndmqintId+eZlEqsaS+9n6swHfxRapcVP4XanUJNJ eybFp46L6wH4
GID0AD4mKarp7BmmO/pE8fv1rz++7uU1R5YU7vvw8XUv/3796+RamtMwA7Ms KaGjj+7Yyg6Q
3ldY+gyV/W4j3dFHdzSW3sePXk73dPTRZdP5Zc8z4lUdfb53MymKoqjMvGcy mRI8qkVtFb5x
WyarA0VRz2zl60YUoreexCayHe0vzL6v0CeUxlaeKD+zdL/o5BBHSlH3FfpU UrLfbVTYHXHG
lE67pPxkPpMq0TMMHwOQHsDHJEU1nVf9dHuvNN7ctZT5vtObu5ZKVj1896bX /3yCjIfv3iQv
QYj60vuovNUaGSZ71Jfel1m6r5du7/XNzcyeW5/o+kzyuOqHjwFID+BjkqKa zi4//U2vgVBE
I/+qFygqs3SPkV1MuthTkE294Fn1AkW94El4ZSZ7dMHHAKQJ8DHJJ3u6L/R9 295Lf33D3vC9
M4UfpsxbaXPhiJSN9l76Qt+3n+zpTvRfRnzgYwCsAh+T7Pfe2tk85Bv4zuDX ixGIcQnfwHc7
m4f2tWK+RQDSgFTy8RoAQHIAHwNgmBTzcQQAkATAxwAYBj4GANgOfAyAYVLS x0FbudbTQ9O0
zqMGAMDHAJgBPoaPAbAX+BgAM8DH8DEA9gIfA2AG+Bg+BsBe4GMAzAAfw8cA 2At8DIAZ4GP4
GAB7gY8BMAN8bN7Hbif/G5gOl9f81UurYHvLdzulJXEpXpfD5oNQ2yNIHkQN TXif3E6LLQ4+
BsAM8LFJH4uuWeNkM9tlpu7j8QI+TmYU3x2vy+mw2JzhYwDMAB+b8rHX5aCc bq0EO4CPwbii
9O64nQ6Xy+K7Bh8DYAb42IyPFezrdTmYS5jbSTlcbpdDMgboZVModkO3k3K4 XE7N4Wjycine
JbtG574UC5SkEKuUqup0OpiXwhAnW7ZorWxjeQ0VDwQkBPnZ97ocTrfldwU+ BsAM8LFJH0uv
V7xm3E7ejcIwNnGBczsdLi+bjfedct9afFq9OB4AACAASURBVFl0O/lc3KLO fZEFypFspVxV
hW6UkF9kcoU9Chm5WksPBCQEUXtgP22x/8HHAEw48LFJH2v3j4knY5xustNI Xvn4bGqXP0k6
Ly9eszr3pVZgQEHDcapKXsMVO9YaPXJyX5IDAQlB0h6U27AJ4GMAzAAfm/Gx 1v1jpUFmvaKS
IE1nrpdE51znvlQLVPGxelWFtUrXbt2HKTsQkBDkH/jkAydmgI8BMAN8bMrH kkFmcsyWWBZJ
Wj6Qa9jHAa/L4XA6HeSGevalXqDCMLVmVflFxeFx5fFqpcOUHghICLobnkHg YwDMAB+b9HFA
1J0geoX8803idHIc2OR4NbdP8dNQOvalUaD281zyqnLrBJuq9rGE57mUDlP1 pjmYOOBjAJIJ
+Ni8j5UZ3yeGxQ9ATeKnk/EkVwoDHwNgBvh4MvlYesd10voYt45TGvgYADPA x5PEx8xA8QT/
msd4oHggIKWAjwEwA3xst48BSHfgYwDMAB/DxwDYC3wMgBngY/gYAHuBjwEw A3wMHwNgL/Ax
AGaAj+FjAOwFPgbADKOjo83NzTU1NWvFlJeXM//yVFdXe71e+BgAoA18DIAZ RkdHa2pqrl+/
HuVglDY0NHTr1tDAwK3+/oHe3pvd3Ve//vrsjh074GMAgDbwMQBmGB0dXbNm DW/iUGgkEAwO
Dwd6em50d1/rvNJ96VLnN2fPnTzV0N7esWr1KvgYAKANfAyAGRgfMxobGRkJ BIJ+//Dg4FBn
Z/fFi5f/cf5ie/s/Gs+0HD9e//XXZ+FjAEBc4GMAzMD7OBwOB4MhRsb9/bcu Xrrc0XHhm2/O
tbZ+09DQ/NVXp9ravoGPAQBxgY8BMAN8bN7HxPxO4/Pzj8RES6o7UJqgSbpK liKfF9EeJuPv
dyYEPe8sg95TKpsvy9B7oafxGAA+BsAM8LFJH4umCR4Hv3ldDvEUii7l2ZBM +Xi8gI91oPzO
Wpv6UGE+aY2GoWcv8DEAEw58bMrHXpdD3BuRJVhDf3Hw8eRC7Z215GNmuizx pFnwMQCTDfjY
jI8VLqr8xdDtpBwuNzseKVzShBFKZkO3k3K4XE7lMUt1HQtj5Ox6cz4mVilV zOlku3CKu+PX
yjaWH7v4SOBr5XeWuPPBnnX+JEtOmdflkG/OtT2RkJkNJSWrFQIfA5AEwMcm fayqULeTF6ww
jE1c3dxOh8vLZuMNKLlGx58eWG5WxUuqHPWtiIrJdk7mF5lcnJM4dv6g3E7+ 4IjFdEX1nSXf
PvIk6/CxUCZZukbDUPSxWlMxA3wMgBngY5M+1u4fE50Up1v0+A7ZB5JdOjXK DwglxjWrkDVe
/zhOxTR2p1hJxYPiLcwKP61RfWfV2oPKO0V8giMlTBSvPRYiKQT9YwCSAPjY jI+17h+TFzIu
Va+61MuXJsv1b9rH6hXT2p2Bg1K6u5m26Ll/rNE29HRtJe1QZ/8YPgYg0cDH pnwsGWSWDDAS
IiKGpGVDuxo+Fo1nM0W5yL6rwki4ufvHmhXT2p0oNc5BKTz9m8YovrOmfSx9 k8n7JvAxAJMK
+NikjwOyp3CIC5nT6ZCmk0OFccer5ZsQhqcoihL0ZuPzXPKKaexOegqcWlJR uEWe1ii8s9yp
1Nk2ONSHVoQ1RMn6i4GPAZhw4GPzPlYGzxArgCe50gr4GAAzwMfw8biDW8dp BnwMgBngY/h4
PGFGZnFC0gv4GAAzwMd2+xiAdAc+BsAM8DF8DIC9wMcAmAE+ho8BsBf4GAAz wMfwMQD2Ah8D
YAb4GD4GwF7gYwDMAB/DxwDYC3wMgBngY/gYAHuBjwEwA3wMHwNgL/AxAGaA j+FjAOwFPgbA
DPAxfAyAvcDHAJgBPjbpY8nMRnb+TCY/qxJ+ZTIVkM1tZbCp6Glp5NSXTH59 exDP8yEu2cIc
IPAxAGaAj834mJxUXmH+WuvgR7BTBYW5nzWmyFTa3FhLI+2vo3xSul6XgxLN tSnfOCMjQ7M4
FvgYADPAx2Z8rHChg4+BAozVxG4z4mPDLc3A3MlC/bhFp8vlYPWsPCdXRkaG HiXDxwCYAT42
4+OA2ykdEXQ7KYfLLRtpJmae50cbFbovXv46KFnldlIOl8tJYQB7UsJZTWQ3 5s0VhqGJYWFp
O9Dd0qRlCo0mTvl8zZgFvnkqj1ZncGgfNnwMgBngY1M+DvCmJeRKCQ4VLmqU 0N9gVhNXPIdD
dC0kCid9rFAYmBwI7yv5Dmv0j+W+DOhuafIydZXPtUe3k22e4lYqJoNA47jh YwDMAB+b9TF3
faO4y5n8Okje/OMvcdyV2e10uNzMsnxsUOflFSQ15PtKtAWlN5cYR5H2aYXt 1Vta3AajUT7T
LjkBKw2wC6B/DMA4Ah9b8rFwndXtY35gkDWx061w8YOPUwBiRFr5AWmd/WNh nWpLs9A/Ztqj
m7xx7HSp6Bj3jwEYT+BjMz52u8huDzfAp3iVJMeriUdliJFqp9Mpu/jBx5Mf 6dvFtwAjPjbQ
0sz6mO07k1sp9M8Z8Hw1AOMIfGzGx2TXRzoIKV4WxgmJKyP5bVFymVjNbQEf T1YUZSjp4LLN
SOupAJ0tTdnxOsrnKiZ+/tvigwrwMQBmMO1jml6rFlwGmk5ZHwMAVIGPATCD NR93KQV8DEBa
Ax8DYAb4GD4GwF7gYwDMAB/DxwDYC3wMgBlw/xg+BsBe4GMAzIDnq+FjAOwF PgbADPAxfAyA
vcDHAJgBPoaPAbAX+BgAM8DH8DEA9gIfA2AG+Bg+BsBe4GMAzAAfw8cA2At8 DIAZ4GOdPu4G
AOgDPgbADPCxTh8DAHQCHwNgBvhYp491HjUAAD4GwAzwMXwMgL3AxwCYAT6G jwGwF/gYADPA
x/AxAPYCHwNgBvgYPgbAXuBjAMwAH8PHANgLfAyAGdLZxxXbDh492QofA2Av 8DEAZkhbH1/w
9T7hfN9ztAU+BsBe4GMAzJC2Pj56snXe4go9OdV97HU5KBaHy2vHhQwAg+hv hG6ndg7x+ni5
tYCPATBD2vp43uIK0scaHWVlH3tdDopyuoWXLrc0C4eVKxsA6ig3QrX2Fr8d up1caV6Xw0Kb
hY8BMEN6+pgZrK7YdpAx8bzFFU843zfiY6/LQVwH4wAfg/FArRGa9zGvYUHM poCPATBDOvj4
7VUHmOBTKrYdZHz8hPP9eYsrPEdbLvh6DfhYVcfkJY9Zdju50URLVzgAJCg3 Qkl7czsph9PJ
9KIlPva6HAot0utyOBwGPmwqAh8DYIaU9/GLH+2pre8MBoO19Z25H+0JBoPz Flf8Pw9Mf8L5
vvnnuVRH8+Q+DqB/DMYFvY2Qf6HLx7Y0V/gYADOkvI8fne9mFmrrOx+b72Zu GzOdY40+sX39
4wB8DMYFY42QWCaeAJMP3LidlNNptcHCxwCYIeV9/Ks3NtXWdzLxqzc2eY62 MMPUenrGqj7W
desOPgbjiqFGGNDVP2azGHo8QgH4GAAzpLyPg8Hgf5ux/r/NWPdfc9YxLz1H WzSe3tLnY/Y+
nezRVuJCJowUwsdgfFBuhKZ9TIyAWzMyfAyAGdLBxxI8R1vkT3gZ9nFAPO4n umHHDAIKo35s
Gp7nAraj1AiJ9qbhYylup6iJSl4aAj4GwAxp6GP5E14mfQwAUAI+BsAMaehj yRNe8DEA9gIf
A2CGNPSx5Akv+BgAe4GPATBDGvo4KHvCCz4GwEbgYwDMkJ4+NgR8DIAh4GMA zAAfw8cA2At8
DIAZ4GP4GAB7gY8BMAN8DB8DYC/wMQBmgI/hYwDsBT4GwAzwMXwMgL3AxwCY AT6GjwGwF/gY
ADOkvI8b9s1SC/gYgPEAPgbADOng47Hb3zJhTszwMQCGgI8BMEPK+/jUnrdj Y3dGx74dHbtD
upmPc7vztZWs7mNibh1MqAgSgP4WqHPST3uaNHwMgBlS3scnds+OjN75dEtD wZrDp/YKbuYW
vr105IOO3fmn9r5tzMdel0Nh6lkAJgrlFqjmXR0+tq9Jw8cAmCHlfXykbm4o cmckeicUvXN8
9zu8m98o2pEzZ1N09E534/JLRz44t/tvx3e9o9vH1qZrB8Aqai3QtI/tbNLw MQBmSHkff7nj
/UDkzqdbGpZVnjxa9y7v5pHonZHInZGoEEfr5ur1sca1ixjw43K4nZTD5WbT HS6vdHudQ4kA
8Ci3QLeTIhuf20k5nE6m0ytpZF6XQ7y5rZ8w4WMAzJDyPt5XvWAodHsodNsf un2w5j3ezUXl
xz747MDbJbtfLax56b1tgfCdgzXvGfCxskHdTl7DXpeDvQK6nfzdOD7R7SR1 ja42MIZWC+RX
uJ3CXWAdPrbvQyF8DIAZUt7HO7cVDATGGAfvrZ7Pu3lIFvuqF1jtH8v6vU7Z LT0ikcnpdqJz
DIyi2p2V+Fi2TIzfiEZx0D8GIOGkvI+rNxf1+sdu+sdu+sd2bhXcLOkfDwTG dm4rsHr/OL6P
hRxMh8TWbglIH/TcP1ZbDij0j3H/GICEk/I+3rph8fVB1sHVm4p5N5PBJLo3 Fen2MTsIrfR0
q7zDQQwbkhc9r8vhcDqhY2AO1RZozsdqBZoBPgbADCnv442fL706MMrE1krB zZL+8fXBsa0b
FhvwcUA89CfqAEuS+MdqKNH1TmRvAIyj1ALZZ7q457lUfGygQBPAxwCYIeV9 XLH+467+0U+3
NJR8fnwD4WZ5bPx8qTEf60X1UognuUBKAh8DYIaU93H52tLLN2OXb8Y6b8ZI Ny9Y8eWsJbvy
FlR19cWu9MWu9I1+vu7jCfUxbh2DFAU+BsAMKe/jsrJP+SDdTP7LLJSXl06U j5lhQdgYpCbw
MQBmSHkfq7lZMcbHxwCkF/AxAGZIKx+bAz4GwBDwMQBmgI/hYwDsBT4GwAzw MXwMgL3AxwCY
AT6GjwGwF/gYADPAx/AxAPYCHwNgBvgYPgbAXuBjAMwAH8PHANgLfAyAGVLe xw37ZskDPgZg
/ICPATBDyvu4fs/fx25/S8a53fn1e9+GjwEYJ+BjAMyQ8j4+sfud0bE7sbFv R8e+HR371kR3
Wd3HxGw4tv/2JTtNj7myycnnxfP+MFMu6ypS/jOfkgn5FPMAAB8DYIqU9/HR urmR0TufbmlY
+vmJhasOmeguK/vY63LYNFmsAsSMyWKp6t9eQaUG55JSLMThEM1aDx8DBeBj AMyQ8j7+snZe
KHonFL0zEr0Tit6RdJdjY99eOvLBud35J3bPNuJjr8sxflMlygo3vDdllRoU p0ohbnJaKvgY
KAAfA2CGlPexa8U2MiTd5UjsTnfjckbJR+vm6vWxhiCJMWwuB6cxYfBZvL1E agqF81MzKs8w
L4xts9vxq5gFYb3D5RUVItSW26OXr6dLTerE9vHqwB210y3sSihUvneQEsDH AJghHXzsD9/m
Q9JdDkXuhCLswqEd8wz4WLlbSAwLC8PMbidvIT7R7SR1Le0NSwvnFa3sY2Lv Em3LF1QS3U6u
WmxlvC6H7M61drHyPJR8kdiDfO8gRYCPATBDOvjYdyu2eP1Xi8qOzP/soKS7 LAmr/WNZv1cm
UTKR05LC5MjG+sdE59SIj4muvNCH1RqLFu/R6dZXB917B6kCfAyAGVLexws/ 3nikK8zHwo83
kt1lMgo+3mD1/nF8Hws5GPcp9bQ17h+riY0sMmDEx+KD0O9jdmM9ddC9d5Aq wMcAmCHlfTy3
uHxOUfncovK5RevmFpfPLVpHdpfnLts3a/GuV+Zv992KzS0q1+1j2Xd/2Oer JePVvEQ5HZES
8rocDqdTceBb9DQ0+bA1sT2fzMtONEKuc7xaolyd49V8XWS3pBXqoH/vIEWA jwEwQ8r7uLLi
o+6BWHf/KBNvvP8Z2V0m4/X3PzPg44B4xFXUb5QkuZ2Uw+l0yMdltb6EpPb9 Yz7d6SQdSFEU
Jdhdp4/FhyB8eIjzPJf4BMStg5G9g5QAPgbADCnv44p1n1zpi/Ex8+2PXpr9 0Uwm3v7opbc/
mjl72czZH700e9nMt5cZ87FeVL8UJH2SSzkLVAUmGfAxAGZIeR+Xry0tX7u8 vLx03drl5WuX
S7rLXf2j3QOj3QOj3f2jGyo+mlAfqz6kLd9c1ksGIImBjwEwQ8r7WIKku0xG xbqPJ8rHzEAt
DAtSE/gYADOkm48l3eXytaXl5aXl5Wzi+PgYgPQCPgbADOnmYxPAxwAYAj4G wAzwMXwMgL3A
xwCYAT6GjwGwF/gYADPAx/AxAPYCHwNgBvgYPgbAXuBjAMwAH8PHANgLfAyA GeBj+BgAe4GP
ATBDuvn4k3U73cfPuY+f+2TdTvgYgPEAPgbADGnl48JPq2u/bKn9sqXuy5ba L1sKP62GjwGw
HfgYADOkg4+v/+N0ffmL9eUvziqsLNv21ZptX63Z9lXZtq9mFVbuKHiqvvzF 6/84bdDHxOxL
+NlLkEiISbLitETVeU2UV+uY7UQN+BgAM6SDj8/tfD/a2+h8e3XByr0FK/cu XLm3gIsZb6+O
9jZ6a+YZ9zExo7FeI8e5IAJgDK/LoTwJt2Izi9f8xAK2oGP4GABTpI+PNaKl 6h3TPjZiWfgY
2IjX5VBUplkfi8qzomP4GABTpIOP22vfi14/Ee05Ebl+Inr9xKG9SyVxsnym LT4WRrHZS5kw
luh0E0PczFpypdkLH0hflHUsaWZuJ+VwOpletMTHXpdDsjlRoiUdw8cAmCId fPx1zbuRq19G
rn4Zvfpl5OqXh/YuHR27w8elIx94dn5i63g1t1Z6UVPpVbud6DUDw6jOny1p ZkQ7i+NjoUhr
OoaPATBFOvjYu31OuHNnpHMn869n5yeR0dufbmnImbMpGrvd3bhcW8nxnucS 33MjH63xuhyi
h2yICyLxFA56yMAMasPVqjdTuGVJ2xPfgXY4XF511eskEolQFT6Tf8ZdpfQ9 FH1MM888ir6H
ohV3MU8lfbKjcchqHMuj76HEkadVjp4zn4boOfOSVmfizWJIBx83bZkdubAl fGFL+OKW8MUt
O2s+G4neCUXuhKK3R5iI3K7b8ZnZ8WriWiaMRAtrmaufU/KgjerFFACd6Ll/ rPGgg0L/mG26
bos6tuZjnah5N1V9TBs/tGN59D15NO2jp1J0hY97mdKnaJyIe8bkGcyd5HTw ccPGv490lI+c
Kw93rA2fW1tVtWZ45PanWxoK1hx+o2hHzpxN/tBYVdUaqz7m02RD2Jyf1QYS ATCF20nFeb7a
qI/Zj48WW6YOH/voqRR9D0XP87CdiXkemqbpimy2J0duzvTb7qHoeaXsVseY 6x2f7hGVyUY2
3cVs71FK1F0lcnM2Ra1MeU5ZmVOzRVvxxzvPE2dHTAm2+bhUuiPFM6/r1HHH eIw4WK3zSbxN
/L4U3uJ4LYTtyjPZ8uh5FD3Pw649pn5OpJtzKRUednfC4es88yqtTvEkK7/F BOng41Ofvxn6
5pPQ15+MfP3JyNefbNi8fiAwJokNm9db9TE/DuhwOnn/ikcE2QTp81wYrwZm IVsRcaOYfJ7L
2BcBjHyBTw29/WP24phH0x5WFTQt+IPFI1wlmQHYYzRNM0OCeVwGQhVaPRWP po8Vq0TsnVxW
KFMlp0KZPnoq4Qy2KMXNZcdupl8rOZ/qp04xp65T56OnUvTUPLqLW5ZqXnzs 5AcdxcPkT45y
C6FpmlF4HrfA+Xuehz6WR08tjX9W+M2Zw2Qrr/Ru6jnziq1OepLVWwhPOvj4 +LrXQy2LQq2L
RloWjbQsWlu5oXdolOwf3xgaLf9igxEfAwBUMeLjPFmq2AqiyythMuEKqKg3 yV7EXSL9VZLf
gmUqIy9TLafiYVZkc2s5zShuzvdo5afFABqWFZ86eU69p072lvHVlhw7aUGa Ow9qb7F8c5ro
Sd9DET4WDwNo+Fi+OXNCyL77Mdrwmdf6FEiWqdJCeNLBx0fLXgs2zgudmRdq nBc6M++z9Vuv
DoxeuxW7NjB67dbo1YHRawOjn63bCh8DYAsGfKwwame3j/l0PUqWVOlYnla/ kCxTI6fCYXJ9
pmN57CrFzSVqMXnf14KP+fxxTp24HFK6kmOX+Jg5QG0fi06dR6iGqH+s08dK m9Mq7jR05vX6
ON7wTDr4+PDqVy/Uvh6snxU6PSt4etaysuorfaNd/bGuvtEr/bEr/bErfbGP y1R/yxo+BsAQ
dvpYY7xaUSp8mewllRxo1dHRURQAnzKPv9ErL1Mxp/phVmTTFR56qvjes8KO SH/IToviPUgp
pn2s/9RxN3HjH7vx8WqpzokbtEZ9rLi58gnROPNKSFudepmKLYQnHXx87njd vtJX9nz80q6S
F+qKnl28snbxqtrFq3YsXrlj8cod/AJ8DIAtRCIRSuOhFQZh5FDxwSulJ6qY h32OEeOox/je
m7wQ4qad9kM0WlWSlKBdptLTT8pl0kpC1dx8aqn4WzS6fcwOk5IDyPJTp3jm 9Z86RjkeaU7l
Y1d6nkv+FqttLjx3VsquYkqbmkdPpeh7sukKzdu90s3zRCeEXc6muzTOvCLi VqfaPuM9H5cO
PrYIfAyAIcbt90B0PJAFEoCkn22F9H6L4WP4GAB7sdvHRK8CX5xNOoj+rp4H m5XBW0zTNHwM
HwNgN/i9TADMAB/DxwDYC3wMgBngY/gYAHuBjwEwA3wMHwNgL/AxAGaAj+Fj AOwFPgbADPAx
fAyAvcDHAJghTXzcc+pU0/Q/diz5QJLeseSDpul/7Dl1Cj4GwC7gYwDMkA4+ 7jl1qum5R3qe
+nPTc4+QSu5Y8sEZJv0vj2goWWV+J0o2rY4i+ibVAcAMSdoO4WMAzJAOPr68 tfLMk7+PLFwQ
KZh/5snfe/8z5/LWSu9/5px58vdhLvHy1kqDPhbNZKw+YaLGdRCqBhZJ0nYI HwNghnTwMdMV
bnz0oZG33wm/Pbv7xefPPPpg94vPj/x9dnjW7DOPPiQfxzbiY2bKWLULIXwM xo8kbYfwMQBm
SBMfB4PBcy/Pbvif2SMzXxt56bWRl14Nv/TayEuvNvzP3517ebaGjHX5mLwQ CvPDMwlETtEq
YqSRySjdEIC4JGk7hI8BMEP6+DgYDDZMcdzIejD0jDP0jDM01dmb9WDDFIe2 jA36mEh3Ox0u
L5GisUpxLQBxSdJ2CB8DYIb08vG/3Xfjvt8FH3su9Nhzoceeu3Hf7xr+7T6b fOxwecm+Bd/B
4HJqrAoorgUgLknaDuFjAMyQPj4+9/Ls0//y6+BDT5FR/y+/smG8mu+WKNzA I6+DKquUNwQg
LknaDuFjAMyQJj4+9/Ls0/89g3HwhXt+W////vLCPb8NPvRU4KH/U//ff6mt ZD3PV3PXMLdT
+rUTcpxQbZXiWgDikqTtED4GwAzp4OOu9VX1P/o5a98f/fzcy7O71lede3k2 mdi1vsqgj1W+
9kmO+GkMBnJ3+ZSeo8F4NdBJkrZD+BgAM6SDj3tOnar/0c+7f53JyJjsNNf/ 6Oddv55S/6Of
G/w9EACAKvAxAGZIBx/zSpaPSzNKxu9lAmAj8DEAZkgTH1sBPgbAEPAxAGaA j+FjAOwFPgbA
DPAxfAyAvcDHAJgBPoaPAbAX+BgAM8DH8DEA9gIfA2AG+Bg+BsBe4GMAzAAf w8cA2At8DIAZ
4GP4GAB7gY8BMAN8DB8DYC/wMQBmgI91+rgbAKCP+D5eAwBID8bDxwAAnejy cQQAkOqMk4/H
Z2APgBQkAh8DACLwMQCJJqLfx/hbBSAl4X08HAh6u8L7zsbqvrYh3C3h3e13 attiCARCI/ad
jXm7wv5h+BiAtIf3sbc70nZ1LBAeGx29bT1CofB339Gx2BgCgdCIQHis7epY a1cYPgYg3eF9
7G681TcYHA6OBEcioXB0JBKzEgOD/jvf0aFwFIFAaMRIJBYIj+05G4OPAUh3 eB+v2nXW19l1
42b/0HAoOBINhWNWov+W//a3dHAkikAgtCMSG6ttg48BSHt4H3+wovarEyfP X7zcNzA0HIoE
wzEr0XfLP/YtHRiJIhAI7YCPAQCBAOHjVxesrq3b2dp29sbNgeFgJDgSsxJ9 A/6xO3QgFEUg
ENqRrD72uhwUh8PlnfBrkwy3kxJwupmUBNaMOEFJcX7SAreTfe+JBCNnX2hE TClKm3tdDj6R
yW9gD5baJO/jl975aMu27Y3N3p7e/qFAODASsxI3B/yjd+jhUFQUNbncqcit lqxCINSj2klR
zjoipW4GlVXcprsEacNT2rytJJNPZPI7SlpNlm8swsnoY/KSFAi4naJLoN3o vITJs02Aj1V2
4XU5SC94Xa7xPEH6SOynkwnB63I4nE4HeZj8Ues4fK/Lwb9p7FumvRVpf9Ot 1AC8j1+cvXTz
1qqGptZrvf2DgfDwSMxK9A74Y3dofygqRFtJJpW7nVsuromK1iIQatFWkunI neHIKm7jE1mh
Eguam0sbnvZWdTMoakaNZEeGyhdFRkaG9gGGo0nnY/K6NQFMOh9P8PnRSer7 2OtyOFxe5l8u
zYiPFbLE9TG/NgE+Pn2m9eqN/lvDYX8oZiVu9Pujt+mhYFQIdy7lKGkmUxAI HdHsysp0tTP/
col1M6isojZyQT0UGp72VuRac+WLIiMjIyMjQ6OEkaTzsYZuhDFaYrjP5ZSO 2iplczrZLqV4
yJAYhWbySrfVuNIRKYoVc7OJTrewXruS4mOR1c3A+RH3q7RqMp5VTSk4EYuE zLQBxcP3uhzy
JiRpQ6KTL3pHiDKFcx2n/ICdPt5SVX+mtftG/8BweCgUsxLX+/2R2/RgMEpE XQ5FZbraRYlt
JZncUea4+WxZi9oky3U5VFaOM4uicquC0cFg+yKHeCuhHCYDImWifZEja1Fb dLCtJNNR0sQm
Mg2jLkf4G6kj8kvagLzh1eVQWYvcbJvhVknLzHSVmC1fFBkcahlGIknoY6nm ZF0Qt1PQAO8I
+T05IpvsKqXYs5FvS+aXXBSVSiArxq/k9x6vklrHonR+ZEfEXa6FAX89NRm3 qqYSwmkn3wCN
/rGiL9kWTXxaIk++ervSW75tPt60gCC13QAADQdJREFUpaq+sbX7ev+APzwU jFmJ633+yBg9
GIiKg/Vojpt5WZfDL3tLMqmsRV4mkVkgl7lLHlcItyzJFh1054pXISZ5eEsy HSVNgehgoH2R
Q7Fh8IlMtC9y5FZJy1FoeBRTrDuXopj8imWaK18UGQSKxxhKRh+LOlncJYZ8 wovie7eyC1ac
bKRYZVc9hW01rnQGK2ZmE7XnfZQ6oeJ0t1P+0FncXdhd1RSClDBxppUOX3LG 5EMGwu1/7TOp
8tZolT+JfMxdYZkrl7ckkxIubVVO5nKm5mMuUbwVXyBxauoSbxGETdHkyuI/ YDW5srg3V61h
iJDakW94cdqYio8NlC8KbRkPJqOPpdcUUgwaY8j6sglr+Qus4lo52j7WUTEz mxi5fzyOPjZd
1ZSBHB0hJWi0fyys0/HJJsH941ONrV3X+/v94cFgzEr09PnDY/StQFQxzriy KGfdLc6sTCLj
41vcFfBWgFwmEsVbKacgUiSIEWkW5o1WahhssP1XxQLZhhenjSmuNVS+KJGR scZhJqGPJY8P
k5cnpdtvCpcz9Wz8omhElyxE7Xqmcf9YZ8XMHYtSdYgBY+Z8cQ/rkuPV8mFk Uz62WNXUQHpw
/Pk14mO3i+xgcyP/tvrY2ptA+njjlqqTja1Xevr7hsK3AjErce2mf2SUHhiO ClFdUtjKLLcX
ZlJTitsHhuumU9T06ujAcHSgtWQKlbuNW8smVudSVFZha3RguG46u0Buzhde N52SpCBSIqpz
qcySRiGFbxt8eyAbBp+HaUh8IYoNj99KXpTiWkPli44iIyND+zCDSehj9srC IVxhyJE6jWFh
rWz8LWnhiyvsrqTPc8nHqwWkF1OdFTO+iahuJIrfzxYS4+3dgI8tV3XyoyhD yanQcfhEE5IO
dwfi+Thu+cx6Sx+JRD7eXHWysbWzp//mUHggELMSV2/6Q6N0/3CUiLrp/KmY UccmtpZMYZOy
Clu5nNXctzln5E5n0+umkxmIoqZXS8ohCkdM8tg6g5pS3E6mNBZnUTPqyPaw dUbcN13e8Mjm
VCdrY6LGZqp8YxEIJ6ePAQATi8THJxpaL1/r7x0M9w/HrER3rz8Yo/v8UQQC oR3wMQAgEICP
EYhEB3wMAAgExD7esLnqeEOr71r/jcFw33DMSnT1+gMx+qY/ikAgtGN4BD4G AMh8/NXp1ktX
+6/fCt/0x6zElRv+4SjdOxRFIBDaAR8DAAIBwscz31lasbHqeAN8jEBMXPQN x/oDY3vOwscA
pD28j9+ev2TJ6m0nGtuu3RwcDMaGw7etRL8/HB6j/SNjCARCI/oDY83dYy1X wvAxAOkO7+Ni
l6tk1ebVdd4t9f07vOG6r2NWwt0S3t1+p7YthkAgNGLv2VhzZ9g/HICPAUh3 eB+7XK6NGzc2
NjZev37d7/fjbxyAiQQ+BiDdgY8BSAbgYwDSHfgYgGQAPgYg3YGPAUgGEuzj bgBAooGPAUgG
EuxjAEDCgY8BSAYwXg1AujOBPhbNlhZ/TixHys7kCQxBzCnLJxhpHEK7k09H yyFMxWus+cnn
SDfdbOFjANKdifUxeclTM7LWOpX8UHfq4nU5iHlyA4GAsfnXhVnhyTnjNbYi m5/+pqWVMyMj
Q08RBnw8HAh6u8L7zlr6iQD8VgACkSSx72zM28X+CkECfKx1/TLqV/g4lfG6 HA6Xl/mXSzPi
Y4UscX2sp5XG3w1PRkaGHiUb8LG3O9J2dSwQHhsdvW09QqHwd9/RsdgYAoFI SATCY21Xx1q7
wgnrH/OXL6/LIQwnCuN//BVXNsBNbkCMFzIZhJWiXo7T6TDW6wZJASdikZCZ 1iN769n8knfZ
7ZSOIbudlMPlZtuJuEWSzc+lr3yySsrHkMGhfagGfLy3fTQYuR2Ojo5EYtZj YNB/5zs6FI4i
EIiExEgkFgizv2KfgPvHwjVNJGmHy6tyaeMTyRt98kshMdgoZJRfkcEkQdAw KWSN/rGiL9nP
aMTnM/LjnuSmsnb/2JKPtZVswMd1X8eio7dD4Zgt0X/Lf/tbOjgSRSAQiYpI jJ3lbaL7x+Jb
enx3lrtkii9tkg4zua38Uihe63YyLzCgPVkhJUy8t0rulDQk+WCI18WNkCga N56P45Q/sf1j
xsfBcMyW6LvlH/uWDoxEEQhEoiJhPpZ0e3T5lRi3hI/TBfnDyxp9WQa1/iu7 TvaBT7eP45Q/
sfePWR+PxGyJvgH/2B06EIoiEIhERQJ9LL78qY8/K4xSGxqvVv9+C0h+pO8b /44a8bHbRXaw
ZTdEJsjHeg7XmI8jo7cDIzFb4uaAf/QOPRyKyqK9mB8UcJS0KmQYn2gryaSy itsMbVU3g/jY
NqOGS3HWSXK2Ls6i2MJFm2QublevTCJOQpyDlZyfuAdrtEBz1UCYj3AifSwx rNp4NbdO9I0X
he+TCi+E0kw8JQuSCEUZSlqI6K1XLUYyxKzfx3rKV6usYQz6OHZ7eCRmS/QO +GN3aH8oKoq2
kkyKmlEjvCyuiUrzKAd7mdaX2a6Q77RuBpWV6ZAnUhSbU0c9uU8GzMvtztzt E3oINh6sdiHm
3rKEvNEpG+HoBPsYAKCKMR+HY7f9oZgtcaPfH71NDwWjRLQXOagZ7qg4UWfU zaCyitrMbWs6
5Dutm0FlzXBmZbrahUR3LuXM5XLGraeVkzCu583EwWoXYu4tS8gbnbIxAh8D kDQY9HH09lAo
Zktc7/dHbtODwagQbSWZVG4VmcJGXQ6VtahNsty+iBuTynHX5QjDEXVcUfxa YkM3m57jjja5
sthBY1c7WTKfrlSapHpkxciUuhwhZ/siB5PC5JRvEtV3EuTVqMuhsha5csVH oZwtx5nFvKxy
koemcd64OnApma4S4wcrKVCyO9E7olR//r3TrgbCfIxE4GMAkgVjPh6J3h4K xmyJ633+yBg9
GIgK4S3JdJQ0kSls1OVQWYu84mV3LuWsU89D5bi5Mtn0uhyKopjy3bmsANjl 3CppCcxLWbo7
l91KyMMjylzlJCrgKGkSCiE34fKonATukwG/oaQadTmM2NSOgsgmrjaZTenc irdlKtnkyqJE
50fnwcoLFL1NxDvC11/5vVOvBsJ8hOBjAJKGJPMxe1GWhJIzvCWZIs0QecTl cLZQEY+ymcSO
IQyq/iFAVj1HSZPC3mWbeIkepMJJEB2vuBqqp0U9G/tZRFnz8m1Fn5CMH6zO OkvrL3vv4lQD
YT7gYwCSB8M+HgzGbImePn94jL4ViBLRvshB5bij4sToLe4SLFuOnnFlMb1M UTp3TWfyMNd0
9UL4ZSLRnUs569i9i0tTr5gkpX2RI2uRuyTTUXJGbS+6yuReKlRD6Si0swlr 2xc5ZPWRb+vl
62/qYHXWWX0T9r2LUw2E+YCPAUgejPk4FL19KxCzJa7d9I+M0gPDUVFU51IU Nb2ae9laUlgd
HRhuL8zkEqtzKSqrsFXYpLE4a0px+8Bw3XQhvW46X0hryRQqdxubSGaQL5ML zCZCaVOK26VV
lZYjS6nOpYQN5XtRjcbiLEqoALmhpBpqR6GerTqXyixpZE+LvD6K27JnsrE4 izJzsHrqLN1E
6b3TqAbCfAThYwCSBmM+DkZuDwRitsTVm/7QKN0/HJVGa8kUfoQzs6SRSazm Rlln5DIXbiGF
yt06HO0fjm5lvtg7o05cSFZhK1Mye8VXX2YXtoq+IFzSKKkSU/4wv63AlOJ2 ccnthZls3eR7
UThwMoSjY4qVnZkZdapHpJWtvZB9LCp3eiabqHLeuBSuJlOKS2Q1j3uwCgUS u4tbf2J3WtVA
mI9AGD4GIFkw7OP+4Zgt0d3rD8boPn8UgUAkKuBjAJIH+BiBSN+AjwFIHoz5 OBC+3TccsyW6
ev2BGH3TH0UgEImK4RH4GIBkwbCPb/pjtsSVG/7hKN07FEUgEImKCfBxNwBA HwZ8vLd9dCB4
u28YPkYgUiH6hmP9gbE9Z8fXxwAAnRjwsbc70tw91h8YGw7fth79/nB4jPaP jCEQiIREf2Cs
uXus5UoY49UAJAMGfDwcCLZciexrH637OmY93C3h3e13attiCAQiIbH3bKy5 M+wfDsDHACQD
BnwMAEhh4GMAEksEPgYAROBjABJNRI+PAQDpAHwMQAKJ72MJoVDo4sWLe/fu XbduXWlp6ScA
pCVLly6dOnXqkiVLlixZ4nItLi4uXrSoqLBw0bx578+d++7s2XP+/vfZb745 67XX3nj77dlP
T326sLDQpQ+m/GnTpvEp06ZNe2bm7Gdmzh6nY+EPZMWKFdXV1a2trTdu3Bge HoaPAZhIDPs4
Go329PQ0NDTs3bu3pqbGDUBasnXr1pdffnnz5s2bN2/euHFjZWXl559/sX79 5599tnL58k+X
LfukpGRZcfGSgoJFH320bObLMysqKjbogyn/tdde41Nee+21V+Yte2XesnE6 Fv5AqqurDx8+
fP78+b6+PvgYgAkmEon8/4r+oOdUebPDAAAAAElFTkSuQmCC
--------------010400040105010308010808--

--------------090801050004030608080106--


Previous Topic:Generating ID based feature reference
Next Topic:How to override an existing AdapterFactroy / avoid it from adapting
Goto Forum:
  


Current Time: Fri Apr 26 00:51:41 GMT 2024

Powered by FUDForum. Page generated in 0.03607 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top