Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Remote Application Platform (RAP) » custom widget problems
custom widget problems [message #125891] Mon, 23 March 2009 10:14 Go to next message
David Donohue is currently offline David DonohueFriend
Messages: 104
Registered: July 2009
Senior Member
Hello!
I am trying to make a custom widget of the Motion Chart in Google
Visualization.
http://code.google.com/apis/visualization/documentation/gall ery/motionchart.html

I am following the approach in RAP's documentation.
http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse. rap.help/help/html/advanced/custom-widget.html

Google suggests this code to invoke the MotionChart.
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('visualization', '1', {'packages':['motionchart']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
...
var chart = new
google.visualization.MotionChart(document.getElementById('ch art_div'));
chart.draw(data, {width: 600, height:300});
}
</script>

so I incorporated this into my custom widget class MotionChart.js.

The first problem I encounter is that upon invoking my custom widget, I
get a dialog saying "Are you sure you want to navigate away from this
page?".
I click OK, then in the browser I see this error.
Could not evaluate javascript response:
TypeError: currPackage is undefined
org.eclipse.swt.EventUtil.suspendEventHandling();...

I have tried a bunch of hacks to get the appropriate Google and
MotionChart libraries to load but no success. Any advice would be much
appreciated!

Thanks,
David Donohue
Re: custom widget problems [message #125906 is a reply to message #125891] Mon, 23 March 2009 10:37 Go to previous messageGo to next message
Ivan Furnadjiev is currently offline Ivan FurnadjievFriend
Messages: 2426
Registered: July 2009
Location: Sofia, Bulgaria
Senior Member
Hi David,
did you register the Google JavaScript API (http://www.google.com/jsapi)
in a similar way as GMapAPIResource in the GMAP demo?
Best,
Ivan

David Donohue wrote:
> Hello!
> I am trying to make a custom widget of the Motion Chart in Google
> Visualization.
> http://code.google.com/apis/visualization/documentation/gall ery/motionchart.html
>
>
> I am following the approach in RAP's documentation.
> http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse. rap.help/help/html/advanced/custom-widget.html
>
>
> Google suggests this code to invoke the MotionChart.
> <script type="text/javascript"
> src="http://www.google.com/jsapi"></script>
> <script type="text/javascript">
> google.load('visualization', '1', {'packages':['motionchart']});
> google.setOnLoadCallback(drawChart);
> function drawChart() {
> var data = new google.visualization.DataTable();
> ..
> var chart = new
> google.visualization.MotionChart(document.getElementById('ch art_div'));
> chart.draw(data, {width: 600, height:300});
> }
> </script>
>
> so I incorporated this into my custom widget class MotionChart.js.
>
> The first problem I encounter is that upon invoking my custom widget,
> I get a dialog saying "Are you sure you want to navigate away from
> this page?".
> I click OK, then in the browser I see this error.
> Could not evaluate javascript response:
> TypeError: currPackage is undefined
> org.eclipse.swt.EventUtil.suspendEventHandling();...
>
> I have tried a bunch of hacks to get the appropriate Google and
> MotionChart libraries to load but no success. Any advice would be
> much appreciated!
>
> Thanks,
> David Donohue
>
>
Re: custom widget problems [message #126044 is a reply to message #125906] Tue, 24 March 2009 01:54 Go to previous messageGo to next message
David Donohue is currently offline David DonohueFriend
Messages: 104
Registered: July 2009
Senior Member
Hi Ivan,
I am pretty sure that no API key is required to access this library.
Best,
David Donohue
Re: custom widget problems [message #126058 is a reply to message #126044] Tue, 24 March 2009 08:29 Go to previous messageGo to next message
Ivan Furnadjiev is currently offline Ivan FurnadjievFriend
Messages: 2426
Registered: July 2009
Location: Sofia, Bulgaria
Senior Member
Hi David,

without a look at the code of your custom widget I can't say anything in
addition.

Best,
Ivan

David Donohue wrote:
> Hi Ivan,
> I am pretty sure that no API key is required to access this library.
> Best,
> David Donohue
>
Re: custom widget problems [message #126158 is a reply to message #126058] Wed, 25 March 2009 02:56 Go to previous messageGo to next message
David Donohue is currently offline David DonohueFriend
Messages: 104
Registered: July 2009
Senior Member
Hi Ivan,
I committed my custom widget code to this repository

http://code.google.com/p/inqle/source/browse/#svn/trunk/org. inqle.ui.google.widgets

Thanks much for your valuable time.
Best,
David Donohue
Re: custom widget problems [message #126195 is a reply to message #126158] Wed, 25 March 2009 08:54 Go to previous messageGo to next message
Ivan Furnadjiev is currently offline Ivan FurnadjievFriend
Messages: 2426
Registered: July 2009
Location: Sofia, Bulgaria
Senior Member
Hi David,

taking a brief look at the code I found one possible problem - the JS
library registration. In MotionChartResource.java the resource is marked
as external (look at isExternal()) but it is not. Change here to return
false. Same for MotionChartAPIResource.java and loadVisualizationAPI.js
- but here you have to change the location to relative path like
"web_files/loadVisualizationAPI.js". If you leave it as external
resource with absolute path like
""http://localhost:7500/web_files/loadVisualizationAPI.js" make sure
that this file is accessible from this address.

Best,
Ivan

David Donohue wrote:
> Hi Ivan,
> I committed my custom widget code to this repository
>
> http://code.google.com/p/inqle/source/browse/#svn/trunk/org. inqle.ui.google.widgets
>
>
> Thanks much for your valuable time.
> Best,
> David Donohue
>
Re: custom widget problems [message #126208 is a reply to message #126195] Wed, 25 March 2009 09:56 Go to previous messageGo to next message
David Donohue is currently offline David DonohueFriend
Messages: 104
Registered: July 2009
Senior Member
Thanks Ivan for the help!

> In MotionChartResource.java the resource is marked as external (look at
> isExternal()) but it is not. Change here to return false.
I had "return false" originally but this causes RAP to think I am
navigating away from the page when my local JS library calls
google.load(...). So upon load of my custom widget I get dialog: "Are you
sure you want to navigate away from this page?". After i click "OK" i get
a white browser screen with the same error: "TypeError: currPackage is
undefined". When I set isExternal() to true, I do not get this unwanted
dialog, but i get the same error "TypeError: currPackage is undefined".

> Same for MotionChartAPIResource.java and loadVisualizationAPI.js
I am not using this resource currently. It is commented out in
plugin.xml, I tried this as a hack to see if I could get google.load(...)
to work when within a resource accessed via HTTP.

> make sure that this file is accessible from this address.
When I tried this approach, I did make sure by adding JS alert(...)
statements. It was indeed accessible.

Best,
David
Re: custom widget problems [message #126237 is a reply to message #126208] Wed, 25 March 2009 11:15 Go to previous messageGo to next message
Ivan Furnadjiev is currently offline Ivan FurnadjievFriend
Messages: 2426
Registered: July 2009
Location: Sofia, Bulgaria
Senior Member
This is a multi-part message in MIME format.
--------------060104010501080102050507
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

Hi David,

based on the code in the repository I've modified the project a little
(add project file, set isExternal to false, commented deprecated method
setHtmlAttribute, add starting EntryPoint and so on). If the calls to
google specific methods are commented the application starts without
problem ("Constructed." is printed on the console). It seems there are
some conflicts between qooxdoo and google libraries. I will suggest you
to try to create a qooxdoo standalone application (based on qooxdoo
0.7.4) that use this Google MotionChart library and ask qooxdoo
newsgroup about this error.

Best,
Ivan

David Donohue wrote:
> Thanks Ivan for the help!
>
>> In MotionChartResource.java the resource is marked as external (look
>> at isExternal()) but it is not. Change here to return false.
> I had "return false" originally but this causes RAP to think I am
> navigating away from the page when my local JS library calls
> google.load(...). So upon load of my custom widget I get dialog: "Are
> you sure you want to navigate away from this page?". After i click
> "OK" i get a white browser screen with the same error: "TypeError:
> currPackage is undefined". When I set isExternal() to true, I do not
> get this unwanted dialog, but i get the same error "TypeError:
> currPackage is undefined".
>
>> Same for MotionChartAPIResource.java and loadVisualizationAPI.js
> I am not using this resource currently. It is commented out in
> plugin.xml, I tried this as a hack to see if I could get
> google.load(...) to work when within a resource accessed via HTTP.
>
>> make sure that this file is accessible from this address.
> When I tried this approach, I did make sure by adding JS alert(...)
> statements. It was indeed accessible.
>
> Best,
> David
>

--------------060104010501080102050507
Content-Type: application/octet-stream;
name="org.inqle.ui.google.widgets.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="org.inqle.ui.google.widgets.zip"

UEsDBBQACAAIAJNoeToAAAAAAAAAAAAAAAAmAAAAb3JnLmlucWxlLnVpLmdv b2dsZS53aWRn
ZXRzLy5jbGFzc3BhdGidjz0LwjAURWcF/0PIbqqbQ2sRqaBDlVJnqcmjjcaX mA/Rf29Vii46
uL17OZzLi9PrSZELWCc1JnTMRpQAci0k1gndlovhhKbTQT/mqnLOVL5pQ++d AL29kaNEkVBn
OSWP8nVG30musSO1rRlwJY0DdhCeqSogb9p1tiqy3Xydl7NlnhV/2IwAxrUF ZuEcpAWxUaGW
6H6pdPAm+M62l/iE4+jz+ztQSwcI1Ryc0qUAAAAzAQAAUEsDBBQACAAIAJNo eToAAAAAAAAA
AAAAAAAkAAAAb3JnLmlucWxlLnVpLmdvb2dsZS53aWRnZXRzLy5wcm9qZWN0 vZLLTgQhFETX
mvgPk94LunPB9CRq3GlMRj8A4Yp3wkseo58vIK12OiYuzOxuFVUcArDNu9Gr PYSIzq6Hc3I2
rMAKJ9Gq9fD4cHN6MWzGk2Pmg9uBSNcQRUCfSrq4R8xyA6MLiqB91UAyEuWc KtMbSgUpMtoS
NSqcMWDTyOg0VbfvG5ugM/WUUcutB1FVl1elyq1szg86CI0+AtnJRIQLZeB7 3goQvo9QGjyo
XNmxazo3GF1Q/sT1Esgtt/gMMV0eFrsVL2D4v0C7M1154aUcoKc/xQJ/r7NC e9cWK72FfivM
nscuOtNciV9/Yf7jPgBQSwcIME8Ls+8AAACwAgAAUEsDBBQACAAIAJNoeToA AAAAAAAAAAAA
AAAsAAAAb3JnLmlucWxlLnVpLmdvb2dsZS53aWRnZXRzLy5zdm4vYWxsLXdj cHJvcHO10LEO
wiAYBOCdp6gPIERMTe2sUxNHV4OFIJEC/kDbx7dsJB2qTbpcLrnhS64paIl8 b+qhrYE9OOvr
XoBX1uwjaHQvygMi0052KaaJVNWRBIjmTSxIrMxHCxwVltbKqQ2KSxE8ut4u CLeaee9YeKFm
iTnRGUOXGZIRSXQ6SmWwA+sEBCX8D/B5FTyXkv+MSvP/+GoVP4OSDoLxTuAw hs3+zojs77HT
m4kZkcQvUEsHCE2Or/2sAAAAsAIAAFBLAwQUAAgACACTaHk6AAAAAAAAAAAA AAAAKAAAAG9y
Zy5pbnFsZS51aS5nb29nbGUud2lkZ2V0cy8uc3ZuL2VudHJpZXOl0T2P3CAQ BuAe3V8xHhgw
g7sUiZQiqa66JrJh8Frx2o4/cvfzg52VopwUbaSdCsQInpdRIETsF0GE4rJt c12W/fhjYNlN
UzdwmCLLMF3L9edYbss+fi+npZO/W/b+1iVf+9jxtt67QeTSAL4ALLR9Bl1b XRsl0YLx1cuJ
iEucxumys/i7KozISFSwNU0BRkHRtgYLn5rELlpSbRJP4pXbb6kfeD1TPYkv H58/FJ+/frpt
ZRiadZ2b7SKOLvFOpKDWqlYkFTpQ/kW4lCxVzjiT34meWFXGNpA0EMVk/Ls4 BmuoZD5UDo84
+p9xboXgsmpdws3X9uNtNQ97149yXqaZl63Pge6A/QmORkUKWZoAWg2GPeXu DA+JjHb8KBgO
5N4P8f9leVSHLAVS+f+ibzMPXTBIlWcAytNj29hHZao6bAs38cpye9vuqcyp 0tGASVEZVxGz
C15DZdE3ngL5VuOjKovqzzDfrsM9lT1VaJFVkzmtcg50SsCaEgNhzOPFh//K OsqqX1BLBwi+
QTq0hQEAAPwDAABQSwMEFAAIAAgAk2h5OgAAAAAAAAAAAAAAAD4AAABvcmcu aW5xbGUudWku
Z29vZ2xlLndpZGdldHMvLnN2bi90ZXh0LWJhc2UvLmNsYXNzcGF0aC5zdm4t YmFzZZ2PPQvC
MBRFZwX/Q8huqptDaxGpoEOVUmepyaONxpeYD9F/b1WKLjq4vXs5nMuL0+tJ kQtYJzUmdMxG
lAByLSTWCd2Wi+GEptNBP+aqcs5UvmlD750Avb2Ro0SRUGc5JY/ydUbfSa6x I7WtGXAljQN2
EJ6pKiBv2nW2KrLdfJ2Xs2WeFX/YjADGtQVm4RykBbFRoZbofql08Cb4zraX +ITj6PP7O1BL
BwjVHJzSpQAAADMBAABQSwMEFAAIAAgAk2h5OgAAAAAAAAAAAAAAAEQAAABv cmcuaW5xbGUu
dWkuZ29vZ2xlLndpZGdldHMvLnN2bi90ZXh0LWJhc2UvYnVpbGQucHJvcGVy dGllcy5zdm4t
YmFzZSvOLy1KTtXTU7BVKC5K1uflyi8tKSgtAQskZeYBBYCkXmZeck5pSmox UNDXNcRR19PP
TV8nhpdLARXoYRHLKsamsiCnNB1obkVuDhbJ8tSk+LTMnNRioO0AUEsHCKeZ 4+ZZAAAAoAAA
AFBLAwQUAAgACACTaHk6AAAAAAAAAAAAAAAARQAAAG9yZy5pbnFsZS51aS5n b29nbGUud2lk
Z2V0cy8uc3ZuL3RleHQtYmFzZS9wbHVnaW4ucHJvcGVydGllcy5zdm4tYmFz ZQMAUEsHCAAA
AAACAAAAAAAAAFBLAwQUAAgACACTaHk6AAAAAAAAAAAAAAAAPgAAAG9yZy5p bnFsZS51aS5n
b29nbGUud2lkZ2V0cy8uc3ZuL3RleHQtYmFzZS9wbHVnaW4ueG1sLnN2bi1i YXNllZFNT8Qg
EIbPmvgfkDtU48UDtdmYaDyYGKNnw3ZHdjYssAzV+u+l3bZao0Y5zcc7D++A qtqtZS8QCb0r
+ak84Qxc7VfoTMkfH67EOa8ujg5VBbXFQPChPcvavhVsY9Dl6EBBm8B1bRY8 ulRyH40cJiXs
GnS+leuUgoxgkFJ8ywH5JtZAPBNYPmqs7FPGtEVNJS9eYfn0jDYrx85SEwin tzDrFj1IFZOZ
zlpfmiojAFd7i+h2FmSD0nhvcrQhHXC65ptdog6d/GfzrLaa6Be6vO6Txd3N /TAyGM+QYyH+
zrn1KW90udYxzWBC/N/TJ9YXV/PnVMX06e9QSwcIvjC31/gAAABCAgAAUEsD BBQACAAIAJNo
eToAAAAAAAAAAAAAAAA+AAAAb3JnLmlucWxlLnVpLmdvb2dsZS53aWRnZXRz Ly5zdm4vdGV4
dC1iYXNlL3JlYWRtZS50eHQuc3ZuLWJhc2Vlkb1qwzAQx3eD3+HI0iWVsyZb oFAyFEKbFxDR
VRaRdap0jtDb96SQLt1s87v/ly+zyxD9al9dgPaY6O6yo6C9gjcKLwxrRuCG CaFDbYhZrywM
YLi7RGHBwGocxuGYhUR4J7Ie4Xg+QUA0Wc76yw3rFgqKAkad0AAFhG9KUGlt 6pQMJmAah4en
KH3omKE4Y5EbIWACT1ft4fN4li+Ztfe6hVFwmfFpA4Ywi7yv41Ao3bpLExQ+ GJ1MPzcYPdWW
XtCH7EyZD/vdftf7nL57tKKFYOpLuM7qQKKWoOFTpMTbDra2DbQYMGnGR14q vf44SDAFX4gw
M8fDNJVSlO1bqSstk44uT4sUnrKzYY1q5sW3GBeC5yABi69/+qZ3/TeUJ7rl XtnxOMhsjdhQ
ssqFHzFbnbLNR8n1BnLNjEv7rRETV/ULUEsHCAh4LDJCAQAAEwIAAFBLAwQU AAgACACTaHk6
AAAAAAAAAAAAAAAANQAAAG9yZy5pbnFsZS51aS5nb29nbGUud2lkZ2V0cy9N RVRBLUlORi8u
c3ZuL2FsbC13Y3Byb3Bz81YwMuUqLsuzKk+2KkqMT0kssypLLSrOzM/TLS3K 4QpTMDPg0gfK
6yuCCKCUvoWFkX5JUWletn5+UbpeZl5hTqpeaaZeen5+OpBVnpmSnlpSrO/r GuKo6+nnxuXq
58Ll6+jn6eYaHKLn68blTchCcyOKLNRHtgxkOQBQSwcIgDfBvXoAAADiAAAA UEsDBBQACAAI
AJNoeToAAAAAAAAAAAAAAAAxAAAAb3JnLmlucWxlLnVpLmdvb2dsZS53aWRn ZXRzL01FVEEt
SU5GLy5zdm4vZW50cmllc52OsW6DMBRFd6u/Yvv5PTs8s2UIUgaylKkbYJug UtwSaH+/SMnQ
TpV65qt7jgEhwrgIZhLXdX0vtR7njymqIedhin0OUfX5Td8+Z70u2/yq8zKo +2QbHyv1NYYh
rjddn5qjPF+qv67EDgJ4CSTRNYClpRIOCoFNQS97DYqwhDzn6xbFbw4UKBKz jM62EqwB2XWW
pE9tikVwbLoknkR9vJyr03Oj6kqkcbq//HAaKNGUplDkCzB+d1qH3NmQWuYI LbFj1wH1SL5l
xPDv4AfEZs/6BlBLBwgj78n80gAAAHABAABQSwMEFAAIAAgAk2h5OgAAAAAA AAAAAAAAAEgA
AABvcmcuaW5xbGUudWkuZ29vZ2xlLndpZGdldHMvTUVUQS1JTkYvLnN2bi90 ZXh0LWJhc2Uv
TUFOSUZFU1QuTUYuc3ZuLWJhc2Vtj01LAzEQhu+B/IfQszvU4qmlBwtFBCul gp7H7TROzSZp
PrbVX29oZGnF4/A+78es0PKOYmpeKUR2dqpuYSzFItutoWb1qw7iZJCesaOp enBOG1JvvNWU
otq5oJatYR9Jbe7XA/zy1b07w201uaCB7cEQZAZ9ToBjTZhFtuVMpWueQqYh 4XLexcAn16Lh
b0xnzZus2UqxoUPmQE2FaiHVWRDQQzgmKR4770Jq1th+oi7QHns8QaTQl/5Z X/vmowncwXh0
I8U1AB8p+b+UFMvTdWix/fftPqJnKX4AUEsHCK9RFqHcAAAAfQEAAFBLAwQU AAgACACTaHk6
AAAAAAAAAAAAAAAAMAAAAG9yZy5pbnFsZS51aS5nb29nbGUud2lkZ2V0cy9N RVRBLUlORi9N
QU5JRkVTVC5NRmWQT2sCMRDF74F8h+C5O1jpSfHQghShFrHQnqfrmI5mk5g/ q+2n79bIovY4
896892MWaHlDMVXvFCI7O1b3MJTiKdu1oWpxVntx1Euv2NBYPTunDakPXmtK UW1cULPasI+k
Vo/L3vz23Xw6w3U5ckED270hyAz6lACHkjCJbLsxdV3TFDL1CZd4F4AvrkbD P5hOmjdZs5Vi
RfvMgapiKoVUsCCg72rvpPi3DYckxbzxLqRqifUOdXe6xRaPECm0HdWkLRTT wQgeYDj4S7ky
wFdK/tYlxex4HXouv/3BNqJnKX4BUEsHCJXJajvjAAAAkwEAAFBLAwQUAAgA CACTaHk6AAAA
AAAAAAAAAAAAMAAAAG9yZy5pbnFsZS51aS5nb29nbGUud2lkZ2V0cy9iaW4v LnN2bi9hbGwt
d2Nwcm9wc/NWMDLlKi7LsypPtipKjE9JLLMqSy0qzszP0y0tyuEKUzA15dIH yusrggiglL6F
hbF+SVFpXrZ+flG6XmZeYU6qXmmmXnp+fjqQVZ6Zkp5aUqxfXJTM5ernwgUA UEsHCPzfS81c
AAAAYAAAAFBLAwQUAAgACACTaHk6AAAAAAAAAAAAAAAALAAAAG9yZy5pbnFs ZS51aS5nb29n
bGUud2lkZ2V0cy9iaW4vLnN2bi9lbnRyaWVzhY9LEoIwEAX3U1wlyeSHgXO4 cgdkCCmRaAh6
fSl048ped73qJxHAxwzOaZhKubdCxOUxEw8phZmG5IkP6SbW5yJK3parSDnw j7LFr8Vf0Qcq
q1jz8G8FdhRiw1AzZc+oWqtaI7m2aJr6coT47NOSpo3gl1p7Tdo5RtZ0DI1E 1vdGs2bsRjp5
62Q/QgV74fGpgjdQSwcIZAe6j5IAAADeAAAAUEsDBBQACAAIAJNoeToAAAAA AAAAAAAAAAA0
AAAAb3JnLmlucWxlLnVpLmdvb2dsZS53aWRnZXRzL2Jpbi9vcmcvLnN2bi9h bGwtd2Nwcm9w
c/NWMDLlKi7LsypPtipKjE9JLLMqSy0qzszP0y0tyuEKUzC15NIHyusrggig lL6FhbF+SVFp
XrZ+flG6XmZeYU6qXmmmXnp+fjqQVZ6Zkp5aUqxfXJQMkudy9XPhAgBQSwcI 3ZZVr14AAABk
AAAAUEsDBBQACAAIAJNoeToAAAAAAAAAAAAAAAAwAAAAb3JnLmlucWxlLnVp Lmdvb2dsZS53
aWRnZXRzL2Jpbi9vcmcvLnN2bi9lbnRyaWVzhY9LEoIwEET3U1wlyeSHgXO4 cgdkCCmRaAh6
fRXduPJtu6s/EgF8zOCchqmUaytEXG4z8ZBSmGlInviQLmK9L6LkbTmLlAP/ WLb4dfFH9IHK
KtY8vPV/SfBCITYMNVP2iKq1qjWSa4umqU/7GJ99WtK0EfxSa69JO8fImo6h kcj63mjWjN1I
B2+d7EeoYK/en1XwBFBLBwgR2HGFlAAAAOQAAABQSwMEFAAIAAgAk2h5OgAA AAAAAAAAAAAA
ADoAAABvcmcuaW5xbGUudWkuZ29vZ2xlLndpZGdldHMvYmluL29yZy9pbnFs ZS8uc3ZuL2Fs
bC13Y3Byb3BzHclNCoAgEEDh/ZzCDpADhSGuaxW0bBtRIlIojX/Xz9o8Hnwz 6wSE7FQ5FO3b
uWeVNQXrXZvohpUNArA6Nl8qoZQ9RkruQk+GW/fcmifLjfemXrGn0TFgoONz /B2mZYQXUEsH
CLQ70rxgAAAAagAAAFBLAwQUAAgACACTaHk6AAAAAAAAAAAAAAAANgAAAG9y Zy5pbnFsZS51
aS5nb29nbGUud2lkZ2V0cy9iaW4vb3JnL2lucWxlLy5zdm4vZW50cmllc4WP uxLCIBRE+zv5
FeDyiiTfYWWXBEIYFZSA/r6a2Fi57Z45s8sRwIYMxkhYSrn1jIV4vzjqU/IX NyXr6JSubH1E
VnKNZ5aypztSw5eiz2C9Kytb8/Tpd8U/H7wjEDuCkgh9RNFr0StOpUbVtadt ks02xbRUB79p
pZVOGkOcVgNBxZGMo5Kkm4fZHaw2fJyhgRq2cw28AFBLBwht8ZyhlgAAAOcA AABQSwMEFAAI
AAgAk2h5OgAAAAAAAAAAAAAAAD0AAABvcmcuaW5xbGUudWkuZ29vZ2xlLndp ZGdldHMvYmlu
L29yZy9pbnFsZS91aS8uc3ZuL2FsbC13Y3Byb3BzHclBCoAgEEDR/ZyiDpAD RSGuaxW0bBtS
IkOhNKZdP23z+fDmqu0hJKfeXbHeDp1UMhzIuybyBWs1SMDsWJdkQik7fDi6 Ez1bQe6+jIgk
rPc230uHNU/AwHtx/B0jwbSM8AFQSwcIXbKgdGIAAABtAAAAUEsDBBQACAAI AJNoeToAAAAA
AAAAAAAAAAA5AAAAb3JnLmlucWxlLnVpLmdvb2dsZS53aWRnZXRzL2Jpbi9v cmcvaW5xbGUv
dWkvLnN2bi9lbnRyaWVzhU87EoIwFOzfcJV8yAcD57CyA/IIGTHRkOj1VaCx crud3dlPzQGs
T2CMhDnne8eYD48FqYvRLThGi3SMN7Y+A8uphCuLydHdUvzhoi9vHeaVrWn8 6nsEK/5fJHwg
OG8Jl0ToMxedFp2qqdRctc1lW2WTjSHOBeEXjbQSpTEEteoJVzUnw6Akaad+ wpPVph4mqGAv
3T5W4EPGFPrloG9QSwcIYCHGkJ4AAAD9AAAAUEsDBBQACAAIAJNoeToAAAAA AAAAAAAAAABE
AAAAb3JnLmlucWxlLnVpLmdvb2dsZS53aWRnZXRzL2Jpbi9vcmcvaW5xbGUv dWkvZ29vZ2xl
Ly5zdm4vYWxsLXdjcHJvcHPzVjAy5Souy7MqT7YqSoxPSSyzKkstKs7Mz9Mt LcrhClMwN+XS
B8rrK4IIoJS+hYWxfklRaV62fn5Rul5mXmFOql5ppl56fn46kFWemZKeWlKs X1yUDJLXB8vr
l2bqQ+S5XP1cuABQSwcIbXTx9GYAAAB0AAAAUEsDBBQACAAIAJNoeToAAAAA AAAAAAAAAABA
AAAAb3JnLmlucWxlLnVpLmdvb2dsZS53aWRnZXRzL2Jpbi9vcmcvaW5xbGUv dWkvZ29vZ2xl
Ly5zdm4vZW50cmllc4WPSRKCMBRE97+4SuYEA+dw5Q5ICHFIMINeXwU3rnzb 19XVzSiA8Qm0
FrCUsvaE+HC/WuxidFc7RWPxFG8kPwIpqYYLicnhPVL9N4Wf3jhbMslp+vi9 glRPdv+vGd5w
SjtEBeLqSHmveC8ZForKrj1t40wyMcSlWvilFUZYoTWySg6ISkbROEqBunmY 7cEozcYZGjjn
YfXb0wZeUEsHCBk/1r+bAAAA9AAAAFBLAwQUAAgACACTaHk6AAAAAAAAAAAA AAAASgAAAG9y
Zy5pbnFsZS51aS5nb29nbGUud2lkZ2V0cy9iaW4vb3JnL2lucWxlL3VpL2dv b2dsZS9qc2Fw
aS8uc3ZuL2FsbC13Y3Byb3BztdHdCoIwFMDx+z2FPUA7aR+od1ERIUV00W0M HTaTrfahr5+z
u0ys0Jsx+B/Yj7PI8eZIFTws41CSS0KKsKBSMcHHRubo7PgugqrDyB5VAt+f gpaG30DIFDP+
yCk2DKdCpNWtZElKtQIlY9uh7mAYvDpkitwZ2hzWaC909crqSqQ+USWMjCnO SEFQ1EVyJ4v+
TdDqecPiTHUTg6bQ61NoEQ3XV8sL/KFlH3a2PO5+/uNgWGeDZMnbevgf7WwA bYvGQp9QSwcI
KrbHw8IAAAC3AwAAUEsDBBQACAAIAJNoeToAAAAAAAAAAAAAAABGAAAAb3Jn LmlucWxlLnVp
Lmdvb2dsZS53aWRnZXRzL2Jpbi9vcmcvaW5xbGUvdWkvZ29vZ2xlL2pzYXBp Ly5zdm4vZW50
cmllc6XSO28bMQwH8F3IV7k7kXrytqJD0SFAUXTKpgdln+ueknukX7+2L0Od xU3NlcQfP5EC
KUQeJuG9Evtlee67bhhfjtzuat0dOdXMbaq/uvl17JZpHX92ddq128g6vE21 v4e842Xu5imd
+1tEtw7d1u8Oc3gebuWLU6GU1EjVoPkhsTfYa2iVkZrs04WYp1zHul9ZXJdV WbHyvmGjQyM1
yCZGrRoqobDLxkMs4kE81mWo4+d9mJbvPNd1StwewmsQZThukX8BQPYIPbjW W5BATwLJyogZ
tQoG2BoXbEzOBnQpRQruv/VvBQrMNbI9zLdo6kIriFKRyUSo0RjKKXuPQWkg RtLxHU2rXtoW
pQenzjS8RTPK4nvaP+yNLriYUnE2IhROCnwqJVDhGJxLGVDTvTjQhq5xn759 /ch93bbEpDnF
0/Y0sdPeZIssS2SZ2GCSoO534vm+Xy4//6NEsxE5+HMfgaOmYiB5wKJMCUDu hLyfeHrmg/gD
UEsHCOmS8Qx2AQAAFgQAAFBLAwQUAAgACACTaHk6AAAAAAAAAAAAAAAAaAAA AG9yZy5pbnFs
ZS51aS5nb29nbGUud2lkZ2V0cy9iaW4vb3JnL2lucWxlL3VpL2dvb2dsZS9q c2FwaS8uc3Zu
L3RleHQtYmFzZS9Hb29nbGVBUElSZXNvdXJjZS5qYXZhLnN2bi1iYXNlrVTf b9owEH5H4n84
8QTV6kClal3RHhBChYmWCqq9IicciTfHzmwHhqr97zs7AVr6Q5tUC6GLfffd 3XefXfDkJ08R
tEmZUL8kslKwVOuUrB+WF6LfbERnH7uaDTiDoS52RqSZg3bSgYtu9+Kc/q5g opTWheGJI3Ot
Tc6d0MranXWYI9zk8ZgFgIGUEAAsGLRoNrhi8JAJC4XRqeE5cLUClyHwJNF5 wdVOqBQID43g
0gYQbpB2VuSz4ULyWCKUaoUmxJFjbkGvw8cokaKwCPdlLEUCU5Ggos9Nj3UD 0jYTSXZIJdBS
FNWyEtYZEZe+iU+hIto8JuMuBGfOFddRtN1uGVZ5GA0kkphyGWEhzze9Lstc LoN3zZ+qgLWx
12HHr39gD85BKOGIAhjcT6qS8kLSsXLB24N96IqaDcqgjQsq2zdoto4URxwr LhnxI9n44Xba
f9OXhqxLk6Blk3lt/pfzLVckdMPmmNJM0MyKQA1hNBtFNdREcmvhJqifuNlH HvmxcNx89IFA
YhMbkhQsaBokL6mTQGK/Pq2A68MU3TDjxqJrd3y8n5hBVxoFvnc2HA/mi9HD 8m5wO1pOFrPl
1dXll2Wv7z3/PAMc+kqnmnupEmplvQD1CmQ+qfdudw7m3v0V4BN2PHhtvkA/ cWXfR/PFZHb3
Cuix/WlNzxFsTxh8hdaTa1A/QXSbovAMtfw7FL0R4Ldkpq27/nzZ7UZbjJdr IdHSAV8dxknv
Wav/rIMnwzotOdZaIld0W78tpiI23Oxe0mtKfDd09LuS97uR9PsLUEsHCBmY oj9PAgAAhQUA
AFBLAwQUAAgACACTaHk6AAAAAAAAAAAAAAAAYgAAAG9yZy5pbnFsZS51aS5n b29nbGUud2lk
Z2V0cy9iaW4vb3JnL2lucWxlL3VpL2dvb2dsZS9qc2FwaS8uc3ZuL3RleHQt YmFzZS9Nb3Rp
b25DaGFydC5qYXZhLnN2bi1iYXNlrVTBitswEL0H8g/DnrxhY2f3VDbsIYTS LqSw0P6AYk/s
aWVJlWS7pvTfO5Yde5NNaA8rQrCkmTdvnp6ULN53zGewgK02raW88BClt/Cw Wj0s+e8DPCul
tbEi9fx50LYUnrRyrnUeS4RP5f5zHAA2UkIAcGDRoa0xi+FbQQ6M1bkVJQiV gS8QRJrq0gjV
ksqB8dCSkC6ACIu8knFMLUiKvUSoVIY25HFg6UAfwuRjKsk4hJdqLymFHaWo eFrfx6uA1BSU
FmMpQsdZzCUj5y3tq66Ju8CIF6diwofkwnvzmCRN08TY14m1zROJuZAJGrms 71dx4UsZogf9
VA+srXsMK934D/VgCaTIswSweXnuKZVG8rbyIboDe9eRzGdGpD9EjsBdxaR+ SowrinOtc/76
7oSh9Xw2nzEPbX0IOsrgGh83lOXoXbxlabUjj+t/hu5EqysfQE1/YKkUzsEX 3XW4LQTn4i+P
KnMwwsLvLh7YP1SzS+ArC8yOEVnGBnPwBDc36wv7bAR2yk6nQb31gNFXfVUv ggMpFn0qZ9h9
yt8N66Q8ON+yKW47It1pusqgjca4YTdw+HNSZmDCrW96stGIYdFXVh2buJBb a8rATZkDnbPm
Rzw6RJMiT6AqvobjJgTTx28U45qA0uHVuNf0AsFrLLcnYkdHmnJYmKiEAqdH w3XkdErXNTyr
cS7lBeTXcMkiRC/4ArK/ul0hZQv8LnQ3DDNgY4LgR4AfHgOp4BvroRA1PwYg g237/ORC972t
j0fUz4akY+fMgn9/AVBLBwiMcHpNSgIAALMFAABQSwMEFAAIAAgAk2h5OgAA AAAAAAAAAAAA
AGAAAABvcmcuaW5xbGUudWkuZ29vZ2xlLndpZGdldHMvYmluL29yZy9pbnFs ZS91aS9nb29n
bGUvanNhcGkvLnN2bi90ZXh0LWJhc2UvTW90aW9uQ2hhcnQuanMuc3ZuLWJh c2WtV1Fz0zgQ
fi4z/AeRh7PDBCdOUyhh7qGEXulMGThgjoebmxvFVm0dsmQkOSEw+e+3kuIk dpqgZqpmXFva
Xe23+2kl9Z8+bHv8CD1FE1EuJM1yjcKki4aDwfAZPM7RNedClBInGl5vhSyw poIrtVCaFARd
FdO3kTVwwRiyBhSSRBE5I2mEPudUoVKKTOICYZ4inROEk0QUJeYLyjME9oik mClrBEsCPSnI
zDBleMoIqnhKpNUDwUIhcWs/LhNGS0XQh2rKaIJuaEI4fM7iaGAtzXOa5Oup KFGgBb6kVGlJ
p5UB0bMeQedmMqytcq51Oe735/N5RNw8kZBZn5EMsz4p2bNZPIhyXTArvYof d4aFVGPbY5pH
9NAzRDnVEAJ08eHauVSUDIa5ttLG2IO2/uNHjx99+x5NGFYqSskt5SREHUAY Uf6NkaiiUSZE
Bm//KVzS6J0wfkxyLHWnh36CQ9DId014OkZgCOQZXohKRxPMZ1jd2I+ek3PP BFBrWSV6jG4r
nhh7IaIp6tbmTDMZiqZYgTdYZpWJgELdVy0BRfRbCP2FdvE2rtMU/DLW2rL/ QufvMLLTnxgw
MMQrxmCw36+H6W2Irl5LMQcKX6uJYY+mQI2w63zdSG6MZUQkwrAU7JE5upow Cq5frXrDba9a
fuA0vZyB7A3QknCQRR3wjGfkLTFLCVC5GVLxkSj6g7jvXZx77Xyhqc59zGze VqlnAqdhMKOq
woz+sEwMeiiI4fEzKHHyFWdEBeO/g8KywwY0+Ge5bXNlCRL2nt+AuQlmbAqa ofVGNPq6jSzU
HEGpxHNLvLAV/ZNWHiHuq+kaLm9zN0xFYkkVZURfuhX2enGdhjTtuulPHio5 3qZ+mZ8N4uXm
Y9lKP4XaEgaTeo2RNGiqWiETyu1o1JlarheqU4ByXRKpTckcN2MOKKC073Tb ZQMlDPo7nV57
BJclW5ghQ6jOnYCWjVJRkGJK5GqWWhZCcwGMmMFugbZKSKN8mDbDEqmcwF60 Xtvt4RI2GW44
Y6MCVPhgOxrL1DTYQWDZ19acOfTbb7X+k1XPjgs2HFBFnFyUmCrLMVR7sGGL bL2lqLmO5jQF
D1T0yczSuduYaTUmZ/TVrtByt2sNdOXJfqgtZeO9m/AgSCtiVrfNDJlAvNJw t7K0JqiTbdrm
rVkM9qb4BDOgZhg0xUEmgdcV7deyB1m/35WWxn5ftpZeSyeKotYKNM2QL6lk i30XblGFu/IH
tiKgYW3pyYaZW12dPVxyu3UiJIm+WOpFt6xS+RUTU8z+rEhF1A47al8aFfcQ MUx7wPJc7+Td
3RDdMZuptfYwJljotuNPBZDjHS7r3i460hDY+LwoiY+dK1vuoynlaSNwPSj8 cF79uir5m8K/
rm5H2SzEjMBprGVVcPD4HQztrMe67a0jJ/slDI1TrPGhtL6B8c/YcvWOmY22 ie5HoHb4/JDE
RLCq4GFgDu08M+ePP2RFdeCjA9/EaLwx/30UeGU2HqPyCcqMuqfO5ffS3ED8 1DZ4bkTizlZ7
1aDA/oVZRcJBD8EvuIAN9dA02/Jxz+bIhACF8cvz896gF3e9VIegPRgMvGRP 4ecpOjKhwupA
CtfSscP7XpqDkg/g+HjAsQX88swDRGzxDn3wxg7vF+KFd+jwvsYc/nzwDo/H O7R4vZI2dHh9
QjO8F97Te/L5tAHXoY290J46Onvl7NTCHXmKAtyOoXPn19Kj+9J5dDTekWOz D4aRhRv7ZHfk
4JrsesA9uy+bz46Ge2bhvjg/9xIFuM/jF16iB+HevTPWJ56t/fkOXTvqThnm 6BiameFePTe3
wTF6PoDI5faSOYYlutw9EvzyPL2+Sh68LR1zGmyfBA9eEbaPU0lOkq/OqUMX kNXrsr4SLuHw
8j9QSwcIF+s67YUFAADyFAAAUEsDBBQACAAIAJRoeToAAAAAAAAAAAAAAABt AAAAb3JnLmlu
cWxlLnVpLmdvb2dsZS53aWRnZXRzL2Jpbi9vcmcvaW5xbGUvdWkvZ29vZ2xl L2pzYXBpLy5z
dm4vdGV4dC1iYXNlL01vdGlvbkNoYXJ0QVBJUmVzb3VyY2UuamF2YS5zdm4t YmFzZa1UUW/a
MBB+R+I/nPrUVsOhlap1RXtACK1MUCqo+oqc5Jp4c+zMdsjYtP++sxNKB6za pFoIXc7ffXf+
7uySJ195hqBNxoT6JpFVgmVaZ2R9sbwUg24nOn/b1e3AOYx0uTEiyx2cJmdw 2e9f9ujvGiZK
aV0anjgyn7QpuBNaWbuxDguET0V8ywLBUEoIBBYMWjRrTBk85MJCaXRmeAFc peByBJ4kuii5
2giVAfGhEVzaQMINkiclzJoLyWOJUKkUTYgjYGFBP4WPcSJFaRHuq1iKBKYi QUWf6wvWD0x1
LpL8OZVAS1FUSyqsMyKu/CHehYrIuUvGXQjOnStvoqiua4ZNHkYNiSRmXEZY yt76os9yV8iA
bvVTDbE29iZ4/PoH9aAHQglHEsDwftKUVJSStpULaE/2pivqdiiDNi5M2faA pnY0caSx4pKR
PpLdPsymg79iqcm6MglaNlm05n+BZ1zRoBu2wIx6gmZeBmmIo9spm6YmklsL M+03Rjk3jgTa
hu9EsrBz/vTRQBMn1jRXsKSW0IxJnQQlB+1uw95uZug8t0V3eubjfdsMusoo 8AKw0e1wsRw/
rO6Gs/Fqspyvrq+vPqwuBh756w/CkS93qrmfV2JtrANSP4bMJ/Xo07Nncws/ QrwnkSdvzQP2
PSh7HC+Wk/ndEdLd8aetPA1ZFHm6rWTwEU5e3Ib2JaJLFYXX6GTQZD8C9y6Z a+tu3l/1+1GN
8epJSLS0wdNHYSsuxY8QRF2lt21L1R7kRc/2K4+1lsgV3dzPy6mIDTebQ5VN ha+Gjr83o/5q
JP1+A1BLBwiExzvHWwIAAJEFAABQSwMEFAAIAAgAlGh5OgAAAAAAAAAAAAAA AGoAAABvcmcu
aW5xbGUudWkuZ29vZ2xlLndpZGdldHMvYmluL29yZy9pbnFsZS91aS9nb29n bGUvanNhcGkv
LnN2bi90ZXh0LWJhc2UvTW90aW9uQ2hhcnRSZXNvdXJjZS5qYXZhLnN2bi1i YXNlrVTbjtow
EH1H4h9G+wSr4sBKlejyhCgqVNxEUF+RCbOJW8dObQeKqv33jh0u7UJXrbRW FI2dc87YZyYu
ePKNpwjapEyo7xJZKViqdUrRV8sL0avXovu3HfUa3MNAFwcj0sxBI2nCQ7v9 0KJXF8ZKaV0Y
njgKn7TJuRNaWXuwDnOET/lmxIJAX0oIAhYMWjQ73DJYZcJCYXRqeA5cbcFl CDxJdF5wdRAq
BdJDI7i0QYQbpJUtYXZcSL6RCKXaogk8AuYW9FOYDBMpCouwKDdSJDARCSqa 7jqsHZT2mUiy
cyqBlli0l62wzohN6Q/xLuyIFi/JuAvkzLniMYr2+z3DKg+jgkQSUy4jLGRr 12mzzOUyoI/+
qUpYG/sYVvz4B/egBUIJRxZAfzGutpQXkj4rF9Be7E1HVK9RBm1c6LLTAc3e UceRx4pLRv5I
NlpNJ72/YqnIujQJWjZeHsP/Ak+5okY3bIkp1QTNvAjWkEa9VlRFTSS3Fqba fxhk3LgT9+KQ
hbMg/PRUgCM5pnJQf6XoPNWiazQ9wlfFoCuNAn8+Nhj1l/FwtZ71p8P1OJ6v u933H9adnkc+
/yE48LuZaO7bkVSr6ErUdxnzST260TyHJ/gN4RcOePFjeKX+Asq+DJfxeD5b 92cf14P5dLEc
xvGNDBcvJjoJTXWlfOcbPNw4USmi6saJwo0T/VYAuoPubuhvtJbIFf1Ln+OJ 2BhuDtfGmBJf
pQ5/VM33KpOeX1BLBwgXzXEELAIAACMFAABQSwMEFAAIAAgAlGh5OgAAAAAA AAAAAAAAAFEA
AABvcmcuaW5xbGUudWkuZ29vZ2xlLndpZGdldHMvYmluL29yZy9pbnFsZS91 aS9nb29nbGUv
anNhcGkvR29vZ2xlQVBJUmVzb3VyY2UuY2xhc3Olk11PE0EUht9pS7cfKyCf VkRFUKDQrqAo
XyExBA2mUkMNF95Ny2QZsuzW2cXqf/JCjWLihT/AH2U8s12WWrhAvdiZOTvz vOfMOWd+/vr+
A0AZjw0kGOY8ZVvSfeMI61hatufZtDr0eVNaz0LjycvtXeF7x6ohDKQY+g/5 W2453LWtav1Q
NAIDaYZJLSMajmz6wlKtwFIR41sxzpBxvAYPpOcyDFTOdGqBkq69xpBel64M NhiSM7N7DKlN
b1/kkMQVE1nkGPoq0hU7x0d1oV7xuiO0DCk6e1xJbUc/U8GB9BlKlb+4G3nP 2SLYPODKFwHD
0Mzs+QgzGKZj27VqaXl5aaW0wJAlpuLxfaEYCn8gmw73/fbWmr5DwcR1jFEO tBe9xzB4HqCj
47hl4CZdtmvLxG2MMvSe8qduddjVps4qSW6Q5CVK8YK73BZqalfY0g+Eivi1 LKZwz8BdhtV/
VzExjRmqwk51Z4th/X/iYciHCW53TQZzDGMHQdBctaxWq1Vul7Tc8I7aZc2C qm7CQIZA6T+v
VWRdcfU+bKjXlCrpb70jeZc7ZNRC10+lbpmRcw1R1ulnMLddV6gw4cI3sMRQ vPx9qIhdN8IE
hZikr4e+hI6U3qJBa+pvGvNkWTQzmnuK32B+okUCvTSmw5/96KPRbB8g6yrN 9AowGMGlCE4O
DH3sQoc70GSMjmA0QhcjNFM8wbUT3OjmCx18JuYncCfiyxGf+ozJbna8g03F 7Gwc9gqd1nv5
4kDxK+aLXzB/JpGjGeQojckOmXwsUw5TpmXmoxASqQ9dAUx3kImYvH8Jcu4C MoGFcFzEgzA+
Rs/mIR6h8BtQSwcIhUUB6HMCAABdBQAAUEsDBBQACAAIAJRoeToAAAAAAAAA AAAAAABLAAAA
b3JnLmlucWxlLnVpLmdvb2dsZS53aWRnZXRzL2Jpbi9vcmcvaW5xbGUvdWkv Z29vZ2xlL2pz
YXBpL01vdGlvbkNoYXJ0LmNsYXNzjVJdTxNBFD0D7W5bl5a2fChioSK0tAkb H3zCkJgmJiSr
LzW8D+1kGbLs1N2thF/EKyQaEx98NfFHGe/M1rXUGsgm83nuOeee2Z+/vn0H cIC2jQWGXRX5
rgw/BsIdS9dXyqfVecxH0n2nEqnC3hmPEhs5hqaGikEgR7Fw48vEvZRDXySx 21MXIxXLRDDY
fDiMRBwz1Lxz/om7AQ99t59EMvQPGcoDESYi8tSAa24G67UMZXLE0Gp799If Hu+fMOR6aihK
WITjoIBiAWUGFMGw7CAPi6HiyVC8H1+ciugDPw2E9kKCwQmPpN5PDnPJmSSf Le9BCZB5a8Qj
ss+w8wCrDPk4udI67JihRLdv/iSz0t6fl00pnsKstv+F6OarBOrdyVB3vuXA 1p0XgizYqj8L
ZChSscev1Fj38P+8U4iRs4IJfPs+NPnvq3E0EG+lbnp5KroD3Qma5HORfrwF +uiZzMo2s0U3
BfOCJdr1CaVxS53u5lc86tSWvqBya+BVGsvmco2KanCwTiOwnRagjhXArFYJ wcxqHY+pkuEJ
NiYCLs36Lt/5jMpNRmyZww1D6KSACSHDU2xm7rR/oN79ASf1do1Cp3vHYw05 Ghs0bpGDJu13
DO1aWpr5rJsgtJtnmcDRRMDSnI2/nCVzukcVrSkuK+OyKIWUqzm308Zsp525 nT4nq2nxK4On
s9uZwpdT+izTZ3iBXaO3Z/Ct31BLBwhrXdHpGgIAAGgEAABQSwMEFAAIAAgA lGh5OgAAAAAA
AAAAAAAAAEgAAABvcmcuaW5xbGUudWkuZ29vZ2xlLndpZGdldHMvYmluL29y Zy9pbnFsZS91
aS9nb29nbGUvanNhcGkvTW90aW9uQ2hhcnQuanOtV01v2zgQPSdA/gPrQyUX rmw5Tpu62EPq
pkmAFM02xfawWCxoiZG4pUhVpOy6hf/7DknLtuSPMkYYQ5HImeG8mcch2X3x tO3kGL1AI5HP
CpqkCvlRG/V7vf5LeJyjG86FyAscKXh9EEWGFRVcyplUJCPoKhtfB8bABWPI GJCoIJIUExIH
6EtKJcoLkRQ4Q5jHSKUE4SgSWY75jPIEgT1SUMykMYILAj0xyEwwZXjMCCp5 TAqjB4KZROLB
fFxGjOaSoLtyzGiEbmlEOHxOwqBnLE1TGqXLqSiRoAW+xFSqgo5LDaJjPILO 1WRYGeVUqXzY
7U6n04DYeQJRJF1GEsy6JGcvJ2EvSFXGjPQiftwaFoUcmh7dHKKHXiLKqYIQ oIu7G+tSljMY
5spIa2NP2ronxyfH338EI4alDGLyQDnxUQsQBpR/ZyQoaZAIkcDbfxLnNPgo tB+jFBeq1UG/
wCFo5IciPB4iMATyDM9EqYIR5hMsb81Hx8rZZwSoVVFGaogeSh5pez6iMWpX 5nTTGQrGWII3
uEhKHQGJ2m9Pjrvdmogk6hqCf6FsxLXzNAbPtL23DXP/QucfMLLRH2k4MMRL xmpT0AcfXb0r
xBRIfCNHmj+KAjn8tvV2JbkylhARCc1TsEem6GrEKDh/tej1171q+IHj+HIC srdATMJBFrXA
M56Qa6IXE6CyM8TiM5H0J7Hfmzh32vlKY5W6mFlHtkg/Ezj2vQmVJWb0p2Gj 10FeCI9fXo6j
bzgh0hv+7WWGISak3j/zesoWtiBpn/gtGBxhxsag6xuPRK2vrlkxBcUFnhr6 +Y0MHDVyCbFf
TFdzep3BfiwiQ60gIerSrrN3s5vYp3HbTn/0VAlyNvXbHK0Qz1cf8wYFKFQY 3xtVK43E3pa1
o0O5Ho2KAfPlcrUKULRzUihdOIf1mAMKKPAb3WbpQCGD/lar0xzBec5mekhT qrUV0LxWMDKS
jUmxmKWShdBcACMmsGegtUJSKyK6TXCBZEpgR1qu7+ZwDlsN15wxUQEq3JmO 2lLVDfYRWPqV
NWsOPX9e6T9b9Gy4YMIBlcTKBZGutRxDzQcbptRWG4ucqmBKY/BABvd6ltZ2 Y7pVmKzRt5tC
882uJdCFJ7uhNpS193bCvSCNiF7dJjNkBPGK/c3q0pigSrZuq7d6MdiZ4iPM gJq+VxcHmQhe
F7Rfyu5l/W5XGhq7fVlbeg2dIAgaK1A3Tb6oLBrsu7CLyt+U37MdAQ0rS89W zFzrau3gkt2z
I1GQ4KuhXvDASpleMTHG7M+SlERusKPypVZx9xFDtycsz9Vu3t4M0ZbZdK01 RzLBfLsl32dA
jo84r3rb6EBDYOPLLCcudq5MuQ/GlMe1wHWg8MOp9dui5K8K/7K6HWQzExMC Z7KGVcHB448w
tLEeq7azjhztltA0jrHC+9L6Hsa/YMPVLTNrbR3dz0Bt/9U+iZFgZcZ9Tx/d eaJPIB+KkirP
RQe+idZ4r/+7KPBSbzxa5R7KjHykzuWPXN9D3NRWeG5FZE9XO9WgwP6FWUn8 XgfBz7uADXXf
NOvyYcfkSIcA+eGb8/NOrxO2nVT7oN3r9ZxkT+HnKDrQocJyTwqX0qHF+6nQ ByUXwOHhgEMD
+M2ZA4jQ4O274A0t3q/ECW/f4n2HOfy54O0fjrdv8DolrW/xuoSm/yi8p4/k 82kNrkUbOqE9
tXR2ytmpgTtwFAW4LU3n1u+lB4+l8+BgvAPLZhcMAwM3dMnuwMLV2XWAe/ZY Np8dDPfMwH19
fu4kCnBfha+dRPfC3b4zVieetf15i64ZtacMfXT09cxws57q2+AQvepB5FJz yRzCEm3cqnX7
7Xl6eZXce1s65DTYPAnuvSKsH6eilETfrFP7LiCL13l1JZzD4eV/UEsHCKrh d9GGBQAA+BQA
AFBLAwQUAAgACACUaHk6AAAAAAAAAAAAAAAAVgAAAG9yZy5pbnFsZS51aS5n b29nbGUud2lk
Z2V0cy9iaW4vb3JnL2lucWxlL3VpL2dvb2dsZS9qc2FwaS9Nb3Rpb25DaGFy dEFQSVJlc291
cmNlLmNsYXNzpZNbTxNBGIbfaUu3hxWQg1gRFUGBQruAopxCYhpMago11HDh 3bRMliHLbp1d
rP4nL9QoJl74A/xRxm+2S6mFC9SLOc/zznean7++/wBQxFMDMYZFT9mWdN84 wjqRlu15Ns2O
fN6U1o4XSM8tHXIVPHtZ3hO+d6IawkCCYfCIv+WWw13bqtaPRCMwkGSY0lqi 4cimLyzVCiwV
Mb7VwRlSjtfgWplhqHKuUwuUdO0NhuSmdGWwxRCfndtnSJS8A5FBHNdMpJFh GKhIV+yeHNeF
esXrjtAypOjscyX1OtpMBIfSZ1iu/K2DZELGFoHe9kXAMDI7d9HMFEbpWrlW LayurqwVlhjS
xFQ8fiAUQ+4PpORw328fbWhHciZuYZwCoV/RZwzDFwG6OoG7Bu6Qxz1HJu5h jKH/jD97Vptd
bWqfSHKLJK+Qjx3ucluo6T1hSz8QKuI30pjGQwMPGNb/XcXEDGYZjP3tvVq5 usuw+T8mMWTD
GLerJ4V5hvHDIGiuW1ar1Sq2U1tseMft9KbBUDBhIEWg9F/UKrKuuHofFtZr ipb0t9+RvMsd
WtTCp59LXTrjlxdGUaeBwSy7rlBh4IVvYIUhf3WnKJk9bmGS7IxT66MW0+bS 7zRoTsVOfZZW
Fo2Mxr78N5ifaBJDP/XJcHMQA9Sb7Qu0uk4jfQkMR3AhguNDIx970NEuNN5B b2AsQpcjNJU/
xc1T3O7lc118qsNP4n7EFyM+8RlTvexEF5vosHMds9fotj7L5ofyX7GQ/4KF c4kMjaCHkpjq
ksl2ZIphyLTMQmRCLPGhx4CZLjLWIRevQM5fQsawFPbLeBTax+j7PMYT5H4D UEsHCDv5pel2
AgAAbwUAAFBLAwQUAAgACACUaHk6AAAAAAAAAAAAAAAAVQAAAG9yZy5pbnFs ZS51aS5nb29n
bGUud2lkZ2V0cy9iaW4vb3JnL2lucWxlL3VpL2dvb2dsZS9qc2FwaS9Nb3Rp b25DaGFydEVu
dHJ5UG9pbnQuY2xhc3OVU1tPE0EYPdM7yyq23EFucmuhsoJ3iygWJE1aNClU 8W1px3bIdrfu
bkX8J/oHfPHFlzaxie/6a/gF6jfbRoyxQdN0vtlvzpw5851vvn3//AXACrbD 8DFoll3WhPnK
4FpdaGXLKtPsyNFrQstZrrDMdEW33W3TtU+eWsJ0wwgwXDrSX+uaoZtl7cnh ES9SNsQwL6l4
0RA1h2v2sasZ4iUvnhSJMHNGwBBaF6ZwNxj88USBIZC2SlyBH70qwogw9GWF yXfr1UNu7+mH
BmeIZa2ibhR0W8jvTjLgVoTDsJr9zxukGCJFm+su3894GjJh9DNM/a7eIfXH olTmrqNtCadm
6CcKYugNY4hhohsyX+GGoWAQI/Imo1SRePYc1lQmUQhjnGHmTyAtWnVXeywM I+tNFYyhV7JP
qpjCNEOPw932EsNs95PakFSiEMEVBmUnp9ec6S1etSTXnIp5LDCEiWuPvyGm wXj2zN28awuz
nJIa4x2Dz620gkUsyQIsMyx2l5W2qjXLES6XJZBSrqrUlFpbSl68JYeD8Uxn bVXFmmyNgFXj
pnTihoqbuEW9QkaWNs2SLKfuFiueoS8k4o6KuxIRdAzOa5IkpWJdZhThSLjl 8BKdVmobQQ6c
65UkkxZTs3TFej1AyFDVKwaV4N/6k7YoeatuFzk5Tncf+2vvrkhrMAO6Jv2D 9I59FOnV0NhD
XxpFRjG41ITyyVtWaQx5yX5coFFtA3ARfRTpLSPa2fwVAfoB+y3EDpoYyLYw eLAcDZw2MZxL
tjBGycsNTCRjMw3MtrB4kPQ3kdhNRv3TUd/zBpLJBq59QN9yA9ffI0Lh9jNK 3Xv349T/8ZeY
NW8cIs3DGMAI9fIo9eA4aZ8gxyZxnzIPMY0dumeW5nnMecKX2uI6wiPIEXKD pA9gEw9oh48Y
Fmj+yKtN2jtv6ydQSwcIbRFhe7sCAADuBAAAUEsDBBQACAAIAJRoeToAAAAA AAAAAAAAAABT
AAAAb3JnLmlucWxlLnVpLmdvb2dsZS53aWRnZXRzL2Jpbi9vcmcvaW5xbGUv dWkvZ29vZ2xl
L2pzYXBpL01vdGlvbkNoYXJ0UmVzb3VyY2UuY2xhc3Olk1tPE0EUx//Tlu5S VsAWBERFLkpb
addLTNASElMxqSnUdE0ffCHTMlmmWXdxdvHynXxQHzDxwQ/ghzKeLdtalz5U fdg5e+bMb851
fvz89h1AGQ80JBhKnrJN6b5xhHkqTdvzbPrr+vxEmvteID23esxV0BS+d6o6 QkOKYbbL33LT
4a5tNtpd0Qk0pBnWw4tEx5EnvjDVu8BUEeObtT7OkN6Rrgx2GZL5QoshVfWO RAZJTBnQoDPM
1KUrDk5ft4V6ydsOEdm61+FOiysZ6tFmKjiWPoNZ/6voKwwZWwThni8Chrl8 of47FytQ0rUr
OnJ0rGY1StvbDx+V7jFMElP3+JFQDEt/IFWH+/65qRJmsWBgEUsMeugltDHk LgJ0dBnXNVyj
dGMmAzcwzzDd5/tuw7AbJ2FCdOUuXTlGsfe5y22hNprCln4gVMRXJrGGDQ3r DI///RYDt3Cb
Ktjaa1q1xsHhk4Onh9XG/ovmnmUx7PxPfAxTvYJ3eKjrKDDkx2pzuUvFmZL+ c6su24qrD70p
e0XVk/7ee/LgcocUq+f9mQznaHHElJTDnjAYNdcVqtcF4WugOSiOnxR1NpYW VkHh0DdBj08j
SeNO6yRpJklGcqL4FZnP9JOAQWu6tzmLS7Qa5wcwjRmS9ARxOYJLEZzMZj/F 0NwQmhygc5iP
0PsRqhfPcOUMV+P8whCvD/gV3Iz4csSnvmA1zi4PsakBuzki7HwcXRkZdhF3 InQrQhOpjzFy
fYhMDMiti2QyTm6OIBMUZLiWqUFAhmxruEtFW/oFUEsHCJ4LeXtQAgAAQgUA AFBLAwQUAAgA
CACUaHk6AAAAAAAAAAAAAAAARgAAAG9yZy5pbnFsZS51aS5nb29nbGUud2lk Z2V0cy9iaW4v
b3JnL2lucWxlL3VpL2ludGVybmFsLy5zdm4vYWxsLXdjcHJvcHMdyT0KhDAQ QOF+TuEewAys
iJJ6rQRLWwkawmCYsJMfr2+0eTz45ubbQyysr12L2Q5TdLESKXCbxcPaDANg dfw8qYTj2GGS
zCcGcYr4763KpFwIrt5Fh7MpYpT9cXwdM9VJVth4mJYf3FBLBwiJwmIcaAAA AHYAAABQSwME
FAAIAAgAlGh5OgAAAAAAAAAAAAAAAEIAAABvcmcuaW5xbGUudWkuZ29vZ2xl LndpZGdldHMv
YmluL29yZy9pbnFsZS91aS9pbnRlcm5hbC8uc3ZuL2VudHJpZXOFTzsSgjAU 7N9wlXzIBwPn
sLID8ggZMdGQ6PVFsLFyq53Znf3UHMD6BMZImHO+d4z58FiQuhjdgmO0SMd4 Y+szsJxKuLKY
HD0sxX9d9OWtw7yyNY0f/YhgxW8kYwr98i8bNgjOW8IlEfrMRadFp2oqNVdt c9nn2WRjiHNB
+EUjrURpDEGtesJVzckwKEnaqZ/wZLWphwkqOEr3sxW8AVBLBwgduUOtngAA APcAAABQSwME
FAAIAAgAlGh5OgAAAAAAAAAAAAAAAE0AAABvcmcuaW5xbGUudWkuZ29vZ2xl LndpZGdldHMv
YmluL29yZy9pbnFsZS91aS9pbnRlcm5hbC9nb29nbGUvLnN2bi9hbGwtd2Nw cm9wcyXKSwoC
MRCE4X2fYjyAKfABIWtdCbN0K2EmhMbQwc5jrm9GN8UPXz2m05VKF7ctTv1r 9d31oIWzHJsm
ek72QhiOwz6DYO0ZVZu8kTUalk8KprGJOcdRG68x1IKiy+74ORqPqEHFJ/yP dJ9v9AVQSwcI
HdnUB20AAAB9AAAAUEsDBBQACAAIAJRoeToAAAAAAAAAAAAAAABJAAAAb3Jn LmlucWxlLnVp
Lmdvb2dsZS53aWRnZXRzL2Jpbi9vcmcvaW5xbGUvdWkvaW50ZXJuYWwvZ29v Z2xlLy5zdm4v
ZW50cmllc4WPyxKCMAxF9xl+pQ9oi4XvcOWu0ABVbLG0+vsiuHHlWWUmZ25y Sw5gXQStBUwp
LS1jzj9mpGMI44x9sEj7cGfr07MUs7+xEEd6KNl9LfpydsS0sjX2n/0RwbLb hoTRm5kd4r8T
sFFx3hAuSKXOvGpV1cqSCsVlU1/2L220wYcpI/xSCytQaE1QSUO4LDnpOilI M5gBT1bpshug
gOtqFrdXLuANUEsHCKkXlOikAAAA/QAAAFBLAwQUAAgACACUaHk6AAAAAAAA AAAAAAAAUwAA
AG9yZy5pbnFsZS51aS5nb29nbGUud2lkZ2V0cy9iaW4vb3JnL2lucWxlL3Vp L2ludGVybmFs
L2dvb2dsZS9qc2FwaS8uc3ZuL2FsbC13Y3Byb3BzJcpLCgIxEIThfZ9iPIAp UYQxa10JLt1K
mAmhNXS085jrm9FN8cNX12F/pNzELpNV95hds81r5iTbqpHuw2lH6I7NOp0w jgcUrfJC0mBY
PtGbyiakFHotPAdfMrJOq+PnqNyjeBUX8T/imd2b6XI70xdQSwcIJABc6XEA AACDAAAAUEsD
BBQACAAIAJRoeToAAAAAAAAAAAAAAABPAAAAb3JnLmlucWxlLnVpLmdvb2ds ZS53aWRnZXRz
L2Jpbi9vcmcvaW5xbGUvdWkvaW50ZXJuYWwvZ29vZ2xlL2pzYXBpLy5zdm4v ZW50cmllc4WQ
QXKDMAxF9xquYstgmxrOkVV3BgtwQyxiTHP9pKGbrvpWmtGbL82vFUCIGZzT sJSy9Ygx3VeS
M/O80siB5Mg33L8TlnykK3Ke5akc8deSjxhmKjvuefzZnxF4xNdQKCe/4ini 1+63+N8heNEo
1QmlRWMvqult05taaqtM136+fw05cOLlIPhLq4Mm7Zwga7xQplZiGIwW3eQn +gjW1cMEFdy4
RE7j4nO5xvJuoIInUEsHCGjWVbKwAAAADAEAAFBLAwQUAAgACACUaHk6AAAA AAAAAAAAAAAA
YgAAAG9yZy5pbnFsZS51aS5nb29nbGUud2lkZ2V0cy9iaW4vb3JnL2lucWxl L3VpL2ludGVy
bmFsL2dvb2dsZS9qc2FwaS9tb3Rpb25jaGFydGtpdC8uc3ZuL2FsbC13Y3By b3BzvY47DsIw
EER7nyIcAC8ERYrSoUAVoKRFq8QyTowN60+ujx1aJDqa1WjeSPu6oqyYi6aZ +4bwNmBsoiCn
rFkH0uxabDcVgzSAVT6JQV3vwFMwE1iSXJmXFjwoLq2VKc1qkMI7cNRnDguH oFLwggxq+Axh
dPhU8LA+/ervSH5Snh0vB3ZeqjZXp3bPR4zIup+a5R814ZtiVn8DUEsHCCfv WUWZAAAATgEA
AFBLAwQUAAgACACUaHk6AAAAAAAAAAAAAAAAXgAAAG9yZy5pbnFsZS51aS5n b29nbGUud2lk
Z2V0cy9iaW4vb3JnL2lucWxlL3VpL2ludGVybmFsL2dvb2dsZS9qc2FwaS9t b3Rpb25jaGFy
dGtpdC8uc3ZuL2VudHJpZXOdjj1vwyAURXfUvwI8vozxVmVtt07ZwIBN4pgU 4/Tv14kztFOl
3ulJ7+jewwAhnwpqW4HGWq8dpWn+nAIZch6m0GcfSJ8vdLnNtJZ1PtNcBrIj a3pS5Cv5IdSF
LqW///cKuqbtqKHMdqI7SE+LvSZ6yTXluR9tqedU/9pFWziAwSAwVx/AO8U7 yYhQIE1zfKj7
4vOcxzWg32mEF0G0LQ5KWgySAXZOCmyijUF71TIX0Qt6fwgd7kJvh1dysjeL Ypr2th/bDDrO
OqaJ0Q0wc0RGtyw0rNeK9S5KZZUymnMHHryI4P4t/owAbTa/b1BLBwguJgKa 7AAAAKYBAABQ
SwMEFAAIAAgAlGh5OgAAAAAAAAAAAAAAAH0AAABvcmcuaW5xbGUudWkuZ29v Z2xlLndpZGdl
dHMvYmluL29yZy9pbnFsZS91aS9pbnRlcm5hbC9nb29nbGUvanNhcGkvbW90 aW9uY2hhcnRr
aXQvLnN2bi90ZXh0LWJhc2UvTW90aW9uQ2hhcnRMQ0EuamF2YS5zdm4tYmFz Zb1WXW/bNhR9
D5D/cJEnOUiktE9DgzwYjru6SBfDztqHogho6VpmSpEaSVv1hv73XZKSLNvx 4g3BhMCmyXvO
/eRRkvPXfU5P4BwGqlxrni8sRGkP3l5dvb2kj19gJKVSpWappeVc6YJZrqQx a2OxQPi1mH2I
PUFfCPAEBjQa1CvMYnhYcAOlVrlmBTCZgV0gsDRVRcnkmssciA81Z8J4EqaR djKyWTEu2Ewg
LGWG2uPIsDCg5v7HMBW8NAjj5UzwFO54ipJ+rt7EV56pWvB00briaAhFsWTc WM1nS5fEhY+I
NjfOmPXghbXluySpqirG4CdWOk8E5kwkWIrL1ZureGEL4a3r+slArLR553fc c0T14BK45JZK
AP3xKIRUlIKOpfXWjuxVn+T0pGTpd5YjUFYxl38IjJecFlRhyUScK5XT1pNh JY8L5YJIF0zb
79xen56cnlB8Slt4orrFXMWj++GPFEtn1j123E31dGVjweeYrlMi7s+oCVST LzzL0d4N+tdH
gHyBlSDr3y0XxyBGgb+fsZISOwbxcfpF8yNt2+CPDScADlsbsq68jWmSfdkw kG7btQ3d6uMn
38eB66PvUhkuTiqYMdA5pIwAf1iUmYG9RsFfDgpQg1eKZ3S9w3X/zMQSTQRz TjMEAQIhTug5
oLsQ212Md7FRYwC9BnkdgNvNBFZ/38CmrPHmPIIOPEkcQY1oXUYwntyPH/u3 t5PhdHoBznmn
DJsAAm1GMBP12njCJ1ErKdYgETPMgG44pEtjVQErRqomSQwjUquClK7XBLI1 OG04Aw/7HFBb
4QP8DEVPzr3Tc5ggC0paMtJVpKxI3TSTZo7aRaHJvzumeSERCaBkt22aSG6Z ZS80rFuSorO+
eb5cbbmnpIYk70KlXsTaRjV5O/djrUrUdu27H3XpL2Dcn/Q/PQ6Gvz0MJ50u dmxig3aATrPu
aifRxt3zhRvVQpuSd29Gr6YUsyW9derXSsjiYMncu6gm4X/WPp8vn11oVRno aGNT0UZkoApf
N+2Om7Sweq/0zgy0FaU4dod+lO0ZB+5YYhVMIzg7ShrOLmiWK7ifPWFqv36r QwbyGlY/dz0Y
z83KEmkWZYpEcObeucrQ8dnz1mqFei5U5WwXPMtQbgx3BMLjpnYt8L1guTl4 Sbvt3m8ZGcv8
sDYd7tW/n/5DObQhdGmapP/LSIT70K3rtp59nD5ub3SvzqtJ2r6ghWxfVrP9 Lt1yQ2OD/9+N
qouX1X4PhuflAick1PYD/X8maKCYENTL+kradYljpcQo+4cwt3lrJEXz0IKj Qxqs0S61BLkU
ogmR/v4GUEsHCFtWHcDaAwAABwwAAFBLAwQUAAgACACUaHk6AAAAAAAAAAAA AAAAZgAAAG9y
Zy5pbnFsZS51aS5nb29nbGUud2lkZ2V0cy9iaW4vb3JnL2lucWxlL3VpL2lu dGVybmFsL2dv
b2dsZS9qc2FwaS9tb3Rpb25jaGFydGtpdC9Nb3Rpb25DaGFydExDQS5jbGFz c6VVbVcTRxR+
JoRsWBewiaC2WhUVAolZVEQtSIVgBA0vNQi19m3YjGFx2U13N1D6S/oz2i/K 6Tnt6ef+qJ7e
2V2X8JIDPXIOM3N3Zp773Ofeufnn3z/+AlDEuoIEw2PHreum/ZMl9KZJC1+4 Nrf0uuPU6dOm
xxumvuX4pmMbG9z135q+vhCYJWlWStMKkgx5iSIMy2x4Qnd3fN0y3whj1yCI 6XXPd7nhr5m1
upAXGFKTpm36UwwdueFVhmTJqQkVHejS0IkUQ2/FtMVic2tduCt83RIMmYpj cGuVu6a0o49J
f8P0GGYqHxvCBENPwxWecLfFKreaglCv5yqtMXkU004QgaeHkUwMryr4hOFK u2Mlx/Zdx1KR
RZ+Ccwy59iJFZ4nLS9+0NPSgn+FGewrReeKg4gI+VXCRjreHDxmH0J/hEoNK 5nSNN0gqhsrJ
oVbaY8+HZyI0kjIVXma4ehIsg8I/kBj5Py7SruC1We5zBdcZbh7I/4G0t+SZ 4cxWqzVUOdU1
8nbOFXZNuPNUsya3zF+43CQNn/xsiIZcewqGGbKbfJvrpqPPL8U7KvK4paDA MNA+vGfVNdek
wDR6lDqDRqGGH8oOCVP+qOx8wJ6QdXJbwx3cZeikW/M1hrFTQAdBWdyu61Xf Ne36RBr3QsmL
gXbFplkMtSsG2hVbtFNwn+HsPsLS+qYwfKnJQw1fgKTtssXOWlQuudxRZ68r h29TyafxiNTn
jYbgLrcNkcaXhGQ4Ww3Ho1gl/rSGGZSowXgSeegY5KNfJPATqi1nW7hvLGcn jadUzBtmrSZs
+YjnNTyTz7J3Rypa9XctUbZ43ZMVH2hMT/A0mWBImDXZ0o4wYOgOS43Us+vC k16/0vBCetUC
H/HGCqj7vKTQTnr0cUtZQy85DVGanu9sBd3U9mOns6ZHAgbyfaPhtWzESi38 xnDeoCfnixfU
JP05btcsIskti4LvO0Zc2dVVf7chlh3HkpXWTUxWWmy16jRdQ5RN2cezB7tx UcLhGih7kH9p
WtHPAo0KWTrNjObOkfdI/06LBFQaU8HHizhDoxYeoLmbZurt6I0uVyPQ7vzf OLuHTH4P5xf2
QXqCzUt09DJdHgjAroYXIjC5uozPCUY6uUK7CZqvxQ7mIgcpcjDQgqzSDOSI VL4FNRWjpiLU
Tvq/gZsB6iChJjBEu0mycgH+r3QySfMoMR9ZoGF0sZAZS/6J8Vcdt6rv8KCQ mcxMvcPjQmY2
U6ZZ8tjD3D6TQXTReJs83SH7LlXYGPpovoBxYnWf/DwgjR8GLEdCXzHL0Zhl Hs9RCRAHsYBF
ioZh6Ri+b2klMbKBHoU9LEviizRU9yn1EyAwSeMjIjdFaZhBBqUWCtmYQjam 0BMJ1UNrSUZS
+PoYCstRStRAssI7vDqc8DIhPCXPcy2pUWOPauyxMwqa4Vt8d8TPvQCV6u1w UT4PYPvDzRiW
4XvSTdbyD6R+WD3jNMtTCfbbIYzFFoxEjJGIqDH8GFj8P1BLBwglS5pqYgQA ANwJAABQSwME
FAAIAAgAlGh5OgAAAAAAAAAAAAAAACwAAABvcmcuaW5xbGUudWkuZ29vZ2xl LndpZGdldHMv
YnVpbGQucHJvcGVydGllcyvOLy1KTtXTU7BVKC5K1uflyi8tKSgtAQskZeYB BYCkXmZeck5p
SmoxUNDXNcRR19PPTV8nhpdLARXoYRHLKsamsiCnNB1obkVuDhbJ8tSk+LTM nNRioO0AUEsH
CKeZ4+ZZAAAAoAAAAFBLAwQUAAgACACUaHk6AAAAAAAAAAAAAAAALQAAAG9y Zy5pbnFsZS51
aS5nb29nbGUud2lkZ2V0cy9wbHVnaW4ucHJvcGVydGllcwMAUEsHCAAAAAAC AAAAAAAAAFBL
AwQUAAgACACUaHk6AAAAAAAAAAAAAAAAJgAAAG9yZy5pbnFsZS51aS5nb29n bGUud2lkZ2V0
cy9wbHVnaW4ueG1slZPBTgMhEIbPmvgOyB1W48XDrhtj1HgwaYyeDd2O2zEU KLBa395Z2t11
m9q0nIaZn4+fAfJytdDsC3xAawp+KS84A1PZGZq64G+vD+Kalzdnp3kJlUYX YNBekTaVnG5q
NBSd5LCKYNoycxZNLLj1tdyslLBs0NiVnMfopIcaQ/Q/FATb+AoCJwKjkXeZ 9ZQxpVGFgmff
MH3/QE3KrjJVAYRRCxhVswTKs95May2l+kwHwNnaIpqlBtmgrK2tKfoMymG/ zY6zeOVa+f/m
WaVVCHvo8jFNbidPL5slG+MEORficM6zjXSiu7nycQQT4nhPf1hbrsbt3NXL fX0CQ1edyl2j
CNDnBgKNYzzet4hJwo4Ye6/1EIBTnl5VBF/wRVKLqpUP5rPB/Y725Fn/J34B UEsHCOtbwJIv
AQAAYQMAAFBLAwQUAAgACACUaHk6AAAAAAAAAAAAAAAAJgAAAG9yZy5pbnFs ZS51aS5nb29n
bGUud2lkZ2V0cy9yZWFkbWUudHh0ZZG9asMwEMd3g9/hyNIllbMmW6BQMhRC mxcQ0VUWkXWq
dI7Q2/ekkC7dbPO7/5cvs8sQ/WpfXYD2mOjusqOgvYI3Ci8Ma0bghgmhQ22I Wa8sDGC4u0Rh
wcBqHMbhmIVEeCeyHuF4PkFANFnO+ssN6xYKigJGndAABYRvSlBpbeqUDCZg GoeHpyh96Jih
OGORGyFgAk9X7eHzeJYvmbX3uoVRcJnxaQOGMIu8r+NQKN26SxMUPhidTD83 GD3Vll7Qh+xM
mQ/73X7X+5y+e7SihWDqS7jO6kCilqDhU6TE2w62tg20GDBpxkdeKr3+OEgw BV+IMDPHwzSV
UpTtW6krLZOOLk+LFJ6ys2GNaubFtxgXgucgAYuvf/qmd/03lCe65V7Z8TjI bI3YULLKhR8x
W52yzUfJ9QZyzYxL+60RE1f1C1BLBwgIeCwyQgEAABMCAABQSwMEFAAIAAgA lGh5OgAAAAAA
AAAAAAAAADAAAABvcmcuaW5xbGUudWkuZ29vZ2xlLndpZGdldHMvc3JjLy5z dm4vYWxsLXdj
cHJvcHPzVjAy5Souy7MqT7YqSoxPSSyzKkstKs7Mz9MtLcrhClMwNeXSB8rr K4IIoJS+hYWx
fklRaV62fn5Rul5mXmFOql5ppl56fn46kFWemZKeWlKsX1yUzOXq58IFAFBL Bwj830vNXAAA
AGAAAABQSwMEFAAIAAgAlGh5OgAAAAAAAAAAAAAAACwAAABvcmcuaW5xbGUu dWkuZ29vZ2xl
LndpZGdldHMvc3JjLy5zdm4vZW50cmllc4WPSxKCMBAF91NcJcnkh4FzuHIH ZAgpkWgIen0p
dOPKXne96icRwMcMzmmYSrm3QsTlMRMPKYWZhuSJD+km1uciSt6Wq0g58I+y xa/FX9EHKqtY
8/BvBXYUYsNQM2XPqFqrWiO5tmia+nKE+OzTkqaN4Jdae03aOUbWdAyNRNb3 RrNm7EY6eetk
P0IFe+HxqYI3UEsHCGQHuo+SAAAA3gAAAFBLAwQUAAgACACUaHk6AAAAAAAA AAAAAAAANAAA
AG9yZy5pbnFsZS51aS5nb29nbGUud2lkZ2V0cy9zcmMvb3JnLy5zdm4vYWxs LXdjcHJvcHPz
VjAy5Souy7MqT7YqSoxPSSyzKkstKs7Mz9MtLcrhClMwteTSB8rrK4IIoJS+ hYWxfklRaV62
fn5Rul5mXmFOql5ppl56fn46kFWemZKeWlKsX1yUDJLncvVz4QIAUEsHCN2W Va9eAAAAZAAA
AFBLAwQUAAgACACUaHk6AAAAAAAAAAAAAAAAMAAAAG9yZy5pbnFsZS51aS5n b29nbGUud2lk
Z2V0cy9zcmMvb3JnLy5zdm4vZW50cmllc4WPSxKCMBBE91NcJcnkh4FzuHIH ZAgpkWgIen0V
3bjybburPxIBfMzgnIaplGsrRFxuM/GQUphpSJ74kC5ivS+i5G05i5QD/1i2 +HXxR/SByirW
PLz1f0nwQiE2DDVT9oiqtao1kmuLpqlP+xiffVrStBH8UmuvSTvHyJqOoZHI +t5o1ozdSAdv
nexHqGCv3p9V8ARQSwcIEdhxhZQAAADkAAAAUEsDBBQACAAIAJRoeToAAAAA AAAAAAAAAAA6
AAAAb3JnLmlucWxlLnVpLmdvb2dsZS53aWRnZXRzL3NyYy9vcmcvaW5xbGUv LnN2bi9hbGwt
d2Nwcm9wcx3JTQqAIBBA4f2cwg6QA4UhrmsVtGwbUSJSKI1/18/aPB58M+sE hOxUORTt27ln
lTUF612b6IaVDQKwOjZfKqGUPUZK7kJPhlv33Jony433pl6xp9ExYKDjc/wd pmWEF1BLBwi0
O9K8YAAAAGoAAABQSwMEFAAIAAgAlGh5OgAAAAAAAAAAAAAAADYAAABvcmcu aW5xbGUudWku
Z29vZ2xlLndpZGdldHMvc3JjL29yZy9pbnFsZS8uc3ZuL2VudHJpZXOFj7sS wiAURPs7+RXg
8ook32FllwRCGBWUgP6+mthYue2eObPLEcCGDMZIWEq59YyFeL846lPyFzcl 6+iUrmx9RFZy
jWeWsqc7UsOXos9gvSsrW/P06XfFPx+8IxA7gpIIfUTRa9ErTqVG1bWnbZLN NsW0VAe/aaWV
ThpDnFYDQcWRjKOSpJuH2R2sNnycoYEatnMNvABQSwcIbfGcoZYAAADnAAAA UEsDBBQACAAI
AJRoeToAAAAAAAAAAAAAAAA9AAAAb3JnLmlucWxlLnVpLmdvb2dsZS53aWRn ZXRzL3NyYy9v
cmcvaW5xbGUvdWkvLnN2bi9hbGwtd2Nwcm9wcx3JQQqAIBBA0f2cog6QA0Uh rmsVtGwbUiJD
oTSmXT9t8/nw5qrtISSn3l2x3g6dVDIcyLsm8gVrNUjA7FiXZEIpO3w4uhM9 W0HuvoyIJKz3
Nt9LhzVPwMB7cfwdI8G0jPABUEsHCF2yoHRiAAAAbQAAAFBLAwQUAAgACACU aHk6AAAAAAAA
AAAAAAAAOQAAAG9yZy5pbnFsZS51aS5nb29nbGUud2lkZ2V0cy9zcmMvb3Jn L2lucWxlL3Vp
Ly5zdm4vZW50cmllc4VPOxKCMBTs33CVfMgHA+ewsgPyCBkx0ZDo9VWgsXK7 nd3ZT80BrE9g
jIQ553vHmA+PBamL0S04Rot0jDe2PgPLqYQri8nR3VL84aIvbx3mla1p/Op7 BCv+XyR8IDhv
CZdE6DMXnRadqqnUXLXNZVtlk40hzgXhF420EqUxBLXqCVc1J8OgJGmnfsKT 1aYeJqhgL90+
VuBDxhT65aBvUEsHCGAhxpCeAAAA/QAAAFBLAwQUAAgACACUaHk6AAAAAAAA AAAAAAAARAAA
AG9yZy5pbnFsZS51aS5nb29nbGUud2lkZ2V0cy9zcmMvb3JnL2lucWxlL3Vp L2dvb2dsZS8u
c3ZuL2FsbC13Y3Byb3Bz81YwMuUqLsuzKk+2KkqMT0kssypLLSrOzM/TLS3K 4QpTMDfl0gfK
6yuCCKCUvoWFsX5JUWletn5+UbpeZl5hTqpeaaZeen5+OpBVnpmSnlpSrF9c lAyS1wfL65dm
6kPkuVz9XLgAUEsHCG108fRmAAAAdAAAAFBLAwQUAAgACACUaHk6AAAAAAAA AAAAAAAAQAAA
AG9yZy5pbnFsZS51aS5nb29nbGUud2lkZ2V0cy9zcmMvb3JnL2lucWxlL3Vp L2dvb2dsZS8u
c3ZuL2VudHJpZXOFj0kSgjAURPe/uErmBAPncOUOSAhxSDCDXl8FN65829fV 1c0ogPEJtBaw
lLL2hPhwv1rsYnRXO0Vj8RRvJD8CKamGC4nJ4T1S/TeFn944WzLJafr4vYJU T3b/rxnecEo7
RAXi6kh5r3gvGRaKyq49beNMMjHEpVr4pRVGWKE1skoOiEpG0ThKgbp5mO3B KM3GGRo452H1
29MGXlBLBwgZP9a/mwAAAPQAAABQSwMEFAAIAAgAlGh5OgAAAAAAAAAAAAAA AEoAAABvcmcu
aW5xbGUudWkuZ29vZ2xlLndpZGdldHMvc3JjL29yZy9pbnFsZS91aS9nb29n bGUvanNhcGkv
LnN2bi9hbGwtd2Nwcm9wc7XR3QqCMBTA8fs9hT1AO2kfqHdRESFFdNFtDB02 k632oa+fs7tM
rNCbMfgf2I+zyPHmSBU8LONQkktCirCgUjHBx0bm6Oz4LoKqw8geVQLfn4KW ht9AyBQz/sgp
NgynQqTVrWRJSrUCJWPboe5gGLw6ZIrcGdoc1mgvdPXK6kqkPlEljIwpzkhB UNRFcieL/k3Q
6nnD4kx1E4Om0OtTaBEN11fLC/yhZR92tjzufv7jYFhng2TJ23r4H+1sAG2L xkKfUEsHCCq2
x8PCAAAAtwMAAFBLAwQUAAgACACUaHk6AAAAAAAAAAAAAAAARgAAAG9yZy5p bnFsZS51aS5n
b29nbGUud2lkZ2V0cy9zcmMvb3JnL2lucWxlL3VpL2dvb2dsZS9qc2FwaS8u c3ZuL2VudHJp
ZXOl0jtvGzEMB/BdyFe5O5F68raiQ9EhQFF0yqYHZZ/rnpJ7pF+/ti9DncVN zZXEHz+RAilE
HibhvRL7ZXnuu24YX47c7mrdHTnVzG2qv7r5deyWaR1/dnXatdvIOrxNtb+H vONl7uYpnftb
RLcO3dbvDnN4Hm7li1OhlNRI1aD5IbE32GtolZGa7NOFmKdcx7pfWVyXVVmx 8r5ho0MjNcgm
Rq0aKqGwy8ZDLOJBPNZlqOPnfZiW7zzXdUrcHsJrEGU4bpF/AUD2CD241luQ QE8CycqIGbUK
BtgaF2xMzgZ0KUUK7r/1bwUKzDWyPcy3aOpCK4hSkclEqNEYyil7j0FpIEbS 8R1Nq17aFqUH
p840vEUzyuJ72j/sjS64mFJxNiIUTgp8KiVQ4RicSxlQ07040IaucZ++ff3I fd22xKQ5xdP2
NLHT3mSLLEtkmdhgkqDud+L5vl8uP/+jRLMROfhzH4GjpmIgecCiTAlA7oS8 n3h65oP4A1BL
BwjpkvEMdgEAABYEAABQSwMEFAAIAAgAlGh5OgAAAAAAAAAAAAAAAGgAAABv cmcuaW5xbGUu
dWkuZ29vZ2xlLndpZGdldHMvc3JjL29yZy9pbnFsZS91aS9nb29nbGUvanNh cGkvLnN2bi90
ZXh0LWJhc2UvR29vZ2xlQVBJUmVzb3VyY2UuamF2YS5zdm4tYmFzZa1U32/a MBB+R+J/OPEE
1epApWpd0R4QQoWJlgqqvSInHIk3x85sB4aq/e87OwFa+kObVAuhi3333d13 n13w5CdPEbRJ
mVC/JLJSsFTrlKwflhei32xEZx+7mg04g6EudkakmYN20oGLbvfinP6uYKKU 1oXhiSNzrU3O
ndDK2p11mCPc5PGYBYCBlBAALBi0aDa4YvCQCQuF0anhOXC1Apch8CTRecHV TqgUCA+N4NIG
EG6Qdlbks+FC8lgilGqFJsSRY25Br8PHKJGisAj3ZSxFAlORoKLPTY91A9I2 E0l2SCXQUhTV
shLWGRGXvolPoSLaPCbjLgRnzhXXUbTdbhlWeRgNJJKYchlhIc83vS7LXC6D d82fqoC1sddh
x69/YA/OQSjhiAIY3E+qkvJC0rFywduDfeiKmg3KoI0LKts3aLaOFEccKy4Z 8SPZ+OF22n/T
l4asS5OgZZN5bf6X8y1XJHTD5pjSTNDMikANYTQbRTXURHJr4Saon7jZRx75 sXDcfPSBQGIT
G5IULGgaJC+pk0Bivz6tgOvDFN0w48aia3d8vJ+YQVcaBb53NhwP5ovRw/Ju cDtaThaz5dXV
5Zdlr+89/zwDHPpKp5p7qRJqZb0A9QpkPqn3bncO5t79FeATdjx4bb5AP3Fl 30fzxWR29wro
sf1pTc8RbE8YfIXWk2tQP0F0m6LwDLX8OxS9EeC3ZKatu/582e1GW4yXayHR 0gFfHcZJ71mr
/6yDJ8M6LTnWWiJXdFu/LaYiNtzsXtJrSnw3dPS7kve7kfT7C1BLBwgZmKI/ TwIAAIUFAABQ
SwMEFAAIAAgAlGh5OgAAAAAAAAAAAAAAAGIAAABvcmcuaW5xbGUudWkuZ29v Z2xlLndpZGdl
dHMvc3JjL29yZy9pbnFsZS91aS9nb29nbGUvanNhcGkvLnN2bi90ZXh0LWJh c2UvTW90aW9u
Q2hhcnQuamF2YS5zdm4tYmFzZa1UwYrbMBC9B/IPw568YWNn91Q27CGE0i6k sND+gGJP7Gll
SZVku6b03zuWHXuTTWgPK0KwpJk3b56elCzed8xnsICtNq2lvPAQpbfwsFo9 LPnvAzwrpbWx
IvX8edC2FJ60cq51HkuET+X+cxwANlJCAHBg0aGtMYvhW0EOjNW5FSUIlYEv EESa6tII1ZLK
gfHQkpAugAiLvJJxTC1Iir1EqFSGNuRxYOlAH8LkYyrJOISXai8phR2lqHha 38ergNQUlBZj
KULHWcwlI+ct7auuibvAiBenYsKH5MJ785gkTdPE2NeJtc0TibmQCRq5rO9X ceFLGaIH/VQP
rK17DCvd+A/1YAmkyLMEsHl57imVRvK28iG6A3vXkcxnRqQ/RI7AXcWkfkqM K4pzrXP++u6E
ofV8Np8xD219CDrK4BofN5Tl6F28ZWm1I4/rf4buRKsrH0BNf2CpFM7BF911 uC0E5+Ivjypz
MMLC7y4e2D9Us0vgKwvMjhFZxgZz8AQ3N+sL+2wEdspOp0G99YDRV31VL4ID KRZ9KmfYfcrf
DeukPDjfsiluOyLdabrKoI3GuGE3cPhzUmZgwq1verLRiGHRV1Ydm7iQW2vK wE2ZA52z5kc8
OkSTIk+gKr6G4yYE08dvFOOagNLh1bjX9ALBayy3J2JHR5pyWJiohAKnR8N1 5HRK1zU8q3Eu
5QXk13DJIkQv+AKyv7pdIWUL/C50NwwzYGOC4EeAHx4DqeAb66EQNT8GIINt +/zkQve9rY9H
1M+GpGPnzIJ/fwFQSwcIjHB6TUoCAACzBQAAUEsDBBQACAAIAJRoeToAAAAA AAAAAAAAAABg
AAAAb3JnLmlucWxlLnVpLmdvb2dsZS53aWRnZXRzL3NyYy9vcmcvaW5xbGUv dWkvZ29vZ2xl
L2pzYXBpLy5zdm4vdGV4dC1iYXNlL01vdGlvbkNoYXJ0LmpzLnN2bi1iYXNl rVdRc9M4EH4u
M/wHkYezwwQnTlMoYe6hhF7pTBk4YI6Hm5sbxVZtHbJkJDkhMPnvt5LiJHaa oGaqZlxb2l3t
t/tpJfWfPmx7/Ag9RRNRLiTNco3CpIuGg8HwGTzO0TXnQpQSJxpeb4UssKaC K7VQmhQEXRXT
t5E1cMEYsgYUkkQROSNphD7nVKFSikziAmGeIp0ThJNEFCXmC8ozBPaIpJgp awRLAj0pyMww
ZXjKCKp4SqTVA8FCIXFrPy4TRktF0IdqymiCbmhCOHzO4mhgLc1zmuTrqShR oAW+pFRpSaeV
AdGzHkHnZjKsrXKudTnu9+fzeUTcPJGQWZ+RDLM+KdmzWTyIcl0wK72KH3eG hVRj22OaR/TQ
M0Q51RACdPHh2rlUlAyGubbSxtiDtv7jR48fffseTRhWKkrJLeUkRB1AGFH+ jZGoolEmRAZv
/ylc0uidMH5Mcix1p4d+gkPQyHdNeDpGYAjkGV6ISkcTzGdY3diPnpNzzwRQ a1kleoxuK54Y
eyGiKerW5kwzGYqmWIE3WGaViYBC3VctAUX0Wwj9hXbxNq7TFPwy1tqy/0Ln 7zCy058YMDDE
K8ZgsN+vh+ltiK5eSzEHCl+riWGPpkCNsOt83UhujGVEJMKwFOyRObqaMAqu X616w22vWn7g
NL2cgewN0JJwkEUd8Ixn5C0xSwlQuRlS8ZEo+oO4712ce+18oanOfcxs3lap ZwKnYTCjqsKM
/rBMDHooiOHxMyhx8hVnRAXjv4PCssMGNPhnuW1zZQkS9p7fgLkJZmwKmqH1 RjT6uo0s1BxB
qcRzS7ywFf2TVh4h7qvpGi5vczdMRWJJFWVEX7oV9npxnYY07brpTx4qOd6m fpmfDeLl5mPZ
Sj+F2hIGk3qNkTRoqlohE8rtaNSZWq4XqlOAcl0SqU3JHDdjDiigtO9022UD JQz6O51eewSX
JVuYIUOozp2Alo1SUZBiSuRqlloWQnMBjJjBboG2SkijfJg2wxKpnMBetF7b 7eESNhluOGOj
AlT4YDsay9Q02EFg2dfWnDn022+1/pNVz44LNhxQRZxclJgqyzFUe7Bhi2y9 pai5juY0BQ9U
9MnM0rnbmGk1Jmf01a7QcrdrDXTlyX6oLWXjvZvwIEgrYla3zQyZQLzScLey tCaok23a5q1Z
DPam+AQzoGYYNMVBJoHXFe3XsgdZv9+VlsZ+X7aWXksniqLWCjTNkC+pZIt9 F25RhbvyB7Yi
oGFt6cmGmVtdnT1ccrt1IiSJvljqRbesUvkVE1PM/qxIRdQOO2pfGhX3EDFM e8DyXO/k3d0Q
3TGbqbX2MCZY6LbjTwWQ4x0u694uOtIQ2Pi8KImPnStb7qMp5WkjcD0o/HBe /boq+ZvCv65u
R9ksxIzAaaxlVXDw+B0M7azHuu2tIyf7JQyNU6zxobS+gfHP2HL1jpmNtonu R6B2+PyQxESw
quBhYA7tPDPnjz9kRXXgowPfxGi8Mf99FHhlNh6j8gnKjLqnzuX30txA/NQ2 eG5E4s5We9Wg
wP6FWUXCQQ/BL7iADfXQNNvycc/myIQAhfHL8/PeoBd3vVSHoD0YDLxkT+Hn KToyocLqQArX
0rHD+16ag5IP4Ph4wLEF/PLMA0Rs8Q598MYO7xfihXfo8L7GHP588A6Pxzu0 eL2SNnR4fUIz
vBfe03vy+bQB16GNvdCeOjp75ezUwh15igLcjqFz59fSo/vSeXQ03pFjsw+G kYUb+2R35OCa
7HrAPbsvm8+Ohntm4b44P/cSBbjP4xdeogfh3r0z1ieerf35Dl076k4Z5ugY mpnhXj03t8Ex
ej6AyOX2kjmGJbrcPRL88jy9vkoevC0dcxpsnwQPXhG2j1NJTpKvzqlDF5DV 67K+Ei7h8PI/
UEsHCBfrOu2FBQAA8hQAAFBLAwQUAAgACACUaHk6AAAAAAAAAAAAAAAAbQAA AG9yZy5pbnFs
ZS51aS5nb29nbGUud2lkZ2V0cy9zcmMvb3JnL2lucWxlL3VpL2dvb2dsZS9q c2FwaS8uc3Zu
L3RleHQtYmFzZS9Nb3Rpb25DaGFydEFQSVJlc291cmNlLmphdmEuc3ZuLWJh c2WtVFFv2jAQ
fkfiP5z61FbDoZWqdUV7QAitTFAqqPqKnOSaeHPszHbI2LT/vrMTSges2qRa CF3O3313/u7s
kidfeYagTcaE+iaRVYJlWmdkfbG8FINuJzp/29XtwDmMdLkxIssdnCZncNnv X/bo7xomSmld
Gp44Mp+0KbgTWlm7sQ4LhE9FfMsCwVBKCAQWDFo0a0wZPOTCQml0ZngBXKXg cgSeJLooudoI
lQHxoRFc2kDCDZInJcyaC8ljiVCpFE2II2BhQT+Fj3EiRWkR7qtYigSmIkFF n+sL1g9MdS6S
/DmVQEtRVEsqrDMirvwh3oWKyLlLxl0Izp0rb6KormuGTR5GDYkkZlxGWMre +qLPclfIgG71
Uw2xNvYmePz6B/WgB0IJRxLA8H7SlFSUkraVC2hP9qYr6nYogzYuTNn2gKZ2 NHGkseKSkT6S
3T7MpoO/YqnJujIJWjZZtOZ/gWdc0aAbtsCMeoJmXgZpiKPbKZumJpJbCzPt N0Y5N44E2obv
RLKwc/700UATJ9Y0V7CkltCMSZ0EJQftbsPebmboPLdFd3rm433bDLrKKPAC sNHtcLEcP6zu
hrPxarKcr66vrz6sLgYe+esPwpEvd6q5n1dibawDUj+GzCf16NOzZ3MLP0K8 J5Enb80D9j0o
exwvlpP53RHS3fGnrTwNWRR5uq1k8BFOXtyG9iWiSxWF1+hk0GQ/AvcumWvr bt5f9ftRjfHq
SUi0tMHTR2ErLsWPEERdpbdtS9Ue5EXP9iuPtZbIFd3cz8upiA03m0OVTYWv ho6/N6P+aiT9
fgNQSwcIhMc7x1sCAACRBQAAUEsDBBQACAAIAJRoeToAAAAAAAAAAAAAAABq AAAAb3JnLmlu
cWxlLnVpLmdvb2dsZS53aWRnZXRzL3NyYy9vcmcvaW5xbGUvdWkvZ29vZ2xl L2pzYXBpLy5z
dm4vdGV4dC1iYXNlL01vdGlvbkNoYXJ0UmVzb3VyY2UuamF2YS5zdm4tYmFz Za1U247aMBB9
R+IfRvsEq+LASpXo8oQoKlTcRFBfkQmziVvHTm0Hiqr9944dLu1CV620VhSN nXPO2GcmLnjy
jacI2qRMqO8SWSlYqnVK0VfLC9Gr16L7tx31GtzDQBcHI9LMQSNpwkO7/dCi VxfGSmldGJ44
Cp+0ybkTWll7sA5zhE/5ZsSCQF9KCAIWDFo0O9wyWGXCQmF0angOXG3BZQg8 SXRecHUQKgXS
QyO4tEGEG6SVLWF2XEi+kQil2qIJPALmFvRTmAwTKQqLsCg3UiQwEQkqmu46 rB2U9plIsnMq
gZZYtJetsM6ITekP8S7siBYvybgL5My54jGK9vs9wyoPo4JEElMuIyxka9dp s8zlMqCP/qlK
WBv7GFb8+Af3oAVCCUcWQH8xrraUF5I+KxfQXuxNR1SvUQZtXOiy0wHN3lHH kceKS0b+SDZa
TSe9v2KpyLo0CVo2Xh7D/wJPuaJGN2yJKdUEzbwI1pBGvVZURU0ktxam2n8Y ZNy4E/fikIWz
IPz0VIAjOaZyUH+l6DzVoms0PcJXxaArjQJ/PjYY9ZfxcLWe9afD9Tier7vd 9x/WnZ5HPv8h
OPC7mWju25FUq+hK1HcZ80k9utE8hyf4DeEXDnjxY3il/gLKvgyX8Xg+W/dn H9eD+XSxHMbx
jQwXLyY6CU11pXznGzzcOFEpourGicKNE/1WALqD7m7ob7SWyBX9S5/jidgY bg7XxpgSX6UO
f1TN9yqTnl9QSwcIF81xBCwCAAAjBQAAUEsDBBQACAAIAJRoeToAAAAAAAAA AAAAAABQAAAA
b3JnLmlucWxlLnVpLmdvb2dsZS53aWRnZXRzL3NyYy9vcmcvaW5xbGUvdWkv Z29vZ2xlL2pz
YXBpL0dvb2dsZUFQSVJlc291cmNlLmphdmGtVN9v2jAQfkfifzj1qVTDoZWq daA9IIRaJn5U
0HfkhGvizbEz2yFD0/73nZ1QWmirTaqF0OV89935u88uePKDpwjapEyonxJZ KViqdUrWd8sL
MWi3oouPXe0WXMBIFzsj0szBedKBq17vqkt/NzBRSuvC8MSR+ahNzp3Qytqd dZgj3ObxHQsA
QykhAFgwaNFsccPgIRMWCqNTw3PgagMuQ+BJovOCq51QKRAeGsGlDSDcIHk2 FLPlQvJYIpRq
gybkUWBuQT+Gj3EiRWER7stYigSmIkFFn9tL1gtIVSaS7KmUQEtZ1MtGWGdE XPpDfAodkfNQ
jLuQnDlX9KOoqiqGdR1GA4kkplxGWMju9rLHMpdLH93Qp2pcbWw/ePz6B/Kg C0IJRwzA8H5S
d5QXkraVC9Ee7ENX1G5RBW1cENn+fKZyJDiiWHHJiB7J7h5m08GbsTRjXZoE LZssG/O/gmdc
kc4NW2JKI0GzKAI1hNFuFfVME8mthdsgfuJmn3ngx8LB+dsnAmlNbElRsKJp kLqkTgKJg2a3
Bm42U3SjjBuL7rzj8/3EDLrSKPBnZ6O74XI1fljPh7PxerJarG9urr+sLwc+ 8s8LwJHvdKq5
Vyqh1tYJqBcg80V99HnnydyHvwJ8xI4Hb8wT9KNQNl/Mx68gHs4+bbg5IO3Z gq9w9uwKNM8P
3aQoPEFn/g2K3kjwLplp6/qfr3u9qMJ4/SgkWtrgm6dZ0lt2NnjR/rNJHbcc ay2RK7qp31ZT
ERtudqfcmhLfTR3/qrX9bib9/gJQSwcIkkXXa0wCAACBBQAAUEsDBBQACAAI AJRoeToAAAAA
AAAAAAAAAABKAAAAb3JnLmlucWxlLnVpLmdvb2dsZS53aWRnZXRzL3NyYy9v cmcvaW5xbGUv
dWkvZ29vZ2xlL2pzYXBpL01vdGlvbkNoYXJ0LmphdmGtVMGK2zAQvQfyD8Oe vGFjZ/dUNuwh
hNIupLDQ/oBiT+xpZUmVZLum9N87lh17k01oDytCsKSZN2+enpQs3nfMZ7CA rTatpbzwEKW3
8LBaPSz57wM8K6W1sSL1/HnQthSetHKudR5LhE/l/nMcADZSQgBwYNGhrTGL 4VtBDozVuRUl
CJWBLxBEmurSCNWSyoHx0JKQLoAIi7yScUwtSIq9RKhUhjbkcWDpQB/C5GMq yTiEl2ovKYUd
pah4Wt/Hq4DUFJQWYylCx1nMJSPnLe2rrom7wIgXp2LCh+TCe/OYJE3TxNjX ibXNE4m5kAka
uazvV3HhSxmiB/1UD6ytewwr3fgP9WAJpMizBLB5ee4plUbytvIhugN715HM Z0akP0SOwF3F
pH5KjCuKc61z/vruhKH1fDafMQ9tfQg6yuAaHzeU5ehdvGVptSOP63+G7kSr Kx9ATX9gqRTO
wRfddbgtBOfiL48qczDCwu8uHtg/VLNL4CsLzI4RWcYGc/AENzfrC/tsBHbK TqdBvfWA0Vd9
VS+CAykWfSpn2H3K3w3rpDw437Ipbjsi3Wm6yqCNxrhhN3D4c1JmYMKtb3qy 0Yhh0VdWHZu4
kFtrysBNmQOds+ZHPDpEkyJPoCq+huMmBNPHbxTjmoDS4dW41/QCwWsstydi R0eacliYqIQC
p0fDdeR0Stc1PKtxLuUF5NdwySJEL/gCsr+6XSFlC/wudDcMM2BjguBHgB8e A6ngG+uhEDU/
BiCDbfv85EL3va2PR9TPhqRj58yCf38BUEsHCIxwek1KAgAAswUAAFBLAwQU AAgACACUaHk6
AAAAAAAAAAAAAAAASAAAAG9yZy5pbnFsZS51aS5nb29nbGUud2lkZ2V0cy9z cmMvb3JnL2lu
cWxlL3VpL2dvb2dsZS9qc2FwaS9Nb3Rpb25DaGFydC5qc61XTW/bOBA9J0D+ A+tDJReubDlO
m7rYQ+qmSYAUzTbF9rBYLGiJkbilSFWk7LqF//sOScu25I8yRhhDkciZ4byZ xyHZffG07eQY
vUAjkc8KmqQK+VEb9Xu9/kt4nKMbzoXICxwpeH0QRYYVFVzKmVQkI+gqG18H xsAFY8gYkKgg
khQTEgfoS0olyguRFDhDmMdIpQThKBJZjvmM8gSBPVJQzKQxggsCPTHITDBl eMwIKnlMCqMH
gplE4sF8XEaM5pKgu3LMaIRuaUQ4fE7CoGcsTVMapcupKJGgBb7EVKqCjksN omM8gs7VZFgZ
5VSpfNjtTqfTgNh5AlEkXUYSzLokZy8nYS9IVcaM9CJ+3BoWhRyaHt0coode IsqpghCgi7sb
61KWMxjmykhrY0/auifHJ8fffwQjhqUMYvJAOfFRCxAGlH9nJChpkAiRwNt/ Euc0+Ci0H6MU
F6rVQb/AIWjkhyI8HiIwBPIMz0SpghHmEyxvzUfHytlnBKhVUUZqiB5KHml7 PqIxalfmdNMZ
CsZYgje4SEodAYnab0+Ou92aiCTqGoJ/oWzEtfM0Bs+0vbcNc/9C5x8wstEf aTgwxEvGalPQ
Bx9dvSvEFEh8I0eaP4oCOfy29XYluTKWEBEJzVOwR6boasQoOH+16PXXvWr4 geP4cgKyt0BM
wkEWtcAznpBrohcToLIzxOIzkfQnsd+bOHfa+UpjlbqYWUe2SD8TOPa9CZUl ZvSnYaPXQV4I
j19ejqNvOCHSG/7tZYYhJqTeP/N6yha2IGmf+C0YHGHGxqDrG49Era+uWTEF xQWeGvr5jQwc
NXIJsV9MV3N6ncF+LCJDrSAh6tKus3ezm9incdtOf/RUCXI29dscrRDPVx/z BgUoVBjfG1Ur
jcTelrWjQ7kejYoB8+VytQpQtHNSKF04h/WYAwoo8BvdZulAIYP+VqvTHMF5 zmZ6SFOqtRXQ
vFYwMpKNSbGYpZKF0FwAIyawZ6C1QlIrIrpNcIFkSmBHWq7v5nAOWw3XnDFR ASrcmY7aUtUN
9hFY+pU1aw49f17pP1v0bLhgwgGVxMoFka61HEPNBxum1FYbi5yqYEpj8EAG 93qW1nZjulWY
rNG3m0Lzza4l0IUnu6E2lLX3dsK9II2IXt0mM2QE8Yr9zerSmKBKtm6rt3ox 2JniI8yAmr5X
FweZCF4XtF/K7mX9blcaGrt9WVt6DZ0gCBorUDdNvqgsGuy7sIvK35Tfsx0B DStLz1bMXOtq
7eCS3bMjUZDgq6Fe8MBKmV4xMcbsz5KURG6wo/KlVnH3EUO3JyzP1W7e3gzR ltl0rTVHMsF8
uyXfZ0COjzivetvoQENg48ssJy52rky5D8aUx7XAdaDww6n126Lkrwr/srod ZDMTEwJnsoZV
wcHjjzC0sR6rtrOOHO2W0DSOscL70voexr9gw9UtM2ttHd3PQG3/1T6JkWBl xn1PH915ok8g
H4qSKs9FB76J1niv/7so8FJvPFrlHsqMfKTO5Y9c30Pc1FZ4bkVkT1c71aDA /oVZSfxeB8HP
u4ANdd806/Jhx+RIhwD54Zvz806vE7adVPug3ev1nGRP4ecoOtChwnJPCpfS ocX7qdAHJRfA
4eGAQwP4zZkDiNDg7bvgDS3er8QJb9/ifYc5/Lng7R+Ot2/wOiWtb/G6hKb/ KLynj+TzaQ2u
RRs6oT21dHbK2amBO3AUBbgtTefW76UHj6Xz4GC8A8tmFwwDAzd0ye7AwtXZ dYB79lg2nx0M
98zAfX1+7iQKcF+Fr51E98LdvjNWJ561/XmLrhm1pwx9dPT1zHCznurb4BC9 6kHkUnPJHMIS
bdyqdfvteXp5ldx7WzrkNNg8Ce69Iqwfp6KURN+sU/suIIvXeXUlnMPh5X9Q SwcIquF30YYF
AAD4FAAAUEsDBBQACAAIAJRoeToAAAAAAAAAAAAAAABVAAAAb3JnLmlucWxl LnVpLmdvb2ds
ZS53aWRnZXRzL3NyYy9vcmcvaW5xbGUvdWkvZ29vZ2xlL2pzYXBpL01vdGlv bkNoYXJ0QVBJ
UmVzb3VyY2UuamF2Ya1UUW/aMBB+R+I/nHii1XBopWpd0R4QQoMJ2gpQX5ET jsSbY2e2A2PT
/vvOTigttNUm1ULocv7uu/N3Zxc8+c5TBG1SJtQPiawULNU6Jeub5YXoNRvR +fuuZgPOYaCL
nRFp5qCdnMFlt3vZob9rGCuldWF44shca5NzJ7Sydmcd5ghf8njEAkFfSggE FgxaNBtcMVhk
wkJhdGp4DlytwGUIPEl0XnC1EyoF4kMjuLSBhBskz4owGy4kjyVCqVZoQhwB cwt6HT6GiRSF
RbgvYykSmIgEFX1uLlg3MG0zkWSPqQRaiqJaVsI6I+LSH+JDqIich2TcheDM ueImirbbLcMq
D6OGRBJTLiMsZGdz0WWZy6VH1/KpilcbexM8fv2DeNABoYQjBaB/P64qygtJ 28oFtCd71xU1
G5RBGxeGbH8+s3U0cCSx4pKRPJKNFtNJ71Us9ViXJkHLxrPa/C/wlCuac8Nm mFJL0NwVQRri
aDaKqqeJ5NbCVPuNQcaNI4H24QeRLBycv3000MCJDY0VzKklNGJSJ0HJXr1b sdebKTrPbdG1
z3y8b5tBVxoFXgA2GPVn8+FiedufDpfj+d3y+vrq0/Ki55F/nhEOfLkTzf24 EmtlnZD6KWQ+
qUe3zx7NPfwF4iOJPHltnrAfQdnDcDYf392+QHo4/qSW50C2Fww+Q+vJVaif IbpRUXiKWv4t
il4J8C6ZaetuPl51u9EW4+VaSLS0wVcPwpZcil8hiLpKT1ur9+wgT3p2XHms tUSu6OJ+nU9E
bLjZnapsSnwzdPizGvU3I+n3F1BLBwg2mVbeWAIAAJAFAABQSwMEFAAIAAgA lGh5OgAAAAAA
AAAAAAAAAFQAAABvcmcuaW5xbGUudWkuZ29vZ2xlLndpZGdldHMvc3JjL29y Zy9pbnFsZS91
aS9nb29nbGUvanNhcGkvTW90aW9uQ2hhcnRFbnRyeVBvaW50LmphdmGtU8Fu 1DAQvecrhp5S
1HpTDghacajaBVbalopdxBG5zjQZcGxjOxsW1H9n7Ox224qKS31wbM97M2+e ncnL5x0FvIQz
69aemjZCqfbhVVW9hanS5AIubO8VgjQ12NiiDwJOtYYMDuAxoF9hLVKSZUsB nLeNl10mMB6k
UrZz0qzJNNDJiJ6kDiA98q7m+EqSltcaoTc1+sRJuRjXBbA3OcdGClz115oU zEmh4e3qSFQw
tKTauyqEgRkso6YQPV33kaw5SAmTHj7flZMR2hjd8WQyDIPAsYSwvplobKSe oNOHq6NKtLHT
nGB0yYxJrQ/H6QAeuXQIZChyg3B6NRtLdk5jhybKpIQ5zzomhZPqh2wQWLcg 81Oj6Ek01ja8
+h6ko5OiYA3WxwzZtumHKDTdoForBs6m3Nf6ypKJJ/9CB0Yvvi6fjGm5tn0U 70nreV4+iRyo
bjAGcU7BMeu/uEWLWnMLhRuvXmkZAlzYZOZZK33cKd9ZHeBeQ/CnKAA29LRX HvkVfpmV+xzi
G4SNlvRk8vcdGBy2p+X+SQZlIRDyPALySbllHQAbJBYfp/P5t+Xn2QVseJkh AsbRmDJTd0ax
iMfAJf5i2N6HC+kCnGNn9xIkY+71Dd34GbXcC5RjplHP5afL6R37rsKCfmMJ b6rqAF5X1UMB
1qHZ9sy/lmbgizFCIVliA9ZJ9MY7ALphxMYEwdbWp6ZOQBlV+wAIW6tE0Ihu WwTgttjNHmPv
DVQpdlvcFsVfUEsHCHRUGckyAgAA7QQAAFBLAwQUAAgACACUaHk6AAAAAAAA AAAAAAAAUgAA
AG9yZy5pbnFsZS51aS5nb29nbGUud2lkZ2V0cy9zcmMvb3JnL2lucWxlL3Vp L2dvb2dsZS9q
c2FwaS9Nb3Rpb25DaGFydFJlc291cmNlLmphdmGtVNuO2jAQfUfiH0b7BKvi wEqV6PKEKCpU
3ERQX5EJQ+LWsVPbgaKq/96xw6VdaNVKayE0cc45Y5+ZTMGTLzxF0CZlQn2V yErBUq1Tij5b
XohevRY9vu6q1+ARBro4GpFmDhpJE57a7acW/XVhrJTWheGJo3CnTc6d0Mra o3WYI3zINyMW
BPpSQhCwYNCi2eOWwSoTFgqjU8Nz4GoLLkPgSaLzgqujUCmQHhrBpQ0i3CDt bAmz50LyjUQo
1RZN4BEwt6B34WGYSFFYhEW5kSKBiUhQ0eO+w9pB6ZCJJLukEmiJRWfZCuuM 2JT+Em/CiWjz
moy7QM6cK56j6HA4MKzyMCpIJDHlMsJCtvadNstcLj36ZJ+qdLWxz2HHr38w D1oglHDkAPQX
4+pEeSHptXIB7cVedUX1GmXQxoUmO9/PHBw1HFmsuGRkj2Sj1XTS+yOWaqxL k6Bl4+Up/C/w
lCvqc8OWmFJJ0MyLYA1p1GtFVdNEcmthqv2LQcaNO3OvDlm4CMJ3TwU4kWMq B7VXis5TLbpG
0yN8VQy60ijw92ODUX8ZD1frWX86XI/j+brbfftu3el55I/fBAf+NBPNfTeS ahXdiPomYz6p
Rzeal/AMvyP8wgEvfgpv1F9A2afhMh7PZ+v+7P16MJ8ulsM4vpPh6sVEJ6Gp bpQffH+HgROV
IqoGThQGTvRLAWgEPdzR32gtkSv6lD7GE7Ex3BxvjTEl/pU6/FY13w1zR8Ph QqXfT1BLBwh9
bOxlMAIAACMFAABQSwMEFAAIAAgAlGh5OgAAAAAAAAAAAAAAAEYAAABvcmcu aW5xbGUudWku
Z29vZ2xlLndpZGdldHMvc3JjL29yZy9pbnFsZS91aS9pbnRlcm5hbC8uc3Zu L2FsbC13Y3By
b3BzHck9CoQwEEDhfk7hHsAMrIiSeq0ES1sJGsJgmLCTH69vtHk8+Obm20Ms rK9di9kOU3Sx
Eilwm8XD2gwDYHX8PKmE49hhkswnBnGK+O+tyqRcCK7eRYezKWKU/XF8HTPV SVbYeJiWH9xQ
SwcIicJiHGgAAAB2AAAAUEsDBBQACAAIAJRoeToAAAAAAAAAAAAAAABCAAAA b3JnLmlucWxl
LnVpLmdvb2dsZS53aWRnZXRzL3NyYy9vcmcvaW5xbGUvdWkvaW50ZXJuYWwv LnN2bi9lbnRy
aWVzhU87EoIwFOzfcJV8yAcD57CyA/IIGTHRkOj1RbCxcqud2Z391BzA+gTG SJhzvneM+fBY
kLoY3YJjtEjHeGPrM7CcSriymBw9LMV/XfTlrcO8sjWNH/2IYMVvJGMK/fIv GzYIzlvCJRH6
zEWnRadqKjVXbXPZ59lkY4hzQfhFI61EaQxBrXrCVc3JMChJ2qmf8GS1qYcJ KjhK97MVvAFQ
SwcIHblDrZ4AAAD3AAAAUEsDBBQACAAIAJRoeToAAAAAAAAAAAAAAABNAAAA b3JnLmlucWxl
LnVpLmdvb2dsZS53aWRnZXRzL3NyYy9vcmcvaW5xbGUvdWkvaW50ZXJuYWwv Z29vZ2xlLy5z
dm4vYWxsLXdjcHJvcHMlyksKAjEQhOF9n2I8gCnwASFrXQmzdCthJoTG0MHO Y65vRjfFD189
ptOVShe3LU79a/Xd9aCFsxybJnpO9kIYjsM+g2DtGVWbvJE1GpZPCqaxiTnH URuvMdSCosvu
+Dkaj6hBxSf8j3Sfb/QFUEsHCB3Z1AdtAAAAfQAAAFBLAwQUAAgACACUaHk6 AAAAAAAAAAAA
AAAASQAAAG9yZy5pbnFsZS51aS5nb29nbGUud2lkZ2V0cy9zcmMvb3JnL2lu cWxlL3VpL2lu
dGVybmFsL2dvb2dsZS8uc3ZuL2VudHJpZXOFj8sSgjAMRfcZfqUPaIuF73Dl rtAAVWyxtPr7
Irhx5VllJmducksOYF0ErQVMKS0tY84/ZqRjCOOMfbBI+3Bn69OzFLO/sRBH eijZfS36cnbE
tLI19p/9EcGy24aE0ZuZHeK/E7BRcd4QLkilzrxqVdXKkgrFZVNf9i9ttMGH KSP8UgsrUGhN
UElDuCw56TopSDOYAU9W6bIboIDraha3Vy7gDVBLBwipF5TopAAAAP0AAABQ SwMEFAAIAAgA
lGh5OgAAAAAAAAAAAAAAAFMAAABvcmcuaW5xbGUudWkuZ29vZ2xlLndpZGdl dHMvc3JjL29y
Zy9pbnFsZS91aS9pbnRlcm5hbC9nb29nbGUvanNhcGkvLnN2bi9hbGwtd2Nw cm9wcyXKSwoC
MRCE4X2fYjyAKVGEMWtdCS7dSpgJoTV0tPOY65vRTfHDV9dhf6TcxC6TVfeY XbPNa+Yk26qR
7sNpR+iOzTqdMI4HFK3yQtJgWD7Rm8ompBR6LTwHXzKyTqvj56jco3gVF/E/ 4pndm+lyO9MX
UEsHCCQAXOlxAAAAgwAAAFBLAwQUAAgACACUaHk6AAAAAAAAAAAAAAAATwAA AG9yZy5pbnFs
ZS51aS5nb29nbGUud2lkZ2V0cy9zcmMvb3JnL2lucWxlL3VpL2ludGVybmFs L2dvb2dsZS9q
c2FwaS8uc3ZuL2VudHJpZXOFkEFygzAMRfcarmLLYJsazpFVdwYLcEMsYkxz /aShm676VprR
my/NrxVAiBmc07CUsvWIMd1XkjPzvNLIgeTIN9y/E5Z8pCtynuWpHPHXko8Y Zio77nn82Z8R
eMTXUCgnv+Ip4tfut/jfIXjRKNUJpUVjL6rpbdObWmqrTNd+vn8NOXDi5SD4 S6uDJu2cIGu8
UKZWYhiMFt3kJ/oI1tXDBBXcuERO4+JzucbybqCCJ1BLBwho1lWysAAAAAwB AABQSwMEFAAI
AAgAlGh5OgAAAAAAAAAAAAAAAGIAAABvcmcuaW5xbGUudWkuZ29vZ2xlLndp ZGdldHMvc3Jj
L29yZy9pbnFsZS91aS9pbnRlcm5hbC9nb29nbGUvanNhcGkvbW90aW9uY2hh cnRraXQvLnN2
bi9hbGwtd2Nwcm9wc72OOw7CMBBEe58iHAAvBEWK0qFAFaCkRavEMk6MDetP ro8dWiQ6mtVo
3kj7uqKsmIummfuG8DZgbKIgp6xZB9LsWmw3FYM0gFU+iUFd78BTMBNYklyZ lxY8KC6tlSnN
apDCO3DUZw4Lh6BS8IIMavgMYXT4VPCwPv3q70h+Up4dLwd2Xqo2V6d2z0eM yLqfmuUfNeGb
YlZ/A1BLBwgn71lFmQAAAE4BAABQSwMEFAAIAAgAlGh5OgAAAAAAAAAAAAAA AF4AAABvcmcu
aW5xbGUudWkuZ29vZ2xlLndpZGdldHMvc3JjL29yZy9pbnFsZS91aS9pbnRl cm5hbC9nb29n
bGUvanNhcGkvbW90aW9uY2hhcnRraXQvLnN2bi9lbnRyaWVznY49b8MgFEV3 1L8CPL6M8VZl
bbdO2cCATeKYFOP079eJM7RTpd7pSe/o3sMAIZ8KaluBxlqvHaVp/pwCGXIe ptBnH0ifL3S5
zbSWdT7TXAayI2t6UuQr+SHUhS6lv//3Crqm7aihzHaiO0hPi70mesk15bkf bannVP/aRVs4
gMEgMFcfwDvFO8mIUCBNc3yo++LznMc1oN9phBdBtC0OSloMkgF2Tgpsoo1B e9UyF9ELen8I
He5Cb4dXcrI3i2Ka9rYf2ww6zjqmidENMHNERrcsNKzXivUuSmWVMppzBx68 iOD+Lf6MAG02
v29QSwcILiYCmuwAAACmAQAAUEsDBBQACAAIAJRoeToAAAAAAAAAAAAAAAB9 AAAAb3JnLmlu
cWxlLnVpLmdvb2dsZS53aWRnZXRzL3NyYy9vcmcvaW5xbGUvdWkvaW50ZXJu YWwvZ29vZ2xl
L2pzYXBpL21vdGlvbmNoYXJ0a2l0Ly5zdm4vdGV4dC1iYXNlL01vdGlvbkNo YXJ0TENBLmph
dmEuc3ZuLWJhc2W9Vl1v2zYUfQ+Q/3CRJzlIpLRPQ4M8GI67ukgXw87ah6II aOlaZkqRGklb
9Yb+912Skizb8eINwYTApsl7zv3kUZLz131OT+AcBqpca54vLERpD95eXb29 pI9fYCSlUqVm
qaXlXOmCWa6kMWtjsUD4tZh9iD1BXwjwBAY0GtQrzGJ4WHADpVa5ZgUwmYFd ILA0VUXJ5JrL
HIgPNWfCeBKmkXYyslkxLthMICxlhtrjyLAwoOb+xzAVvDQI4+VM8BTueIqS fq7exFeeqVrw
dNG64mgIRbFk3FjNZ0uXxIWPiDY3zpj14IW15bskqaoqxuAnVjpPBOZMJFiK y9Wbq3hhC+Gt
6/rJQKy0eed33HNE9eASuOSWSgD98SiEVJSCjqX11o7sVZ/k9KRk6XeWI1BW MZd/CIyXnBZU
YclEnCuV09aTYSWPC+WCSBdM2+/cXp+enJ5QfEpbeKK6xVzFo/vhjxRLZ9Y9 dtxN9XRlY8Hn
mK5TIu7PqAlUky88y9HeDfrXR4B8gZUg698tF8cgRoG/n7GSEjsG8XH6RfMj bdvgjw0nAA5b
G7KuvI1pkn3ZMJBu27UN3erjJ9/Hgeuj71IZLk4qmDHQOaSMAH9YlJmBvUbB Xw4KUINXimd0
vcN1/8zEEk0Ec04zBAECIU7oOaC7ENtdjHexUWMAvQZ5HYDbzQRWf9/Apqzx 5jyCDjxJHEGN
aF1GMJ7cjx/7t7eT4XR6Ac55pwybAAJtRjAT9dp4widRKynWIBEzzIBuOKRL Y1UBK0aqJkkM
I1KrgpSu1wSyNThtOAMP+xxQW+ED/AxFT86903OYIAtKWjLSVaSsSN00k2aO 2kWhyb87pnkh
EQmgZLdtmkhumWUvNKxbkqKzvnm+XG25p6SGJO9CpV7E2kY1eTv3Y61K1Hbt ux916S9g3J/0
Pz0Ohr89DCedLnZsYoN2gE6z7mon0cbd84Ub1UKbkndvRq+mFLMlvXXq10rI 4mDJ3LuoJuF/
1j6fL59daFUZ6GhjU9FGZKAKXzftjpu0sHqv9M4MtBWlOHaHfpTtGQfuWGIV TCM4O0oazi5o
liu4nz1har9+q0MG8hpWP3c9GM/NyhJpFmWKRHDm3rnK0PHZ89ZqhXouVOVs FzzLUG4MdwTC
46Z2LfC9YLk5eEm77d5vGRnL/LA2He7Vv5/+Qzm0IXRpmqT/y0iE+9Ct67ae fZw+bm90r86r
Sdq+oIVsX1az/S7dckNjg//fjaqLl9V+D4bn5QInJNT2A/1/JmigmBDUy/pK 2nWJY6XEKPuH
MLd5ayRF89CCo0MarNEutQS5FKIJkf7+BlBLBwhbVh3A2gMAAAcMAABQSwME FAAIAAgAlGh5
OgAAAAAAAAAAAAAAAGUAAABvcmcuaW5xbGUudWkuZ29vZ2xlLndpZGdldHMv c3JjL29yZy9p
bnFsZS91aS9pbnRlcm5hbC9nb29nbGUvanNhcGkvbW90aW9uY2hhcnRraXQv TW90aW9uQ2hh
cnRMQ0EuamF2Yb1WXW/bNhR9D5D/cJEnOUiktE9DgzwYjru6SBfDztqHogho 6VpmSpEaSVv1
hv73XZKSLNvx4g3BhMCmyXvO/eRRkvPXfU5P4BwGqlxrni8sRGkP3l5dvb2k j19gJKVSpWap
peVc6YJZrqQxa2OxQPi1mH2IPUFfCPAEBjQa1CvMYnhYcAOlVrlmBTCZgV0g sDRVRcnkmssc
iA81Z8J4EqaRdjKyWTEu2EwgLGWG2uPIsDCg5v7HMBW8NAjj5UzwFO54ipJ+ rt7EV56pWvB0
0briaAhFsWTcWM1nS5fEhY+INjfOmPXghbXluySpqirG4CdWOk8E5kwkWIrL 1ZureGEL4a3r
+slArLR553fcc0T14BK45JZKAP3xKIRUlIKOpfXWjuxVn+T0pGTpd5YjUFYx l38IjJecFlRh
yUScK5XT1pNhJY8L5YJIF0zb79xen56cnlB8Slt4orrFXMWj++GPFEtn1j12 3E31dGVjweeY
rlMi7s+oCVSTLzzL0d4N+tdHgHyBlSDr3y0XxyBGgb+fsZISOwbxcfpF8yNt 2+CPDScADlsb
sq68jWmSfdkwkG7btQ3d6uMn38eB66PvUhkuTiqYMdA5pIwAf1iUmYG9RsFf DgpQg1eKZ3S9
w3X/zMQSTQRzTjMEAQIhTug5oLsQ212Md7FRYwC9BnkdgNvNBFZ/38CmrPHm PIIOPEkcQY1o
XUYwntyPH/u3t5PhdHoBznmnDJsAAm1GMBP12njCJ1ErKdYgETPMgG44pEtj VQErRqomSQwj
UquClK7XBLI1OG04Aw/7HFBb4QP8DEVPzr3Tc5ggC0paMtJVpKxI3TSTZo7a RaHJvzumeSER
CaBkt22aSG6ZZS80rFuSorO+eb5cbbmnpIYk70KlXsTaRjV5O/djrUrUdu27 H3XpL2Dcn/Q/
PQ6Gvz0MJ50udmxig3aATrPuaifRxt3zhRvVQpuSd29Gr6YUsyW9derXSsji YMncu6gm4X/W
Pp8vn11oVRnoaGNT0UZkoApfN+2Om7Sweq/0zgy0FaU4dod+lO0ZB+5YYhVM Izg7ShrOLmiW
K7ifPWFqv36rQwbyGlY/dz0Yz83KEmkWZYpEcObeucrQ8dnz1mqFei5U5WwX PMtQbgx3BMLj
pnYt8L1guTl4Sbvt3m8ZGcv8sDYd7tW/n/5DObQhdGmapP/LSIT70K3rtp59 nD5ub3SvzqtJ
2r6ghWxfVrP9Lt1yQ2OD/9+NqouX1X4PhuflAick1PYD/X8maKCYENTL+kra dYljpcQo+4cw
t3lrJEXz0IKjQxqs0S61BLkUogmR/v4GUEsHCFtWHcDaAwAABwwAAFBLAwQU AAgACACUaHk6
AAAAAAAAAAAAAAAANgAAAG9yZy5pbnFsZS51aS5nb29nbGUud2lkZ2V0cy93 ZWJfZmlsZXMv
LnN2bi9hbGwtd2Nwcm9wc/NWMDLlKi7LsypPtipKjE9JLLMqSy0qzszP0y0t yuEKUzAz5NIH
yusrggiglL6FhbF+SVFpXrZ+flG6XmZeYU6qXmmmXnp+fjqQVZ6Zkp5aUqxf npoUn5aZk1rM
5ernwpWTn5gSlllcmpiTWZVYAjTcMcBTL6uYy5uQ7RamGLYbkWK7Pi6bQa4C AFBLBwhdZLK8
igAAAPwAAABQSwMEFAAIAAgAlGh5OgAAAAAAAAAAAAAAADIAAABvcmcuaW5x bGUudWkuZ29v
Z2xlLndpZGdldHMvd2ViX2ZpbGVzLy5zdm4vZW50cmllc4XOu04DMRCF4d7i VWzP+LK+dJTp
KBBFGmSv7Y1hWYe9EImnJ4E0REL89dHMh0BIqjOxVpLDuh4953V6HzMbWhvG 3LeUWd/e+PIx
8XXeplfe5oH9TLZ6XbFTTUNeF37K8bnUMS//3SLnBICjIKnQjyC8Fl4hkxqU 6/bfnDSnNrXD
lsnvOplkltbSrFWgoBBojEpSV0LJJmmLsZA7MraQnuqyhbF+hrW26f5hx14W cvGRm/8IXqBH
w6QRgG5PTCwxdCJgdDrGYJIoyvYBHeZUrIo3eCU9dEyARSMvePEn/ho6cSZ+ AVBLBwibsSm4
5AAAAH0BAABQSwMEFAAIAAgAlGh5OgAAAAAAAAAAAAAAAFUAAABvcmcuaW5x bGUudWkuZ29v
Z2xlLndpZGdldHMvd2ViX2ZpbGVzLy5zdm4vdGV4dC1iYXNlL2xvYWRWaXN1 YWxpemF0aW9u
QVBJLmpzLnN2bi1iYXNlS8xJLSrRUM/JT0wJyywuTczJrEosyczPcwzw1Msq 1tPTU9e05krP
z0/PSdUDKdJQL0NWpq6joG4IJKrVCxKTsxPTU4vVraLVc/NBcskZiUUl6rG1 CAOKU0v883yA
pjgn5uQkATVo5JXm5ADlExGuSE1RcAerVkCxSEcBaoGCL9hwZ7DhmtYAUEsH CH6sQSqHAAAA
wAAAAFBLAwQUAAgACACUaHk6AAAAAAAAAAAAAAAAPQAAAG9yZy5pbnFsZS51 aS5nb29nbGUu
d2lkZ2V0cy93ZWJfZmlsZXMvbG9hZFZpc3VhbGl6YXRpb25BUEkuanNLzEkt KtFQz8lPTAnL
LC5NzMmsSizJzM9zDPDUyyrW09NT17TmSs/PT89J1QMp0lAvQ1amrqOgbggk qtULEpOzE9NT
i9WtotVz80FyyRmJRSXqsbUIA4pTS/zzfICmOCfm5CQBNWjklebkAOUTEa5I TVFwB6tWQLFI
RwFqgYIv2HBnsOGa1gBQSwcIfqxBKocAAADAAAAAUEsBAhQAFAAIAAgAk2h5 OtUcnNKlAAAA
MwEAACYAAAAAAAAAAAAAAAAAAAAAAG9yZy5pbnFsZS51aS5nb29nbGUud2lk Z2V0cy8uY2xh
c3NwYXRoUEsBAhQAFAAIAAgAk2h5OjBPC7PvAAAAsAIAACQAAAAAAAAAAAAA AAAA+QAAAG9y
Zy5pbnFsZS51aS5nb29nbGUud2lkZ2V0cy8ucHJvamVjdFBLAQIUABQACAAI AJNoeTpNjq/9
rAAAALACAAAsAAAAAAAAAAAAAAAAADoCAABvcmcuaW5xbGUudWkuZ29vZ2xl LndpZGdldHMv
LnN2bi9hbGwtd2Nwcm9wc1BLAQIUABQACAAIAJNoeTq+QTq0hQEAAPwDAAAo AAAAAAAAAAAA
AAAAAEADAABvcmcuaW5xbGUudWkuZ29vZ2xlLndpZGdldHMvLnN2bi9lbnRy aWVzUEsBAhQA
FAAIAAgAk2h5OtUcnNKlAAAAMwEAAD4AAAAAAAAAAAAAAAAAGwUAAG9yZy5p bnFsZS51aS5n
b29nbGUud2lkZ2V0cy8uc3ZuL3RleHQtYmFzZS8uY2xhc3NwYXRoLnN2bi1i YXNlUEsBAhQA
FAAIAAgAk2h5OqeZ4+ZZAAAAoAAAAEQAAAAAAAAAAAAAAAAALAYAAG9yZy5p bnFsZS51aS5n
b29nbGUud2lkZ2V0cy8uc3ZuL3RleHQtYmFzZS9idWlsZC5wcm9wZXJ0aWVz LnN2bi1iYXNl
UEsBAhQAFAAIAAgAk2h5OgAAAAACAAAAAAAAAEUAAAAAAAAAAAAAAAAA9wYA AG9yZy5pbnFs
ZS51aS5nb29nbGUud2lkZ2V0cy8uc3ZuL3RleHQtYmFzZS9wbHVnaW4ucHJv cGVydGllcy5z
dm4tYmFzZVBLAQIUABQACAAIAJNoeTq+MLfX+AAAAEICAAA+AAAAAAAAAAAA AAAAAGwHAABv
cmcuaW5xbGUudWkuZ29vZ2xlLndpZGdldHMvLnN2bi90ZXh0LWJhc2UvcGx1 Z2lu
Re: custom widget problems [message #127249 is a reply to message #126237] Mon, 06 April 2009 02:33 Go to previous messageGo to next message
David Donohue is currently offline David DonohueFriend
Messages: 104
Registered: July 2009
Senior Member
Ivan,
Sounds easy enough - make a standalone qooxdoo app then test Google
Visualization API code in it. I would think i could just drop my code
into some skeleton of code and run it in a browser. However, after
reading qooxdoo for some hours, it seems there is no easy to do this. So
my stupid question is: is there some simple way to do this that you can
recommend?
Or do i have to download the large SDK, fire up Cygwin, etc.?
Thanks,
David
Re: custom widget problems [message #127262 is a reply to message #127249] Mon, 06 April 2009 06:43 Go to previous messageGo to next message
Ivan Furnadjiev is currently offline Ivan FurnadjievFriend
Messages: 2426
Registered: July 2009
Location: Sofia, Bulgaria
Senior Member
Hi David,

what you need is a quickstart application. Get it from here [1]. Just
put your code in the Application.js and launch it with index.
[1] http://qooxdoo.org/download_0_7

Best,
Ivan

David Donohue wrote:
> Ivan,
> Sounds easy enough - make a standalone qooxdoo app then test Google
> Visualization API code in it. I would think i could just drop my code
> into some skeleton of code and run it in a browser. However, after
> reading qooxdoo for some hours, it seems there is no easy to do this.
> So my stupid question is: is there some simple way to do this that you
> can recommend?
> Or do i have to download the large SDK, fire up Cygwin, etc.?
> Thanks,
> David
>
Re: custom widget problems [message #127416 is a reply to message #127262] Tue, 07 April 2009 01:31 Go to previous messageGo to next message
David Donohue is currently offline David DonohueFriend
Messages: 104
Registered: July 2009
Senior Member
Ivan,
Thanks that was exactly what I was looking for. I did reproduce the same
error "currPackage is undefined" running my Google Visualization code in
the standalong Qooxdoo app. Will report this to the qooxdoo-devel news
group.
David
Re: custom widget problems [message #127538 is a reply to message #127262] Tue, 07 April 2009 17:02 Go to previous messageGo to next message
David Donohue is currently offline David DonohueFriend
Messages: 104
Registered: July 2009
Senior Member
Ivan,
The folks on the qooxdoo mailing list were able to help me get past that
error. Now I get a new error, that relates to this line:

this._chart = new
google.visualization.MotionChart(document.getElementById(thi s._id));

The problem is that this returns null
document.getElementById(this._id)

this._id = 'w104' when i printed it out, which looks appropriate to me.
So this looks more like a problem with my custom widget code. Thanks
again for your help!

My MotionChart.js at bottom

David


qx.Class.define( "org.inqle.ui.google.jsapi.MotionChart", {
extend: qx.ui.layout.CanvasLayout,

construct: function( id ) {
this.base( arguments );
this.setHtmlAttribute( "id", id );
this._id = id;
this._chart = null;

this.addEventListener( "changeHeight", this._doResize, this );
this.addEventListener( "changeWidth", this._doResize, this );
google.visualization.MotionChart(document.getElementById(id) );
this.load();
},


members : {
_doActivate : function() {
var shell = null;
var parent = this.getParent();
while( shell == null && parent != null ) {
if( parent.classname == "org.eclipse.swt.widgets.Shell" ) {
shell = parent;
}
parent = parent.getParent();
}
if( shell != null ) {
shell.setActiveChild( this );
}
},

load : function() {
alert('load() called: ' + document.getElementById(this._id));
if( this._chart == null ) {
this._chart = new
google.visualization.MotionChart(document.getElementById(thi s._id));
}

var data = new google.visualization.DataTable();
data.addRows(6);
data.addColumn('string', 'Fruit');
data.addColumn('date', 'Date');
data.addColumn('number', 'Sales');
data.addColumn('number', 'Expenses');
data.addColumn('string', 'Location');
data.setValue(0, 0, 'Apples');
data.setValue(0, 1, new Date (1988,0,1));
data.setValue(0, 2, 1000);
data.setValue(0, 3, 300);
data.setValue(0, 4, 'East');
data.setValue(1, 0, 'Oranges');
data.setValue(1, 1, new Date (1988,0,1));
data.setValue(1, 2, 950);
data.setValue(1, 3, 200);
data.setValue(1, 4, 'West');
data.setValue(2, 0, 'Bananas');
data.setValue(2, 1, new Date (1988,0,1));
data.setValue(2, 2, 300);
data.setValue(2, 3, 250);
data.setValue(2, 4, 'West');
data.setValue(3, 0, 'Apples');
data.setValue(3, 1, new Date(1988,1,1));
data.setValue(3, 2, 1200);
data.setValue(3, 3, 400);
data.setValue(3, 4, "East");
data.setValue(4, 0, 'Oranges');
data.setValue(4, 1, new Date(1988,1,1));
data.setValue(4, 2, 900);
data.setValue(4, 3, 150);
data.setValue(4, 4, "West");
data.setValue(5, 0, 'Bananas');
data.setValue(5, 1, new Date(1988,1,1));
data.setValue(5, 2, 788);
data.setValue(5, 3, 617);
data.setValue(5, 4, "West");

var chart = this._chart;
this.chart.draw(data, {width: 600, height:300});
},

onLoadCallback : function() {
alert('onLoadCallback() called');
drawMotionChart();
},

_doResize : function() {
qx.ui.core.Widget.flushGlobalQueues();
if( this._chart != null ) {
this._chart.checkResize();
}
}
}

} );
Re: custom widget problems [message #127550 is a reply to message #127538] Tue, 07 April 2009 17:15 Go to previous messageGo to next message
Ivan Furnadjiev is currently offline Ivan FurnadjievFriend
Messages: 2426
Registered: July 2009
Location: Sofia, Bulgaria
Senior Member
Hi David,

if you want to get the HTML DOM element of your custom widget just use
this.getElement() instead of document.getElementById(this._id). Hope
this will help.

Best,
Ivan

David Donohue wrote:
> Ivan,
> The folks on the qooxdoo mailing list were able to help me get past
> that error. Now I get a new error, that relates to this line:
>
> this._chart = new
> google.visualization.MotionChart(document.getElementById(thi s._id));
>
> The problem is that this returns null
> document.getElementById(this._id)
>
> this._id = 'w104' when i printed it out, which looks appropriate to me.
> So this looks more like a problem with my custom widget code. Thanks
> again for your help!
>
> My MotionChart.js at bottom
>
> David
>
>
> qx.Class.define( "org.inqle.ui.google.jsapi.MotionChart", {
> extend: qx.ui.layout.CanvasLayout,
> construct: function( id ) {
> this.base( arguments );
> this.setHtmlAttribute( "id", id );
> this._id = id;
> this._chart = null;
> this.addEventListener( "changeHeight", this._doResize,
> this );
> this.addEventListener( "changeWidth", this._doResize, this );
> google.visualization.MotionChart(document.getElementById(id) );
> this.load();
> },
> members : {
> _doActivate : function() {
> var shell = null;
> var parent = this.getParent();
> while( shell == null && parent != null ) {
> if( parent.classname == "org.eclipse.swt.widgets.Shell"
> ) {
> shell = parent;
> }
> parent = parent.getParent();
> }
> if( shell != null ) {
> shell.setActiveChild( this );
> }
> },
> load : function() {
> alert('load() called: ' + document.getElementById(this._id));
> if( this._chart == null ) {
> this._chart = new
> google.visualization.MotionChart(document.getElementById(thi s._id));
> }
> var data = new
> google.visualization.DataTable();
> data.addRows(6);
> data.addColumn('string', 'Fruit');
> data.addColumn('date', 'Date');
> data.addColumn('number', 'Sales');
> data.addColumn('number', 'Expenses');
> data.addColumn('string', 'Location');
> data.setValue(0, 0, 'Apples');
> data.setValue(0, 1, new Date (1988,0,1));
> data.setValue(0, 2, 1000);
> data.setValue(0, 3, 300);
> data.setValue(0, 4, 'East');
> data.setValue(1, 0, 'Oranges');
> data.setValue(1, 1, new Date (1988,0,1));
> data.setValue(1, 2, 950);
> data.setValue(1, 3, 200);
> data.setValue(1, 4, 'West');
> data.setValue(2, 0, 'Bananas');
> data.setValue(2, 1, new Date (1988,0,1));
> data.setValue(2, 2, 300);
> data.setValue(2, 3, 250);
> data.setValue(2, 4, 'West');
> data.setValue(3, 0, 'Apples');
> data.setValue(3, 1, new Date(1988,1,1));
> data.setValue(3, 2, 1200);
> data.setValue(3, 3, 400);
> data.setValue(3, 4, "East");
> data.setValue(4, 0, 'Oranges');
> data.setValue(4, 1, new Date(1988,1,1));
> data.setValue(4, 2, 900);
> data.setValue(4, 3, 150);
> data.setValue(4, 4, "West");
> data.setValue(5, 0, 'Bananas');
> data.setValue(5, 1, new Date(1988,1,1));
> data.setValue(5, 2, 788);
> data.setValue(5, 3, 617);
> data.setValue(5, 4, "West");
> var chart = this._chart;
> this.chart.draw(data, {width: 600, height:300});
> },
> onLoadCallback : function() {
> alert('onLoadCallback() called');
> drawMotionChart();
> },
> _doResize : function() {
> qx.ui.core.Widget.flushGlobalQueues();
> if( this._chart != null ) {
> this._chart.checkResize();
> }
> }
> }
> } );
>
Re: custom widget problems [message #127562 is a reply to message #127550] Tue, 07 April 2009 19:21 Go to previous messageGo to next message
David Donohue is currently offline David DonohueFriend
Messages: 104
Registered: July 2009
Senior Member
Ivan,
Thanks, I tried changing to this.getElement() but this returns null as
well.

Looking at the custom GMap widget, documented here
http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse. rap.help/help/html/advanced/custom-widget.html

I see it uses similar approach to what i was using
load : function() {
...
qx.ui.core.Widget.flushGlobalQueues();
if( this._map == null ) {
this._map = new GMap2( document.getElementById( this._id ) );

So why is document.getElementById( this._id ) returning null for me but
did not for the example GMap custom widget?
Thanks again
David Donohue
Re: custom widget problems [message #127575 is a reply to message #127562] Tue, 07 April 2009 19:49 Go to previous messageGo to next message
Ivan Furnadjiev is currently offline Ivan FurnadjievFriend
Messages: 2426
Registered: July 2009
Location: Sofia, Bulgaria
Senior Member
This is a multi-part message in MIME format.
--------------020201030802080309020301
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

David,

the problem with your code is that you try to get the element ( call
load() ) in the custom widget construct method. At this point the HTML
DOM element is null. In GMap demo the load method is called when
applying the address and not in the construct. Look at the proposed
MotionChart.js by Chris. The creation of
google.visualization.MotionChart object is done in the "appear" event.
This should work.

Best,
Ivan

David Donohue wrote:
> Ivan,
> Thanks, I tried changing to this.getElement() but this returns null as
> well.
>
> Looking at the custom GMap widget, documented here
> http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse. rap.help/help/html/advanced/custom-widget.html
>
>
> I see it uses similar approach to what i was using
> load : function() {
> ...
> qx.ui.core.Widget.flushGlobalQueues();
> if( this._map == null ) {
> this._map = new GMap2( document.getElementById( this._id ) );
>
> So why is document.getElementById( this._id ) returning null for me
> but did not for the example GMap custom widget?
> Thanks again
> David Donohue
>

--------------020201030802080309020301
Content-Type: application/x-javascript;
name="MotionChart.js"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="MotionChart.js"

cXguQ2xhc3MuZGVmaW5lKCAiY3VzdG9tLk1vdGlvbkNoYXJ0Iiwgew0KICBl eHRlbmQ6IHF4
LnVpLmJhc2ljLlRlcm1pbmF0b3IsDQoNCiAgY29uc3RydWN0OiBmdW5jdGlv bigpIHsNCiAg
ICB0aGlzLmJhc2UoYXJndW1lbnRzKTsNCg0KICAgIHRoaXMuYWRkRXZlbnRM aXN0ZW5lcigi
YXBwZWFyIiwgdGhpcy5fX2RyYXdNb3Rpb25DaGFydCwgdGhpcyk7DQogIH0s DQoNCiAgbWVt
YmVycyA6IHsNCiAgICBfX2NoYXJ0IDogbnVsbCwNCiAgICANCiAgICBfX2Ry YXdNb3Rpb25D
aGFydCA6IGZ1bmN0aW9uKCkgew0KICAgICAgaWYgKHRoaXMuX19jaGFydCA9 PT0gbnVsbCkg
ew0KICAgICAgICB0aGlzLl9fY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6 YXRpb24uTW90
aW9uQ2hhcnQodGhpcy5nZXRFbGVtZW50KCkpOw0KICAgICAgfQ0KICAgICAg DQogICAgICB2
YXIgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUo KTsNCiAgICAg
IGRhdGEuYWRkUm93cyg2KTsNCiAgICAgIGRhdGEuYWRkQ29sdW1uKCdzdHJp bmcnLCAnRnJ1
aXQnKTsNCiAgICAgIGRhdGEuYWRkQ29sdW1uKCdkYXRlJywgJ0RhdGUnKTsN CiAgICAgIGRh
dGEuYWRkQ29sdW1uKCdudW1iZXInLCAnU2FsZXMnKTsNCiAgICAgIGRhdGEu YWRkQ29sdW1u
KCdudW1iZXInLCAnRXhwZW5zZXMnKTsNCiAgICAgIGRhdGEuYWRkQ29sdW1u KCdzdHJpbmcn
LCAnTG9jYXRpb24nKTsNCiAgICAgIGRhdGEuc2V0VmFsdWUoMCwgMCwgJ0Fw cGxlcycpOw0K
ICAgICAgZGF0YS5zZXRWYWx1ZSgwLCAxLCBuZXcgRGF0ZSAoMTk4OCwwLDEp KTsNCiAgICAg
IGRhdGEuc2V0VmFsdWUoMCwgMiwgMTAwMCk7DQogICAgICBkYXRhLnNldFZh bHVlKDAsIDMs
IDMwMCk7DQogICAgICBkYXRhLnNldFZhbHVlKDAsIDQsICdFYXN0Jyk7DQog ICAgICBkYXRh
LnNldFZhbHVlKDEsIDAsICdPcmFuZ2VzJyk7DQogICAgICBkYXRhLnNldFZh bHVlKDEsIDEs
IG5ldyBEYXRlICgxOTg4LDAsMSkpOw0KICAgICAgZGF0YS5zZXRWYWx1ZSgx LCAyLCA5NTAp
Ow0KICAgICAgZGF0YS5zZXRWYWx1ZSgxLCAzLCAyMDApOw0KICAgICAgZGF0 YS5zZXRWYWx1
ZSgxLCA0LCAnV2VzdCcpOw0KICAgICAgZGF0YS5zZXRWYWx1ZSgyLCAwLCAn QmFuYW5hcycp
Ow0KICAgICAgZGF0YS5zZXRWYWx1ZSgyLCAxLCBuZXcgRGF0ZSAoMTk4OCww LDEpKTsNCiAg
ICAgIGRhdGEuc2V0VmFsdWUoMiwgMiwgMzAwKTsNCiAgICAgIGRhdGEuc2V0 VmFsdWUoMiwg
MywgMjUwKTsNCiAgICAgIGRhdGEuc2V0VmFsdWUoMiwgNCwgJ1dlc3QnKTsN CiAgICAgIGRh
dGEuc2V0VmFsdWUoMywgMCwgJ0FwcGxlcycpOw0KICAgICAgZGF0YS5zZXRW YWx1ZSgzLCAx
LCBuZXcgRGF0ZSgxOTg4LDEsMSkpOw0KICAgICAgZGF0YS5zZXRWYWx1ZSgz LCAyLCAxMjAw
KTsNCiAgICAgIGRhdGEuc2V0VmFsdWUoMywgMywgNDAwKTsNCiAgICAgIGRh dGEuc2V0VmFs
dWUoMywgNCwgIkVhc3QiKTsNCiAgICAgIGRhdGEuc2V0VmFsdWUoNCwgMCwg J09yYW5nZXMn
KTsNCiAgICAgIGRhdGEuc2V0VmFsdWUoNCwgMSwgbmV3IERhdGUoMTk4OCwx LDEpKTsNCiAg
ICAgIGRhdGEuc2V0VmFsdWUoNCwgMiwgOTAwKTsNCiAgICAgIGRhdGEuc2V0 VmFsdWUoNCwg
MywgMTUwKTsNCiAgICAgIGRhdGEuc2V0VmFsdWUoNCwgNCwgIldlc3QiKTsN CiAgICAgIGRh
dGEuc2V0VmFsdWUoNSwgMCwgJ0JhbmFuYXMnKTsNCiAgICAgIGRhdGEuc2V0 VmFsdWUoNSwg
MSwgbmV3IERhdGUoMTk4OCwxLDEpKTsNCiAgICAgIGRhdGEuc2V0VmFsdWUo NSwgMiwgNzg4
KTsNCiAgICAgIGRhdGEuc2V0VmFsdWUoNSwgMywgNjE3KTsNCiAgICAgIGRh dGEuc2V0VmFs
dWUoNSwgNCwgIldlc3QiKTsNCiAgICANCiAgICAgIHRoaXMuX19jaGFydC5k cmF3KGRhdGEs
IHt3aWR0aDogdGhpcy5nZXRXaWR0aCgpLCBoZWlnaHQ6IHRoaXMuZ2V0SGVp Z2h0KCl9KTsN
CiAgICB9DQogIH0NCn0pOw==
--------------020201030802080309020301--
Re: custom widget problems [message #127617 is a reply to message #127550] Wed, 08 April 2009 08:22 Go to previous messageGo to next message
Stefan Hansel is currently offline Stefan HanselFriend
Messages: 103
Registered: July 2009
Senior Member
Beware of Browser-Memory-Leaks when referencing HTML-DOM nodes in
javascript variables.

Each reference should be cleared after usage, otherwise
Javascript-Garbage-Collection doesn't work that well (mainly in IE).
Re: custom widget problems [message #127641 is a reply to message #127575] Thu, 09 April 2009 03:03 Go to previous messageGo to next message
David Donohue is currently offline David DonohueFriend
Messages: 104
Registered: July 2009
Senior Member
Ivan,
This was exactly my problem. I followed your approach of loading the
Motion Chart upon load(), and a Motion Chart loads and works! I am close.
Now I need to pass a tabular data structure (to be plotted by the Motion
Chart). In the GMap example, only string is passed to the JS widget. How
could I pass a tabular structure from Java to JS? Should I convert the
data table to JSON and pass this? Any facilities for doing this from the
RAP & Qooxdoo libraries?

I plan to publish as many of these Google visualization widgets as RAP
widgets. I am excited that we are getting close!

Thanks,
David Donohue
Re: custom widget problems [message #127653 is a reply to message #127641] Thu, 09 April 2009 06:33 Go to previous message
Ivan Furnadjiev is currently offline Ivan FurnadjievFriend
Messages: 2426
Registered: July 2009
Location: Sofia, Bulgaria
Senior Member
Hi David,

Nice to here that the problems are gone :-) Yes... JSON is the right
approach.

Best,
Ivan

David Donohue wrote:
> Ivan,
> This was exactly my problem. I followed your approach of loading the
> Motion Chart upon load(), and a Motion Chart loads and works! I am
> close. Now I need to pass a tabular data structure (to be plotted by
> the Motion Chart). In the GMap example, only string is passed to the
> JS widget. How could I pass a tabular structure from Java to JS?
> Should I convert the data table to JSON and pass this? Any facilities
> for doing this from the RAP & Qooxdoo libraries?
>
> I plan to publish as many of these Google visualization widgets as RAP
> widgets. I am excited that we are getting close!
>
> Thanks,
> David Donohue
>
Previous Topic:Missing Databinding bundles using CVS Head
Next Topic:RAP support for other Eclipse bundles
Goto Forum:
  


Current Time: Fri Apr 19 10:55:16 GMT 2024

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

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

Back to the top