Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » M2T (model-to-text transformation) » Problem checking constraints on references with types from ecore meta model
Problem checking constraints on references with types from ecore meta model [message #63794] Mon, 06 July 2009 14:55 Go to next message
sth2000 is currently offline sth2000Friend
Messages: 10
Registered: July 2009
Junior Member
This is a multi-part message in MIME format.

------=_NextPart_000_00AA_01C9FE5A.95C64300
Content-Type: text/plain;
format=flowed;
charset="iso-8859-1";
reply-type=original
Content-Transfer-Encoding: 7bit

Hello,

I have a problem checking constraints using Check on elements, that have a
reference whose type is EOperation (or any other type from the ecore meta
model). The check validator throws "EvaluationException : Couldn't find
property 'attr' for type checkTest::MyClass". In the attached sources, there
is a small meta model, that contains only "MyClass". This class has a
reference "attr" whose type is "EOperation". Additionally, there is a check
file with a single constraint that checks if that reference is not null.
Using the check extension point, this check file is registered for my meta
model in the EMF validation framework. When I start a new Eclipse instance,
create a model of my meta model and validate it, the above exception is
thrown. The full stack trace is:

EvaluationException : Couldn't find property 'attr' for type
checkTest::MyClass
model::NewCheckFile.chk[87,9] on line 6 'this.attr'

at
org.eclipse.internal.xtend.expression.ast.FeatureCall.evalua teInternal(FeatureCall.java:142)
at
org.eclipse.internal.xtend.expression.ast.Expression.evaluat e(Expression.java:48)
at
org.eclipse.internal.xtend.expression.ast.OperationCall.eval uateInternal(OperationCall.java:60)
at
org.eclipse.internal.xtend.expression.ast.Expression.evaluat e(Expression.java:48)
at org.eclipse.internal.xtend.xtend.ast.Check.validate(Check.ja va:160)
at
org.eclipse.internal.xtend.xtend.ast.ExtensionFile.check(Ext ensionFile.java:205)
at
org.eclipse.xtend.typesystem.emf.check.CheckEValidatorAdapte r.runOawCheck(CheckEValidatorAdapter.java:172)
at
org.eclipse.xtend.typesystem.emf.check.CheckEValidatorAdapte r.runExtXptCheck(CheckEValidatorAdapter.java:159)
at
org.eclipse.xtend.typesystem.emf.check.CheckEValidatorAdapte r.validate(CheckEValidatorAdapter.java:89)
at
org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostic ian.java:164)
at
org.eclipse.emf.edit.ui.action.ValidateAction$2.validate(Val idateAction.java:287)
at
org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostic ian.java:143)
at
org.eclipse.emf.edit.ui.action.ValidateAction.validate(Valid ateAction.java:258)
at
org.eclipse.emf.edit.ui.action.ValidateAction$1.run(Validate Action.java:177)
at
org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation.ex ecute(WorkspaceModifyDelegatingOperation.java:69)
at
org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(Worksp aceModifyOperation.java:106)
at org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1800)
at
org.eclipse.ui.actions.WorkspaceModifyOperation.run(Workspac eModifyOperation.java:118)
at
org.eclipse.jface.operation.ModalContext$ModalContextThread. run(ModalContext.java:121)

Unfortunately, there is no source code attached to
org.eclipse.internal.xtend.expression.ast.FeatureCall so I cannot trace the
source of the problem. Is this a bug of the Check framework or am I missing
some important detail?


Have a nice day

Stephan

P.S.: Of course, other checks that do not involve such references are
working fine.

------=_NextPart_000_00AA_01C9FE5A.95C64300
Content-Type: application/x-zip-compressed;
name="checkTest.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="checkTest.zip"

UEsDBBQACAAIAKmA5joAAAAAAAAAAAAAAAAUAAAAY2hlY2tUZXN0Ly5jbGFz c3BhdGidkE9PAjEQ
xc+a+B02vTMrF+NhV2LMmkAiGFi9ktJOlpE6LdOWwLcH/xCNCRy8zZv85r2X qQbbd1dsUCJ5rlUf
rlWBbLwl7mr10j72btXg7uqyMk7HGHRaHsTFj0JOsitWxLZWUYwqPpZfY3ma NJ6PpJcO0DgKEeHN
JnA6s1ke0mE0beYPk3F7Pxw30/IvR5xQWDuwuMgdZPq+RIFZ0my12Nendhew HOmNnjW9Ptz8o1Kw
CMYLguA6k6B9drkjjuesfE4hp6PbgvgTrsrfL9wDUEsHCPSlsdLQAAAAeAEA AFBLAwQUAAgACACp
gOY6AAAAAAAAAAAAAAAAEgAAAGNoZWNrVGVzdC8ucHJvamVjdL1TTU8DIRA9 a+J/aPYu6M0D3SZq
vGmatCZeEaZb6vKRAZr+fIFlNZvapAfT27w383gzA7DFQfezPaBX1sybe3LX zMAIK5Xp5s37+uX2
oVm0N9fMod2BCM/gBSoXUnVir5jhGlqxBfG1Bh8YLTgnhNUaTGgZHaPM1lN8 AXSCPqPq5cqByKjC
pyTlRhamelnsCIheOQ9kJwMRFlPA97wIAH9bSAqOXczevmI6JRg9cjnL10kg r9yoTRr58bK2q7Rr
zS9oeghgJPFbjiBJVAP+F//KjFeerENEqNUDOH3bQz43UOpOafLKln3slHk7 T/DnuB/L1PLxAWOc
W/55zNMP8g1QSwcI/YPY5AABAABfAwAAUEsDBBQACAAIAKmA5joAAAAAAAAA AAAAAAAeAAAAY2hl
Y2tUZXN0L01FVEEtSU5GL01BTklGRVNULk1GXZE9T8MwEIb3SPkPXtiIRRkY XHWgKAuiKKKI3XWu
6an+CPYlivvryUeVpmw+v6/f5+68kxaPECj7AR/QWcFW/ClNto0tNWS7qzqL z7P0KQ0I9lDrpkI7
FLOyj+bgNKrJoU6gzt99xjqgrTRQH7Mh39z8S/KC/aZlCIWkk2B84bWl8wPX uxZL8HfkD6ekxouk
MW5qbRa/4LdBD2XegWoGR25b9M4asCTYu2zlPs9W/CVN8q52nrJCqrOsliM8 psmt4GhqfX/Tx+o0
uYKyiSuY8xUHpbEOwJXzwH1jCQ0Mb5camGN/7g3rFgMeUCNFsfEAYzv/3R31 q+AUawgxEJjh+Tzr
qyJsxzUUw09EwbS8xDT5A1BLBwgNmNSgEgEAAO4BAABQSwMEFAAIAAgAqYDm OgAAAAAAAAAAAAAA
AC4AAABjaGVja1Rlc3QvYmluL2NoZWNrVGVzdC9DaGVja1Rlc3RGYWN0b3J5 LmNsYXNzfVFdSwJR
ED1XzdVN0zT7MOmlF0VoodciiEVBMAsU36+3aVtdXdldA39W9BI99AP6UdFc 2YoKuzB3Zs5w5sy9
8/b+8grgFDUDCYGquic1GVAYWfZn1JYq8oOlgZRAcSwfpOXJmWNdj8akIgNp gSM/cCxSnjsPyaLp
Hcd+QFYrZgpkqdPrDy57dkug1l2vcSaQOec+Mze6EEjWG0OBlO3fkok8Cga2 BI6/2e507v1p0WEw
hyK2man78HT1xn+SWQiUczCQESh03Rn1FtMRBQM58kig1PWV9IYycHUeg3kV kIzoaml7MgwFKj8U
YpjfUnYo+tK7kWoiHVo7T1xnmtn3F4Gitqu1Kr8HPtEr4E/n/2HbYDvQw/MS k3xnYTKyyVmTvT7G
M3JPKD1ymMAO3yZ7oIo0yqisUL3ZXeyt/D63A1Orq8rhB1BLBwj+duVcRQEA ACACAABQSwMEFAAI
AAgAqYDmOgAAAAAAAAAAAAAAADcAAABjaGVja1Rlc3QvYmluL2NoZWNrVGVz dC9DaGVja1Rlc3RQ
YWNrYWdlJExpdGVyYWxzLmNsYXNzfVLBbtNAEH3ThiROTBpa0pJQ0pLm0F6w xLUVKLKCFMkJqLEi
cYo2ZhrcujZau5V675UjHwI90UM/gI9CzFpEkZDCSrvzZmfm7bzd/fX7/gHA a3RLWCMcBJ85uPA5
zRx3gT6o4ELNueuFGWsVpSUUCPVzda2cSMVz5/3snIOMUB5+nLpebzwmtL1E zx0OovBLyg5fnglO
NDt9N1JpekyoLXKn057vnxI6qypO+Yw1xwFLVflE4nGYvSGsHx5NCAU3+cQW HmOjhBqhtbp7G3U8
IVg8GI393sjtE3a91enHVSHdsvEUDUJlztnwJm+dsH949H9xFgg7Nh6haDia Nlp4TthYckx7WaYJ
3dVES82G7IWNEspC4YUxj64uZ6x9NYuYsOklgYomSofG/7tZGSdXOuB3oXEa /wp7Zd6NYA/imHXe
Douo8uJtiyQHrsuHWEPTSBDUNKeLlSxYqIitivdWrBk7P2D/xCbhDts5fGbg 7vecoi1rLaf7KkXf
sI1b7OURM/fz9SU6Yg0tyXUdFK0/UEsHCOd90jePAQAAkgIAAFBLAwQUAAgA CACpgOY6AAAAAAAA
AAAAAAAALgAAAGNoZWNrVGVzdC9iaW4vY2hlY2tUZXN0L0NoZWNrVGVzdFBh Y2thZ2UuY2xhc3N9
U9tu00AQPdumcWLSpvQGhdIWGiChELc8UoRkWYlkKUmr2IngydqYberWsSN7 g9TPQrwgHvgAPgox
tnIpQcHSembOztk9M7v76/ePnwDe4lTBEsMj90q4N7aIpWZMvAvu3vC+UJBh WL/mX7jm86Cvnfeu
hSsVZBn2w6ivCdf3hrHQxOCS/DASWm3MZFgRLb1ZY9hozPiWjLygf8awaoRB LHkgu9wfiRzuMeSn
MhgU0bKcTtvMYY1h60rK4TtNm8k8rZ4wqEnORbtWNz8SWZgty9ZbBm2411hc EG2da35yjIZuWQzM
XKY+gGFtgjmObttthp0pUK/pdqddc4zzTstO0hkt8Z7qDjz5gWG5XOkyZIzw s1Cxh30FTxiOZgK8
wdD/R4VJYAEHOCRmsg51s1z5n+o8aXxWwDruMxQbXiBao0FPRDbv+SLpcOhy v8sjL4nHoNoXsnlr
+DyOGQ5p+QXnlWZQW4qzfEeXMmIoLSa1xaWIROAm/dwk4lRwnbsyjG4XFjSe J5pqhaPIFXUvEbs9
X3E1uTMMBTMIRJSKErEC7a/WznNKDU+KiPtUb27i0kWlM6KxAgW7NHLk5+kU l6BSXLgTr1JcnJun
hpO/iw1sTvEtirfn4p078QNkaJWHhNLTIuSYbPIp3/H4G55+TZOO6K+SBc6Q pXtTStHktT3Hi9S+
RDm1FbxK547T/2u8SZkMVRon2fwfUEsHCDAc090XAgAAzAMAAFBLAwQUAAgA CACpgOY6AAAAAAAA
AAAAAAAAJQAAAGNoZWNrVGVzdC9iaW4vY2hlY2tUZXN0L015Q2xhc3MuY2xh c3OFj70OAUEUhc/1
NywSHkBHQmMSrUqEiiiIfkyutWtZmRkSr6bwAB5KzAalKG5yc/Kd5DuP5+0O YIC6QI7Q1DvW+xVb
J+fXcaKsFSgQGrG6KJmoYygXm5i1EygRWqkJJeskOlmWfNj6PzUsJ2+EIEJ2 I+cMod3tzX7BJzbK
Relx6Av2W+h0//O9NSFYpmejeRolTKh9lPuZrfcj5P0V/byc3yBQRralgsAn hGqWo/YCUEsHCEKT
wgGvAAAAAQEAAFBLAwQUAAgACACpgOY6AAAAAAAAAAAAAAAANwAAAGNoZWNr VGVzdC9iaW4vY2hl
Y2tUZXN0L2ltcGwvQ2hlY2tUZXN0RmFjdG9yeUltcGwuY2xhc3ONVVlT21YU /q4ByxaCtGYJEEpd
IMWYBmehW5yEAjGtiyEUHLd0S4S4yBdkySPLmfLYh/6ZPlEeYBJm2jz1oT+q 03NlGTvGpvGMrLt8
5zv70T//vvoTwF04CkIMU0aRG4d5XvFSolS2Uiv17apueI57lKVDBd0MM45r prhhiXKFp3hpn9aO
y2tCmTfAYYaxBmsrIUO3sIXHMJGYzXWGpQm34uzxKHrRp0DraEBmUzcOdZNP b3FTVDz3SEM/rjFE
shvb+aWNlQzDbO4tRdMRvMswWPS88v1UqmHcnfnbvWTHgIZBDDH0mtzLXLiz kMgd6C/0lKXbZmrb
c4VtpjtqrHsXxXWMKhhhSLRHlq2qKexURm42/bX0a4wh2YH6skBaJSXjGt7D BEOX5ZgMQ822Ptk9
4IaXni2oYIhr+ACTDOEHMjuPSCAxW1AwzTDQkMj8YvCyJxyb4VpO2HyjWtrl bl7ftThDLOcYulXQ
XSH3weGAV+SXK2D86sRHeUPPUK6NesL0bXuUvHW97CtS0YU4VYxXFBWGm7m3 KGriCBsu1z2ycjHR
KV8rll6pdE5nEMJeaqcFBffIs6t4NHyMTyh0VD7+XuwL7mYf+7HOyiR8puFz 3CfnaoatH/kwmbbm
VgmO0woeMEw2wpO1LG7q1pJrVkvc9i6ipYDSeb21RperwtrjbgRfUEHnizxu SNL4jIqHWJbFsNJS
LvXSLkhvMxpW8SWDQr5s6CWK4SDZeAksybIavsYaRVsvl7m9x3CrbcN0sI9a cp3hxkxcVOK248X1
+AvdEns1a/0ASh1PNGxKcyKeU5NWkcYy6eRBBCeuTrCCp28MLb9qgjjLYlGR l/WllOoZGW8tsSYw
VdaATHEdEEyZjhMvuE/LCvhRw0/4ORgxF4KTif8bYeTB8/Zj94JEJcrG5jEv u9ygIqOEjG5VbU+U
eEFUBDXTkk2B1mXlkKPDTYlpyND8eoZ9DSaKsl0bo7ZtZ9dtJLXbTtU1+KqQ s2G0XVvOS3UMWta2
ueuHlFcUlCh4VweAcl+f4lS71FL09NB3LowoFERoF6XdrwjRCpg+gRp75yVi IbxGz1ryb/Qlj9dO
MJw8xY1zsJ0zvH/sIwdo5E8R201ajxEbMElzeAoxTNPNDIaQwDiS+JBuhom9 nzAzdAa6UTBLN8Ac
PfSxzSuYUoiU5mxgzj16SyU9yTN89ActQr4eld7AArppXkherQbCLczTmyGF 2wHBb3QqsYtzL3GH
4Xda0sxv/GLkz6fH50jvnOPhTmzxDEuEpIlziq9iOfo7xcYZvvmLoDUX++kN PMIIFum7sXThFqkI
1MvVFrbJAOlWN0Ij3bSmsRWYtExoiVfPkacwFnJzxy2OrVE6ck3MasAcod23 +M6PyQ6+D/juBjGK
kCs/vMazBlvYP3/aFKJIwBSFTvJd2PXtNQLsnn9DyfexZPsJeCvbc58t5D/C /z/AoW8j9SQs2OHo
f1BLBwiHLkIvTwQAAEEJAABQSwMEFAAIAAgAqYDmOgAAAAAAAAAAAAAAADcA AABjaGVja1Rlc3Qv
YmluL2NoZWNrVGVzdC9pbXBsL0NoZWNrVGVzdFBhY2thZ2VJbXBsLmNsYXNz lVbrdxNFFP9NknaT
dCglLUgRoZQCaVQCCAq0PGpobSQt2JYWgorbdJou5FF3NxVQ8a2ggO9HP+k5 6vGTCEXKqZ7jwa/6
P3m8M9k8TJO2Jmd3Z+7e+5vffc3sX//89geAPZjV4GLYmpgSiQsjwrLDRno6 FY4Upif1xAU9KaIk
1OBh2JE1k2GRSBnTlgiL9CSNs6bIG/X+R7meYUMJtRKQYVX6UiSlW1avujNs ilWHzr/vYvAaVjRj
2GKCgcUZfIYVMYWu5qvyrww9ZVyWc283wZDgMIM72DnK4IlkJ4QPDGs4fPAz rI4ZGTGYS48Lc0Qf
TxGfQCyb0FOjumnIuSOs71YwXqxjaJmy7emD4XDJqd07d/mwHhs0tFZ3tk9P 2FnzEsfD2EiMRXRw
eKRnMNLLsDFWW73LDzc2cbRgM8O+YOy8PqOHU3omGR62TSOT7KoVqYJ956h0 dQuHBq8cbeVogF+O
tnFw6b7HnjIo5ttiK8g7hd4jo0ApCnZWo+3odvnwKB7X8FjNKikUSMeQSBqW LQOzE2FKVykunbV8
qzTtaqDVdnOq4CcYGpLC7i1W1t4qIVsOV8Ht43gST1HNEBzD9nKYE+PnRcIm mEUiP4X1gExWoxx1
cXSjkWFtQtWmgx7JZmyRsS2pcZjjiNRoNYoVW0Wrh+NpqVU/aQpxWUh2xzh6 0UfspnPEbn8Vdivi
y9BsT4kq/Ths03BAn1alr+FZhqZKYwY/hWbgktOybcGaYS007eqS/rke2zYZ OmobDYlJYYpMQmbj
JIY0PEeNstQCHMMYYVgn00+JziXsnKmn+ijyOVPI+q6yViKbTmcz4Zxt0I4V o1qixUZxWsMYtcyy
yrJCzlB6g9EqodVwloKynHOUAOJb2fQ1u6u0KTCc43gJeh6g0O3RjGXrCra9 dmTLQRIcEyB1ni/R
wv67Rbq0ZDalcZJjCgaVhmNc5lV7cGnzaOeoFxdoGyw6KQHTHBlkGTRL2IN6 WsjYVmnfUan7Mocp
dRukrnXSFJPGRSmnrOSk3Kvkp4aiGl6hrb4UTKcCvaAwa85EGr7K8Rpep6qW vVgIxMQyfpSxWyRw
6Mbj8RXE8g2OAQzKbfktjrfxDqVE6RRbsqMWRpkWVe97+EDD+5SA5bU5riJG vS7r58S0MHXbyGa8
+JC2eJ26U7K6znEDNxkaVUzK8vt3zbiU+nZJp41JQ5g1VcpAFh94iyTR6KI0 xAu/Fewv0tFPOD7F
Z+RovpSHhJXNmdLRQ//j/DAdq3DBnPY8/7Aa9RnyC6K12pG6U+JTuqOZjDAV e2Fp+Jr2gKVPKSrx
wvmHLeSCm646eOCSJz19zvnlxw09XfK8V0+unl76r0Ijaa+mWSc95a/OfRdN d5RaQBm76H6A4FrR
rKTyaimaDavlgNZQYO0cHrqPR0LsHtpC7ntol7eOEtQ6YgXsJjabyfwKwX1J 30l7FCzPg2A7dtDT
h6DiIxe45SwQn0PTLNbMgRZawC4XHqDutjPb68KfYLNoKs1/gv93sDP3sf8B 2HEP+RSax0G6DtF1
VOmFFhBxYyx0m9DdimG7ilc/uXecDuwBHKUD5xi52E9nQQxxnMbZIttubMIz im2/iqW7ZWOfhii9
OU66ee5hekrudaFf0Xa7GIh6JZwoc7zOcZzJ3neMD5G2fNcsjRdwghK7gFPS 73glVLoMqrkI9Txe
cKD2ODy85PuLD7C+0n6mzN5btO8uJjnh5KCNqLTPwnMn5JHpDbnnMS6TLRnS ePJOMZL5XF8ltGtU
Y9dpfoOyfrNsnTZnnX5lw7wkPFJc8GcCUUkn5I7Cgh2hwPl5pNR9mvI3D0ut HJgJXHS7PfO4PBYi
B6+Q7M0FvEsuB64xtycwQy/z/3l8NKYMPx4rUd1O5QZ8S1S/I6rfE8UfqBB/ JLq3KIG/YAhzOIO7
ZdTjldRd+FxF9AuqaNkyjD7MvsI39b5/AVBLBwg372MetgUAAFENAABQSwME FAAIAAgAqYDmOgAA
AAAAAAAAAAAAAC4AAABjaGVja1Rlc3QvYmluL2NoZWNrVGVzdC9pbXBsL015 Q2xhc3NJbXBsLmNs
YXNzjZT7UxtVFMe/lyyEpNuWUgq2PBpKKGGhrLZateADKZTUBJDQKPFBl+VC tyy7dDdUGR+jP+ro
6K+M44/6g8MP4CiMOuP0J3/wX9JxPHf35sEjtZlJ7sm995zzOY97/vr3tz8A XMXdKOoYLpj3uLk6
x/2ibq2t23p2c8w2fD9NchQKw2XXW9G5aVvrPtf52jLJrsfDu+PTi/e5WQzv NjCcqdiSZhgUo1j0
GC5ljrczPr3OPaNouc4wQ8OI5VjFlxkiqf48qY65SzyOCE6qiCHOcDpjOXxq Y22Re3PGos0ZmjOu
adh5w7PEf7mpFO9Z5LkjUzs0cqbyXJEcm5IzkeqvhRjcGI7hHNqiaGXoqdgd K0kzhrlqrPBkxipS
PLav4imcZ2jMzi+MZUZzOYaux5tniK7w4miQrGRtlkq6YmDoVBFF4wlcRHcU CQri/7RUXEIPYfG0
P+O5H2wGqS5E0cvQe7xu2qGAHMOWtY6T1z4VKfQznOSz3Hfth1yamkzVoD5k Y7h2dOG5cDKgYlCg
nuNTbtFatsyAf5Y/2LA8vhTFEMPg41qzWktUPI4reFr00TMMM08Kmk5n7hsP Dd02nBVd7h3d6c8L
4GsqnsVzVMYQmPKhH3VjumtrrqM7wQ29mnFYdHzUtZfCFuh7QkKqArWxuZo1 1mX3q4uGb5m3Sr0U
9UtSb62oq5oqgHD4+6GGwskMQ1sqXSj0H41bRP2qigtoF9JrKl4UUgQ3VbwE esWxZW4UNzyevsnA
0mTYC9uF/hWoB4Xvuc118WB5TvhpTR2T7jC5WRU3MCyMT6u4jddJnSjzhr0R DIEjWjRL+B3HF1aV
VFrYiOCOilnkxEnaz5VOCuJkXkUebzLEc+6GZ/IJS+SxqWpcDAkHlNq043Av 2OV+FO8dmJ6HRwEh
loYBuimECH3r6auIJ0sDOEYSTTXaOUH/rtHKaK3X9qHuklCHU/Qbp1XMaoUu nCZJDS+hCWdoVdCM
s9LAkDSg/ISWnbJ+Q7A3UqWrSF0m6iZ1fyAg4Wda+xkdf2JCLL+ii2ELN4T8 CMmMpg3s4fIjXPwF
HWJv4Ht0aXvQttCm/Y4r81pTLDIgDvah7+GqkARGJMDoopiBcYKdIKe30IdJ 6EjjOtXyNrIBXmuI
IPHa6fw6nifAF4KA2d90kYkOk8x6OWHSU3XA+WOSxUQHSeXPKOAIrb1COasN iJiCWFrDWJTIYCWU
3XIYrWQMWKDfu1QZg8wuIgkzcJYIDUpnQhohJ6LkCQpE5FcEQjv/IBmlgc3E G5E4n1NVFFq19h8D
3W5UPmc7ttBIcK/s0M/ojtbe0bmPsUpqmwNNGy1w0AmX5vuDgEcLLZZ5NEr/ RJAQjQowGSRboxJM
kp0wxZGWRoUu0OuSWB/RkQgqKbE6qrG0QeqFPWR2tfbBfUwdTtKHBPQxaXxC UJ+ihzJeSVKyDJUs
QyUxgzdkkhTUtYjU0WuVJA6dCOCEJDl/gISFGPuYO0zxBVF8Sbe/omb/mpL+ TVWnJcoUCUlR8i1e
Kc0D6duWvnul764DvoMHU69sR7YFwFvbZYBTQahbBPAtOf6uynF1j1QcB/ln dKEQ9PLbeAcIpsM5
vIuFhth/UEsHCDObkVmwBAAAtwkAAFBLAwQUAAgACACpgOY6AAAAAAAAAAAA AAAAPAAAAGNoZWNr
VGVzdC9iaW4vY2hlY2tUZXN0L3V0aWwvQ2hlY2tUZXN0QWRhcHRlckZhY3Rv cnkkMS5jbGFzc5VT
a2/TMBQ9brt2zQIt2yivvYCy9QELgy9IrSZN1SYqdYDUad9d12090mRKXFD/ FUgwJD7wA/hRiBsv
m6bRaiVRkuvre47PubF///n5C8ArOBkkGEpiIMXHIxlqZ6SV6zQuhntdfqpl cMCF9oNxcSeDFMPa
tOr2Z6XFgCGtByosviTe1mzENcLUlaf0LkN1ZlD5mCHV8LsyC4YFG3NIW0ji lo0MbjMkS1FBrqU8
+W407MjgiHdcybDY8gV3j3mgonGcTEWSGSozrl3cIckLgofycNxweUjQ+lXd cbZWbvlB35HCVaeh
dOSw5wh/OPQ9x/O16o2dmLVmoYD7Gdxj2JxNgI0HeMiwLALJ9YWIuIShXJp1 YWq83zmRQjMsTdBP
Jruyx0eubpBXhrelf3il8APp7L83LP9leMPG4ysmYopLE+s3LMWwNbnlJ/wT d1zu9Z240qL98czG
EpYZXt/sYCK+ZGMVawxW2x8FQh6oaNesTPk72xEFQ7at+h7Xo4BKm1N31vmp qc/YuF3yndv3hOuH
yusfSj3wuwx20/NkYBogQ2yQ3iQdb5bPR4eCojl6MpinfJaiN0jQDViV6nd6 /YD9lUYJ5KKcmWGE
aCJPkU1xlL2DRZOnJsYsdfpGtfOVb7DOcPfLJUfaYFoGXzivifFR9AgrNM+i dk5mWr/O9GEq0xPy
uEeansZMm7GzdKV6huJ1HmZ4aJ4wq1Q7AbM1FYMUyiaqoGq+z/HCZAv03jY9 YgZB119QSwcIKA8M
ZTUCAABfBQAAUEsDBBQACAAIAKmA5joAAAAAAAAAAAAAAAA6AAAAY2hlY2tU ZXN0L2Jpbi9jaGVj
a1Rlc3QvdXRpbC9DaGVja1Rlc3RBZGFwdGVyRmFjdG9yeS5jbGFzc41VW08T QRT+pi1d2i62IhSF
goiAvQArIl5oBbFCbFJQU0KiDybLMpSFbrfZbjX9Kf4Bn3xQvAVNDD6Z+KPU s9ulXNpC02Rn5pw5
3/nON2emf/5+/wngFpYEuBjGlW2u7K7xsilVTLUgpQ+Xi5tyyeTGsqyYulEV 4GGY1Y28xJWCWipz
iWtbkqJrml6UirqpblUlVSsVpJNhGTIxiJq+yQvPZGVXznOGSPYoZz2d400y BOzduTeqqWwzDGdb
EaztoABfTs0XZbNiEHbmnO2p7Nk1OPST84TrTalF1ZxncEdj6wyeNPHyw42g iABEARcZou2pNzrt
RwiXrLgehkS0JcmTYcnYug8MYRECOq3ZZREd8PrQj4iAAYb+1kKKGISXtOGZ 1dza4mp6iSGYVYt8
taJtcGNN3iiQWt1ZXZEL67KhWmvH6DG31TKV1i5Jhq6cSUlX5JKDEFLLjnNZ N9aqJTL1RrM78mtZ
KsjFvPR0Y4crZjL2UsA4w+DpE+GKbnBpqbYrgDFERcQQpwPh6YJcJm7D0VjD OTpR9o5kABOYEjBJ
zXbWPhESblLH5bm5VG/PkdbgR03q1W12loQNdZEgisFlkztCMTyPntN2q9ag Ut81pm7en37cwT0B
dxmGzm54Efcxx9C5qR/eqJlGMicUJw4NJQlIMYy1RY20MWWDFLVaqM2qGXpq iq1U7XOpQ8WanEVz
QeoQThV1CH9OrxgKX1atzoy0aOIpq2J6qDLFIjdsCryMa3Tj3PRUumBfO5p5 rItIVp9t9ZOVWU8B
fbvIopGf0TgY/4YL8R8IvaBJ9xf07qHvN3x7uPIJfR9pgxtD9O23IWMU9ISA MvRAxBFGAhFM4ip5
xBoYhokIMFKz/CM3E2wPw3WMOqmrRMdFYzxBud6hw/M+8QtjbzGQOMDYPm4w 7CPBcOh006/OI0zZ
QV0iYI4KSxGPB4hiweYQrqE6HKzZNP1zMJtNB9y+CKPFDG47NNIOjWD8M3qt 1F8xe4DkB1suK5fX
Zv7qGHawjh2kvPOwABfw0AGcsNcUzU5jaMc0cjkYDIttRFabRLrwyP6m8ZhG P/lCNif8B1BLBwiB
kdJxKgMAAC4HAABQSwMEFAAIAAgAqYDmOgAAAAAAAAAAAAAAADIAAABjaGVj a1Rlc3QvYmluL2No
ZWNrVGVzdC91dGlsL0NoZWNrVGVzdFN3aXRjaC5jbGFzc6VW2VIbRxQ9PZI1 lhjMalYbQ2JiIRaR
GLKAQrBlOVYs5EUKTuzE8SAGGKOtpFFSPOU78gNJVZ6IXUWKPKT85qpUqvw9 rsp2umcQmwSVRA/T
PX1vn3vO7Xt79Ntfv/wK4B080aEJDOU2rNxm1qo60Zpj56PxvdfMN7aT29Dh F2h/an5tRvNmcT16
Z+WplXMEjEJp1crfNXOb5rolcCG1D1NH8KzzAoGYXbSdBQFfeGxZwB/n5hB8 aDGg42wQAq0GziAQ
RBs6dLQLDDTHM9CJgEDQSqYz2WvpeEKgLWUXrXStsGJVsuZKnoQ6U6WcmV82 K7Z89xb9zoZdFRhO
nayZhHsOb98q70GMnrI3ls3OLxCgNeOQ7ZJZ9vadXS25DgJXw6lSZT1q5fJ2 uWpFrcIa56WKFU24
yZ0fSx3NNwGDGXu9aDq1CsEun4pAFi24hBEdwwIXT3Q28Abe5BFZ8bxZldkJ jzVDVx7zIR7XqIEB
vCVwrykT1/e/KA05G1Zir84unYIgcP1/UlCpGsekjgnW8UlQBqYQJT8rXio6 JiuuIjDSPFteAAn+
tsF+u8o6XbccBWWv2VYleUM1RFImdFYm9F2BmXDy3+dMhnjfwAeYEzjHEIlM rcxOYNXyPEcbMMyV
CoVS0S3gRMquSogYFnR8SAAFr0zSYuAjLArodjVRKDtbivFDyfi6gTgGBVpW rTWzlnfiZtWSKAkD
N/Ex/UhE4Hw42bic5SF7FTd08gEyhHVQUHvqMEM6TB9Zip2MKBt09PREszJ0 3BHo2G/5pS2FIPXf
M3AfGZLLUbi3LnAlnDrm3bjMjdyhQhBJJrmwB9PVAIU9WrGqzLS83RoA+shX oK8hAWUKlLymCmVK
tUrOumnLm6n7yA02JaEFwrHs3PEoC8eXMMJk+PhFoSR5h3MW4Jz3Op9Bvm1y FBw7Ij8j9AzGSwSf
4dxzGD9x0Y8uPjs5AhN8TiLELmvHNLq5YrgbcR49HHsPrfRx7HdX/uYGoSsL vxwYhIYLnGu4qAjc
Jz1NekbGdzEkML6Dy9t896nYAbVvTsXrcf28eHJ2BWHa9yMbXmS/vP/qccZU nFdElDoWGSYiQKnf
o03GnBaY2MHMNqfvCaQnd8HT+A4tEa5e+wGdkUnfLm5oeIHxCY+bm5chphFI QLZUH5K80W+TT4rZ
WWJbfqI4R9yYdc6LuEVPoWaSvSa/A/S9TXa9dY2Lng7XlqJN5rIVvr4/0Ksj ltaVGN5JdZFLSuTv
nJ3hODv4owo3hf1f18QLpNORyR3cnfP3+18ipBTK+baa7SsbUIXyORU8YuQv MIwvef6PEcUTpWrG
DVJXNYssPlWqZj1V/bQs4wFpDvNfw2fE8h/QN+vpc20PaZP62uDr/lPqk/Je 01HIHq4rfKQU3uKq
hNDE0SIpHygSrU5NI/0Hh4pE84ILeUMeKcbm6N82RQ83RNeYMvl87OF/9Q9Q SwcIdNvZukUEAADa
CQAAUEsDBBQACAAIAKmA5joAAAAAAAAAAAAAAAAaAAAAY2hlY2tUZXN0L2J1 aWxkLnByb3BlcnRp
ZXN1jjEKAjEQRfuBuUPALTW5gAoWCltoZWmjybBGsjthkoDe3sRuYZ3uvQfD R1ipreX4ET888x4b
mhk31fWuQ0B4+En7yYbiKKmd0usbgprfyI6CWQjn4/Ww6S+npRZDGerr9xj+ xygcSbKnhPC6S9KW
x+gDaRZH0tYgJC5iSetKSaxB4JJjyT9Rt1fxBVBLBwjDuZSkjAAAAPAAAABQ SwMEFAAIAAgAqYDm
OgAAAAAAAAAAAAAAACAAAABjaGVja1Rlc3QvbW9kZWwvTmV3Q2hlY2tGaWxl LmNoa8vMLcgvKlFI
zkhNzg5JLS6x5uXi5UrOzytJrUAStbLyrXTOSSwuVnANCvIP4uXiVArOz01V cC0qyi9SsgLySzIy
i/USS0qKFBRtFfJKc3KsAVBLBwguddDzUQAAAFoAAABQSwMEFAAIAAgAqYDm OgAAAAAAAAAAAAAA
AB8AAABjaGVja1Rlc3QvbW9kZWwvY2hlY2tUZXN0LmVjb3JljZFPi8IwEMXv gt8hZM+a2r0spa2H
pYKwsqIV9hqy0xps0pLEbf32O/1jsayHzSUk895v8jLhulEF+QFjZakjulp6 lIAW5bfUeURP6Wbx
RtfxfBaCKA0EyZ6LC8+BNEoGo8tH13xGcCFM2wCLET07VwWM1XW9LFW+LE3O vnZbepfYqaR+7RS+
561Q9nEUZ1B8IbV1XAuY0LuXTMwgCllZ6Aigspbis6SVUaK5QjHixCUF6waS tqfDdmSMVdbl13Zv
IJPNoy1ufSG8F9xamUlMTjBC4G4V0oe/6Yr3jrtbf4z7hiEcnbkKdzW82ADH HZ4QDpCBgTbwQOHO
GRxI+qcN+Vf8F8aSzwoMdzgnyvoQ7DFFO1o2nS1e/QJQSwcIkKh1zhkBAAAW AgAAUEsDBBQACAAI
AKmA5joAAAAAAAAAAAAAAAAiAAAAY2hlY2tUZXN0L21vZGVsL2NoZWNrVGVz dC5nZW5tb2RlbIVS
y27bMBC8B/A/CMw5outDEQiWfbDjwkAcGG0K9MpSK2kRiiSW9EN/H+oZC01Q ncjdmdnZEZfra6Wi
M5BDo1P2LZ6zCLQ0GeoiZb9fdw+PbL2a3S0L0JXJQCU/QB+aQ3StMBmJi0Cc 3UXhC3raJaGZstJ7
m3B+uVxiUxWxoYL/OexZDwFpCCYgkAqtgxYIVc4X8/mCPzWwifZg5f/cwSuL WsIWCaQ3VKeMyxLk
2ys4zx3JXr4FHdWpQL3fpmyE9PQXUQW/m48qVtaQB2rAYe7oIcyPh14MN/6l qaxCoSU8w7lZ4HuT
tzS2JixKv0NQmUtZLpQDtmo4yzywsejWWI2OOtUln3RbfAjnKOSbKMBFliDH 68Ryhs4aJ/4qOJI5
Ywa0E30knk4Qfn4j3CvcRNANvOedq27ORgnnwpi21V4+IfBD3bYGYkfdgfAn ClxtPOb1sHIkKTRg
U6LKxpolY4F8/SvkuSkNSnATs71Wytpb8vQTcqDwhiH60gwX3hPjwy78Y5ku RH6TYvP4+T+vP1Tf
AVBLBwh56zX7kgEAADsDAABQSwMEFAAIAAgAqYDmOgAAAAAAAAAAAAAAABsA AABjaGVja1Rlc3Qv
cGx1Z2luLnByb3BlcnRpZXPj5VJWsEnOL6gsykzPKLHjBXH1UfggIRXPFBVe Ll6ugpzS9Mw8v8Tc
VAVbBeeM1OTskNTiEgXf/JTUHKBsUX5ZZkpqEVS+vLxcL7UiMbcgJ1Uvvyid lwsAUEsHCMIMVyJY
AAAAbAAAAFBLAwQUAAgACACpgOY6AAAAAAAAAAAAAAAAFAAAAGNoZWNrVGVz dC9wbHVnaW4ueG1s
jVI9a8MwEN0D/g+uyGqrpUspljMEAhlaSknmIuSLLSJLQlLa+N9X8rdDhniR 7u7du/fOyjbXWsS/
YCxXkqCX9BnFIJkquCwJOh52yRva5NEq2wATXFuYsK8eG0q++JQk0SrOmNKN 4WXl8hDheegT632x
jlZJ0rVocSm57CpxnMHVgQy8sVZcOoKUKdN+ZAr1yd+VgbQECYY6KH40ZWda Asrb/kDRZ4a4+y6G
E1Q5p98xZhWw8wGsw8HmEscEtZagEZJuh9tXP2iJ90I+VAGCoDocE3eQ2KYQ 7qRlePSW33idUd5x
HVBF6hoNtrEO6nYN7Rw7c12Do62SpT5pj9/7h5wr/0MNL4CgExV2ttDA3jbu uLjZahBMXTWY/4S/
7QD0Cs9LDjySTKrxKPvekvzzwOP7+AdQSwcIF2EV8zQBAACiAgAAUEsDBBQA CAAIAKmA5joAAAAA
AAAAAAAAAAAtAAAAY2hlY2tUZXN0L3NyYy9jaGVja1Rlc3QvQ2hlY2tUZXN0 RmFjdG9yeS5qYXZh
rVPtSsMwFP3dQt/hCgN10PYBrEMZE/ZjQ3QvkKa3bVyblCRTi/jupmmqs3PC 0H+5N+d+nHOSeDoN
fJhCQkXTSlaUetbH8feETU6W2aQ7xIHfELolBQItkW43qPRV4Ac+qxshNQhZ REgr1iiMsM7NWUiM
FneEaiFbi4yHuWdhCCkWjIc7hTLMBIUw7HfYlAhJOnNlSZzOIBcStEnXIsMq sqilhkaKZ5ahAgJU
ItHmHnUpMgtHQkvggockVVqaXkArohSIfNzJ7oI8O9zkRuEe1Wg+nO57FXpM gRylGZ4NEu3SilFg
XKPMCUX4LHOMAF+1GadgUAbeAt+zyniOvmK8qFALbtooTbjp4vbO+5Koxx6V 0TvOyxst7dmtvcMt
l+vHze16voDrPQ2M1VU0xi67JONMX1xal7/IPKDeSd45xPEFRPqExghDpffi PMF6tmph3kVJbILz
vxKTduDJ834QZNVamHtaLjpKsPNm+Bxq13T/ATNIW3PB1H+55sidMus3p90z hgL1OOd4vkMcj80O
/A9QSwcIMGM9l5EBAAA9BAAAUEsDBBQACAAIAKmA5joAAAAAAAAAAAAAAAAt AAAAY2hlY2tUZXN0
L3NyYy9jaGVja1Rlc3QvQ2hlY2tUZXN0UGFja2FnZS5qYXZhtVZbb9owFH4O Ev/hjFWirUbSvq4U
FTEqIRVWAZW2J2ScA2QEB9lGGqr632fnTm7Qlb4gxz7Y3/edq3V9Xa/BNbSp t91zZ7mSneDbOtzw
Ny8G9oVeWPXaltA1WSLQFdL1FIW8q9fqNWez9bgEjy9NpK6zFWjiZqHWHkez 33OJEHfHrJ6Dm4/a
jXGBHBlF/2Ur4vGl1YI5Lh3W2gnkLduj0GoFnKYrhPa8Ez7QtuYdWHgcpNre eDa6pm81kEA9JonD
BBBKUQiPi8QQJQFv/gepFCA94LjlKJDJ4PWdGzwF0HadDhK6AqpZf2tb6jt7 tEAidxzBW8AxU2S7
Te6EMDv4o00UKrnfYmLRtiIsviTI7LwgDwJTHjR70eqRUOnxfWDjSwNrh9n3 jdDrjeBkiQw5kWhH
MbGbuw4Fh0nkC0IR4gtDyQH/SgVEQORkeK3XDN91RuifKK4Y2aAZbJe61Cgn Z2TwGT5AYyK5w5aA
o+6wD/fQiLk3/CAqhyK2ms/LePCJmCYzdb9GtZJy+92yYnDWrXlzGsBPVm0y ex73Hwe/jkonlL2L
0mMqGIQkKkl1jMsE8/lB5mNtMJpMu6OednQS46qmuGbWdqA3HebIy6sCMqmU B8eOK0Hz9cF12Dp7
93Dvlzl9JbRx0xnuwd9oW+rjrRnk+EfpH+Zt9t1yoyLiX5cowz9fXpXKq5Ia hr9nvafuZKIEvSnQ
KapmaY20AqrkdqXkut76IjRV0QxL93nDAB48bquLi1HPZt3pdFyCXVXXOXId pELyHVU8iBsRElHs
NnP+PJM730Xjsd+dvoz7s97Pl9FU0bn16aQJjVHBVt0r0698r/h4C2I3jICi kP0oO+7DqUKT19Us
jOEQZGmQBhMGpAP67nRp9F4cmeUS6XzR8exLFQT2Z8uUQXbwcLVUEdg4s7XV aRmfDFgpQWfBZRWq
LoLZQa2JGqS4SiEMDqJOEKdTNHOdS7X/e7mqlYRzkOaf3ctpUMngBy4cpt53 HTUaEbdsnNTAUwOl
EU+URsVImTmrnCkztumhMjkqnSqNZKx8f39OpsKnSAQ9/IUCFvXaUKyzNdxq L1UxOq3nfqTp5kQL
VYtKWqr1xnONma9z71HzSGuOAukMyhXySqpLrkEXMTwoPG/69w0sKyttvfYP UEsHCHhJ/9ZgAwAA
0A4AAFBLAwQUAAgACACpgOY6AAAAAAAAAAAAAAAAJAAAAGNoZWNrVGVzdC9z cmMvY2hlY2tUZXN0
L015Q2xhc3MuamF2YZ1Ty27bMBA8S4D+YYsE8AOVeE8Fw0HQQw5Bizb3gqZW MmuaFEgqqRHk38uH
GLlN3CS9rUjuzOzMiiyXRQ5LqJnqD5p3W7uK3+TPg3B4ft2c+4IUeU/ZjnYI bItsd4vGfiryIuf7
XmkLSncVMsF7gxXuW1crjdXnL5ufyPzDV571qKnlSgZIkgR+KEvYYMdlORjU ZaMYlGUUewkae40G
pQ2NoFqwW4S9alCACrQwq3G/qjermwNcCWpMTTarmrizWTURoGyewcfbPlLd OthWCaHuueygRWoH
RwxUI5ih92NhcxE7BhFbAGrBVw9rweVu8qu6OQQZZx3aS2s1eHm+CJoea+J6 xiQSUE36SdDa4JH7
1VWqvsZgPOzIMF/EhuBGLDuU3mNsUprDRnAGXFrULWUIYyvgL+ssMTBmBw9F noVEMgfzDd3w0gSr
76gYMPmerI7jJJtdSC1qlAyr2H8y0iwZ7ovrMUuk0lt+TPFk1xE2cCNnFphA qj9GBPfexaORCnEA
s1WDaByt2w4dFFNo0DDN+7A6/m1VJYUkqTixHf5qrYMPJ2x4SeOIHiI8MzH/ +bT3i6PrNyX8IwCk
tjHn7K+gs5B0NtHAuHnzRfjRply/o30p1Hdu8Hvz/ofBPdV0P6rxUiTe/4/T T/OeNOdO8QaeBxLJ
ok2PQEj6PYr8N1BLBwglg7Yk/gEAAD8FAABQSwMEFAAIAAgAqYDmOgAAAAAA AAAAAAAAADYAAABj
aGVja1Rlc3Qvc3JjL2NoZWNrVGVzdC9pbXBsL0NoZWNrVGVzdEZhY3RvcnlJ bXBsLmphdmG1VE1P
4zAQPbtS/8NQIZEWNdm9UkBUpStVWj60cNnTynWmqRfXiRyHD6347+s4dhOS IC5waZ3JeOa9Ny8T
TSbDAUzglKXZi+LJVp9Xz9HbgA0eruLD8hANBxllDzRBYFtkD/eY65DvMjEb DoYDc0iVbryZNMOp
SkJkgmc5hrjbmHOqMFwuBM3z2UdZN+u/yPSHabcVuI/blpjD5Q/KdKpeVi0C /VcyUSRchsvy4dae
7Z3I63gwncIaTXha5KimccpgOq00nUsoG+IOpaaapxLSDegtwi6NUcDp+twh OY3W52FdDmXcLXaR
oERFNcZ+IsVacAasFBIWXvwGN8BnbUrl0CRcI+pegn/DAbHEiGm4UGi65RZw jBtaCA0bl/iWVlhd
eFcK8j4x0mJGLDXiuOVlfdbFySXXwdjCJdrhJqSTZpB3YmcQtGNj75/wlwGf m4Lh6vrufn69WIYJ
aq9eMNpqnZ1E0d7o0ffw22g8A9udbyDoa3hwBrIQwqElRKEulOzDNrMJr+Wv /WFUsy0Ey2eGmXUP
+pMv1jBlDVmkSVBnzvblXGOJT71uCWzqa+ntrgeocbI005AMvYedFb5s9v0Y K+J5kaHqBfyJOC5u
HlEpHmONye0jYFaWoFpigPbPQ3vidmpVsPSPPfANR7W6DMZ+dIzmWHP0Brz6 /Wfxc353dwJuWlWn
qxdbpGJMiPsaTypD6a1Kn+xYV0JgQsVcJUX5be6NE4zuzcCqRXE0gmOowV3T HRpVj2F0BDwHmWqg
8EgFj6t8i3tUu+jr5HYSO6pt4pVq7tHusZ1LPLPUG2+cSk5Al/a1Vmlb1o0T yum3Yp6Kgxe034/L
jbPP/UzYMWYK2R53r+UvmznvLOEGuX5OHVej3017Oq8QRX0f+HDwH1BLBwgO iR7dnwIAAKAIAABQ
SwMEFAAIAAgAqoDmOgAAAAAAAAAAAAAAADYAAABjaGVja1Rlc3Qvc3JjL2No ZWNrVGVzdC9pbXBs
L0NoZWNrVGVzdFBhY2thZ2VJbXBsLmphdmHNWG1v2kgQ/gwS/2H6Ih1UYHpf mzZXH3F6lhLIAal6
n9BiD+CL8aL1Oimt8t9v9sXY2EAq3aW6L8i7Ozs7M/s8M7P037xpNeENvA/4 Ziui5Uqem3F/f0JP
vvbD1+qj32puWHDHlgjBCoO7KabSidab+KzVbDXpgwsJXCwdDOJok6KD6wV9 c4GON4hZmp49JXVj
1D8pN8YFCkyCpyXV7w9qVZ7sTPArbhUOD/KvSxZILrZnp2RqRxcy19s8Jq1m P7+OF70ezHEZJb0s
RdELeQC9nrkaNwFlIa4xkUxGPAG+ALlCWPMQY3g/P7eHve/Pz51CHSZhXdnH JSYomMQwv9hsHkcB
BMokqJqvggH4VZKqFMoRKiyqb4LvrWZDO9Y45VnjuJ2NiqENbWljI6J7mgCD KVibONrRB0iy2Nxc
cfhAIG1IgVEIk1QyAs6p4HVBkKGpJIiF8BDJldHy/WMcJXdPQNcZ661iC7WZ R5hv9ZmWREZrzqjb
sQ/3LM7QsTHZnA+5xHd6Bx0hMJDwwEgDh0D7U9YFUQr3EdNTqYJHYLQsDEZh jXLFw9yFV1ESSVA/
7c5jFx5WUbACFqccNigWXKxTs1tJRCyOvu3hzR7ZpUhQoGQmklTPl4KWi1g1 C+AJ0gFkdrglIJFY
6vxLXKSIP3oVpR3HKfoKh5MZXUJJ+JWJ0JNAPESXdkfjv5FmFNK21d2FavJw 0B9Opu5w4HUIs43H
fdw+A2kMOGDOeYyKDqlPPtKNfSCoxCkeJk5BCPpkSVgAA83V7/MHCEI0TZDU 7DJb1BxLtsBJXqSQ
bQhQBngExRA3KrdYTOwIMNU6DHTpixwNFfyL03NA1y8zD+sjHYIJWcMkLCKM tSIWBJiSMnveII50
BktXPCOBhCtu3PM71KZFinnx1gGfUgcBuKs83ubCqcqAW6uxfAzZyeeSRUmZ M/8F6A8B1SQE6/yA
J1L5s0PuDssmaMfEDoDGFAWLmVqCN/QwOCeOt3MwdWxagHZ1S6fGTSe/KGeJ Ml+t7XOszx2Dz0a/
DyMTXEKVzYYKZDlMSym2cbCY0Z3U3PlQt1fJdtqnjc7J3dnVFsqTBw/9rV4T jmh6Bwk+HMkreQxK
1JUiwyIyhrS7ykD8Yb2QSUZ4/JugrHJ744D/zhEQFYr9gndGNiyUH1N6AnaF 4msm7kp2aoqHUaC8
IAYGLPlFEl0oebNkqeF58KiFQPyGVi+A1X27CfNaKfLSbKCiIbpfjxsnLmiT yaO47B4ClM7ojeKc
A03hcyZ8w13bFhG6bL+ZE9batdc9/RyLds17yaqZK6WomNYuJDt7ZupUMSHQ ByTH4kuCYiaQPNMk
evvcldS4Ua3kypnqXNWh6npHOWK/fZs82j+pESg6gIHl8skWwDTLiqKmY7a5 xJb6osAB7Bdto2SZ
MRGa4r1i90glFthioTpa6gJUV6DqbWC6zHlG5VdpjgS1ac91ffc8CuFIxitX NBucvKSdmcxbhOxg
6tWvKP3eCFVwIgELi1ElV32wGCvMsH3912xw5U4mJnnYpR0P2nt7u5BLz2bu dDr+6cgpCsJR9HD1
QLT59+RzwvSVMi2BzILJaCrawP8pmE5UumqLZGNWAdV+NPeBVSq9pWqVohyy NVLf4F6bB4SeSm8E
LqKvup24GXuX/pfSGlWrdr2bssCV2406QJBS1ezvlidIBZhn6vmvCX9EzA2p IVYPHiWQ6peqYcLB
FqJEkpweZ8BIBd+oMNP1mcXyQRQn0mC5UiWDGTqBGb6045ddeOFPZu7vk+nY HUzNyB9OvfGlO/C6
QKNP3tAbu1PvYpZX+zIJ9YkFBWtFqwtY+pdJF6dR7oFaVX9IkDmMhF/mo7dd +LVmsTKMbBxOfG9o
7fw8unKn/pUxc/CHO/zkub+roVocjK5vRhN/albH3mR09dmjGx998b2JEbkd Trzp1GzRQ//PW7v7
whv7n70LPT8a08i7qAOC7oRnIsAiGY3tTBlEJuk8Qr9/qGVtNf8BUEsHCHKz OP3XBQAAbhQAAFBL
AwQUAAgACACqgOY6AAAAAAAAAAAAAAAALQAAAGNoZWNrVGVzdC9zcmMvY2hl Y2tUZXN0L2ltcGwv
TXlDbGFzc0ltcGwuamF2YcVWXW/aShB9Bon/MNWtGhOB/V5clChFV0hJUwVu pT5FZj3ANsuuu16S
oor/ftf7gdfQNGnV0Bew92PmzDlndp2cnnbacAopEcVG0sVSDe170hwwg6/H +evqIem0i4zcZQsE
skRyN8VSxXRVsEGn3WnrByEVCLmIkTBalBjjah4TsVoJHnOh6HwTf6j+KMkU FXzw6B4kQmI8umBZ
WT656nr2BYl6elmB8llpx1yh5Bl7ZuCq/ngU1jW2jDxjl80w3mOw5vbCP320 tA9+sOZq42nqtBOv
6qt+H2a4oLy/LlH2c0Gg37cKn3OokuMKuTJwQcxBLRFWIkcGwkCCkxRXw3Q2 vNqACZ8ms2Ga6LGT
uM6APD+Mnxb2f6pDzgVj4oHyBcwxU2uJJWQS6/yYv7V71sxuAkgZHX4/Y5Tf 7XnMF1qx9c8C1blS
EiqU1YOBtk0TvdnZ2EdMk6I28tkCeeUCzL2d1zNGCZAqMAQJAL8pXV0JgUQ1 7N1S+N5ptwzpLVcx
yTTqHO4ztkZP7Imrx6OOunu4T0DiHCVygrEN9aiArce5r6bOSsQgjxsMqjbv QuY6m33TJLQKKZQu
UuOuuwQyHcGYqi7wt1E1ATRTBqxrYipCW+Vao4i6Ontr+2IIzq7vUUqaY5MA qytOqt4g5sWjkqgd
zGG/J+NLqs+LjJXx1efbi8vzyeRlcTvLBkrVtjI46RyiSjx49Q74mjF488aI GeO4/CjFt03UdStb
e0cdCJabtnoH0d5U19lBb8rcihpBF2+wFOwebXgXpWuXh3D8jEtv5jA8Om/w 65pqa2qIdkXLTm8i
jg9wcMpGaknLHoTD8c1ocn35adQ7FMrrc3t7Pp3e9DyanmGn6+Buq99toLcv /JiKzrKSkn+bsh4b
zr2gOZQOQ4BNCxFoGEzU5tl5xVnFbRl4d/5U8l8WfDKa/p7YRzpbLJ2uw1Cr GlGu/IU4ft+DmRAM
M64vAdNE9UD1pTDdFOiPxQeqyBKi3VbfRyQr8SkG3tYd5/J0wVlqd37YDvBO a5pwsN8X5pCOTT1B
LbsadtiPzrQxLk4OeXYSaGN9qq7nP8iqb5PwTNylabBa0+j4mzT5a+z6C7T9 x8t94l6aJ31FPcGR
BVUnPjo3viH1DXrgqz9IT3DE+8v7sbazQH5AyRaSJPik6rT/B1BLBwhWx9BE bAMAAOoNAABQSwME
FAAIAAgAqoDmOgAAAAAAAAAAAAAAADkAAABjaGVja1Rlc3Qvc3JjL2NoZWNr VGVzdC91dGlsL0No
ZWNrVGVzdEFkYXB0ZXJGYWN0b3J5LmphdmG1VsFu2zAMPTtA/kEDBjQtEOcD mgYdgg7oYe2w5dCr
ItOJVtsyJGVZMOTfR0mUY7t1G2DbJbFlinx8j6Q0u7oaj9gVmwtVH7TcbO0i vM+6C37x43320T3M
xqOai2e+ASa2IJ5XYGy6s7K4Ho/GI1nWStvWl6v2stKbFEQhawMplHkqVFmq Kq2Ulfkh/ZTx2oK+
PtP8wf1Jb3/mDjQqYpTPXFilD/e49JYDEEpDeve4/gHCesNZJO3DdMrWsJHV dGdATzMl2HQaCFxt
gc3XCwrFKNZ8tl6wXGlm8XOpMihSb31vWa3VT5mBYbxinHahKhkshAZu4enp yYmC76wEu1WZ9wNc
bJkouDFM5X2vHh9U2Ut0twba2i3j09cga7DZQAUaI2dR8926kIKiNVu6ZDL4 ZTGiYS85Zr/Ho8RT
lxA/AsFDFhAzqqg0fB6kNhnOK+mBTjzqBIm1qBwGMpZbTKCfbQBAL17gE8yl 596LIivcXwmIREeR
8pDifwAe+B5genLpCU1kzibtBNjNDat2RUGfk+63F8mncP/wffXpYXl37cyP +HPsUvAN7E5Xhu23
WHbgSleamDTDR17XCJOvC2gq2x7qhibl++YcdlbOsWtQKKFyUqmKaQoeOsHq HcQmkG33DgdIgkeC
XphYU9jSHmhbw7Ct1zPvaRTQ/BMmXtH79vEnaI0z4KT9WqkCHG5Dqn9WeoUu J4+E3/+1KoHywhpo
6x5rgfA7Ghu129siPQiY5l1v52QS1ylyCks3DiaX6QbsHYXD0uwBOEUjRzkv jF/tFZsbC2YvLU41
u+WWoQvY+A60ypP45kg0/3N6NJ3z3eObUzsuQqJhkd24HCvYD1rHtu2onUS9 43EhuIEvh0At/Xe1
bogMTJANbZ9cer4D4W8HyiDnu8IuMV6U9s1AZPNaoOPw6GxGJXUFdTPXWDSk 4N8qV3PNSxZctgcD
lo2PHtsutkB7gL+L6rxmbcTziUeK4h2FsBGtBKNVOmmmwsOpx2hH0yavsstc tbVTQb5P0y0c1he/
bwtZPbdO/FhUcygXXw7Mv8xn+HK8OHtUU+0MjWx3CDGjQh/v3Wlf4XXFyAJn 5abCO5WvcnMdPEqL
8xoD5bvCaUYW3Nu4getmN85cGcb3XqJvwV3HcXyyW3KGyR/2/HD+KHc7WwRG vbvXIyLrvYO6q3+/
JTu6O25emX7DojqckW+X6b8U6a/ZOpOR/uwYZuTIZrOBa8949AdQSwcIUKSk /JwDAACzDAAAUEsD
BBQACAAIAKqA5joAAAAAAAAAAAAAAAAxAAAAY2hlY2tUZXN0L3NyYy9jaGVj a1Rlc3QvdXRpbC9D
aGVja1Rlc3RTd2l0Y2guamF2Ye1WS4/bNhA+y4D/wxQNsPJiLfe8fjSBu4cF smlR+7A9FbQ0tpiV
SEGkshCC/PcMX7b83G2bAjnkYJgi5/nNN+SMrq/7PbiGSSqrtuabXM/c92h/ w26+uc/emMWo36tY
+sQ2CGmO6dMSlU4azYtxv9fv8bKSte6cXHe3P7JPzMom77nS3RNZbxJMC14p TLBc01rWmNzNC6bU
+CWp31cfMXXmRiGln4ZDWOGGi2GjsB5mMoXh0KW3zBEmq9nimes0n4xWM1jL GjTtljLD4koBFznW
XDORIuQca1aneZtY5XsNqqlMNMqqpKwo4PPbgosn+DmTzmjsQxrAdke6jS/W iJbk4pN8QmuC4M9w
ljKFj4+PBnv6ghJ1LjMbGbI0h9QgAXK9i/PGmlKa1ZqLDZCb3B6yVDes2Fdw 3q0CExlUtUwRM6PW
VFbgZMZWvhFUL2AgpBiKhpKtUTWFBq5opZtaYOYiec45xckdLF7Iu1cWg2RX GRTZcV3eKuxyah5W
fzi6OZkNCopOYxa42KwKnvpstyq+tssZfO73IkuKyFc+JTQxcxBCFUxHlzgT nQ87OogpskFFBLAm
wMkP1UdTfIfJOP/+wzJ3F+W8RjKmqFJUFuVqcgjkt47XoXiAXzyw8EV8DXE3 XphOwVDBH0f7Z0e5
Jnj/YbF892F+Nzbi1ALmt5cxNZE63QcXGsBTUwr0TFSOptCh6Ri4hpZjkRle Mu23/yuCzp8NZc1r
pY+6I7QGrFoK6mRm5uZIXqrIEg7vFON0e71Y/H0wW8GdQIL2Ao0HN12t8Y8C vKYA2xbu1sDiacG0
qxs4WxXTNFs5KoQUmnFyQk1F7dNtmdBGp+rotDeo7YKv6Wq+/+1EPW1XRVgo 9MbMAztx6jPARVNh
vWwrulWmsGf3bncUO0s+DruMOpoJV3dlpVtK4Fd3GGW4ZgT2nHCNuwDchvOQ StcMOY1/OZPBD1r+
K1pyoR0OniAXaOleEIi74oGAJpDj2/vhr7/n798tFrdeKnpoXReU/n8Ksd8a 7Nw5KkXLkPgUjHUv
F3tVTzjbK0EuPC1bvTMk86oecV9Vu2dbIXDzFkJbXTBzgnp/eubsDzMENNYV WTSj026wAnb0Wl9N
sJw9tGDznIzo4+o15FrmNEDRtFtgicKMDlJsSWxwGTsxt2WCOB7MnjmtKcyS C2LOmbHhDH8rVrMy
JGU0abqkfj05fnTJ/m0RsoPgbpi+OPUPjh7IwctvapeKgc3yxJMaEP8/uOGj /T6ocQOrxhTceHB5
ESba4kTBt8+s/R7JcwrCf8SdV0xfnVsj3KkvMuULjEYHo3S/9xVQSwcIlYwW K9wDAABtDwAAUEsD
BBQACAAIAKqA5joAAAAAAAAAAAAAAAAZAAAAY2hlY2tUZXN0LmVkaXQvLmNs YXNzcGF0aJ2QT08C
MRDFz5r4HTa9MysX42FXYsyaQCIYWL2S0k6WkTot05bAtwf/EI0JHLzNm/zm vZepBtt3V2xQInmu
VR+uVYFsvCXuavXSPvZu1eDu6rIyTscYdFoexMWPQk6yK1bEtlZRjCo+ll9j eZo0no+klw7QOAoR
4c0mcDqzWR7SYTRt5g+TcXs/HDfT8i9HnFBYO7C4yB1k+r5EgVnSbLXY16d2 F7Ac6Y2eNb0+3Pyj
UrAIxguC4DqToH12uSOO56x8TiGno9uC+BOuyt8v3ANQSwcI9KWx0tAAAAB4 AQAAUEsDBBQACAAI
AKqA5joAAAAAAAAAAAAAAAAXAAAAY2hlY2tUZXN0LmVkaXQvLnByb2plY3S9 ks9uAiEQxs+a+A5m
7wW9ecA1UeNN00T7AHSYrujyJ8CaPn4B2TYbY9JD09t8H/PxGyaw1adqpzd0 Xhq9rOZkVk1RgxFS
N8vq7bR7WVSrejJm1pkLQtiiBydtiN3RHTHNFdZwRrie0AeCQgZGs5lOwSiF OtSM9lVyy1U+CzpQ
751sxdEiJFXkJka5FtkpQOMagtBK65FcRCBgXCz4jecAup8RYoK7pktsXzQd Gow+UH7FtQLJnmv5
Ed+9/l/sMS5c8T+BFqdfeeSFzmHpvovn276fpwFy37NMGvm17RqpDw+Bvk7E 778w/GRfUEsHCCKU
XFLrAAAAowIAAFBLAwQUAAgACACqgOY6AAAAAAAAAAAAAAAAIwAAAGNoZWNr VGVzdC5lZGl0L01F
VEEtSU5GL01BTklGRVNULk1GlZK7TsMwFIb3SHkHD3QjFmVgcNUBqgwgiiKK 2F3nND2qL8GXqOnT
EzdtGhBIMNr/5Tu+LLnGDTifvYN1aDQjU3qTJg9BlxKy5UkdxNtBeuEKGJnU MlSo42JQVq1aG4mi
d4gtiN1b10GhRD9zqCsJvuuaexsuoTF+NMBCcucK7reM0GHzXnhsuDd23F5b 02AJli7OW3nHK47j
XT2qWoIC7bnvICOoLmPL5Bz+co5nI7jEwzHCSH/QQXyFj4AWynwPIkRHrhu0 RkcII0+84as8m9K7
NMn3tbE+K7jY8Qp+GjlNTm1ZX86IsRUFIbF2QIWxQG3QHhVcp8klP2vQ4Rol +pbNLcCREx3jNKhN
f/F/Nkfe/9y/A74/WXdPRfwaLSOSH9o0+QRQSwcIkWEA2SUBAAB/AgAAUEsD BBQACAAIAKqA5joA
AAAAAAAAAAAAAABOAAAAY2hlY2tUZXN0LmVkaXQvYmluL2NoZWNrVGVzdC9w cm92aWRlci9DaGVj
a1Rlc3RFZGl0UGx1Z2luJEltcGxlbWVudGF0aW9uLmNsYXNznVFdSwJBFD1X t9Rt1bIvq5cCCfPB
jSCCjF5EQbAIEnuol3GcdGp3R3ZX/1dPRQ/9gH5UNLvaQxEUzsCdOffeM/fO Pe8fr28AjrCTQoJw
zIeCP3ZEENojX01kX/h2/cvV6MvwyhkPpFdquSNHuMILWSiVl4JBqCp/YAvu yFEgbOHe21y5rvLs
xkVzRmpMg1NEWDyTngzPCcnyQZdg1FVfmEgiY2EBiyaWkE3BIuz/rycLOeQJ aca5CILSIeG03J7r
O7WonXxbeuJy7PaE32E9RxAKbcWZ02W+jPDMaYRDGRBO5qxEMK/V2OeiKaPX ir9Qqg9swghWy/OE
X3dYEAhdMPdTgS3C7l8KELLfNMAe9PQRLdJbT13blEa1GAOZyjPSlReYTxok sKxtLibcwMAt0rjD
ikbWNBkFrMZ5a7Fdx4Y+C/pGWstNHU+iiG0j8wlQSwcIwc9sIk8BAAB0AgAA UEsDBBQACAAIAKqA
5joAAAAAAAAAAAAAAAA/AAAAY2hlY2tUZXN0LmVkaXQvYmluL2NoZWNrVGVz dC9wcm92aWRlci9D
aGVja1Rlc3RFZGl0UGx1Z2luLmNsYXNznZNrTxNBFIbf09t2l7UgilZBRS1Y MHbAxBAsMTFNmzQp
jZGGxPhp2Y5ldC/N7pbfJfKBRKM/wB9lnBmWqg0mhf0wZ+eced5z2dmfv77+ APAcTwxkCKvuIXc/
9XicsGEUHok+j1jj3NXsi+SNNxqIwECOsBxGA8ZdTwxjzrj/gbmh74cBa+62 zk4Riu3uXu91t9Ek
VDvTSdcJhWGKb03JVNr+0OM+DxInEaGSKO7IugKRvCJkq2v7hFwj7HMLhGs2 SrBkkh0dN6VrzkYe
BcJsRwS8O/IPeNRzDjxOmO+EruPtO5FQe+00cJPw9D+tjxLhsbc8DkeRyxWb hJGFLG6ppLcJm9X3
nUugdV15cihiQnnA024nDhFYde1SqqrnJRsGigRzLEvYljpXHrjjujyOKxuE l9N+6kkV1a21p0tt
CTX+8gVQ7aNz5BDsdhDwqOE5ccxjAyuEF1dKSij968CmnE5W/hIZ3FHXQr5Z alTS5uVqQl2iGblj
8oR6Zr6B3p3CPsHsscaua0QFl6RdwLz2QmKlMVyXHpLWXM9+x41TLPxBSzr7 MxmuyXwbGrfPDqOs
6yFZ2d1UqCatiuW+YPHzWKOgffW/2FzKmriH+ylb0ZGL2dZ52XNFPMBySqyk 2fLrJ1g8nkAq404z
eKjXR3isZ0E61SrM31BLBwif1CpG9gEAAG4EAABQSwMEFAAIAAgAqoDmOgAA AAAAAAAAAAAAAE8A
AABjaGVja1Rlc3QuZWRpdC9iaW4vY2hlY2tUZXN0L3Byb3ZpZGVyL0NoZWNr VGVzdEl0ZW1Qcm92
aWRlckFkYXB0ZXJGYWN0b3J5LmNsYXNznVbbcxNVGP+dNGUhWVpoodAqd8E2 bQkgcmutYkuhGMql
tQgqut2ctgvJbtzdFqs++O6Mb15gfPFFXngoM7Yd8P4C6p/kOI6/s7tN0iaQ 6GQm59uz3/f7Luf7
fmf//OfRzwCO4BMNMYFj5ow0b41Lz08XXGfOyko3PbiyNeLL/KVo93TWKPjS HTZM33HnNcQFDpRs
Z30rV7Jbq7tO4LjjTqelmbMKnkzL/FRaZq1yl06+4HjSmMzJtcbrBXqfbTwy OGPY03LU8a0pS7oa
EgJdNUyGLI8OlT+BLQXDlfaaqFmaTF0xZ1fb9Qk0maviEUjXQFqTgILwZgsF x/Vldny+ID2BtsxN
Y86I6uzkctL0Lcem5oYxa9o2/FmXiaSqKvWHuzm6SF+cvMnNvgEatubnB3OG 55UfskBnpkpDXKjU
JMC6fsu2/AGBhs6uCYH4oJOVCTSgXcdWtGl4TqCnRgVXpZ1AB9o3QGCnjo1o 0rCbQZYSOu26xnzG
8vwEdoV6+3Q0Y5OG/QInahT4DB8te3rIyRuWXZ5HEi+iS0Mnu6Ba7XSk0M0M jWxWYGtnZSW7rmvo
Feiv4X/Md2dNdUhZ5XzQsX023EoMGtLsthoI466UVW0PCxyqYavsMsakzJWs XhI4XIcVDQrS9efH
nFnXZIc1Zyxbjs7mJ6U7Hg5PS8YxjdyE4VrqOdqM+zMWm/ZEtWaqg13YXFtM Vxq+jDoves2x7uyq
mCXTyecdO22rNppPR6p9qkH6dLRii4ZXVnHVs9o6gX68qvr3Ndansz5XK0Gr Idg45hvmrQtGISrE
1mnpX3GcCm7pq5JHnYwYZHZGRxJ6AmcxouGcwNH/Q1U6XsegwDZP+peqMuDJ ygrURYGqEpssL3oc
dlxFYmrSRnVcVPO03mQXcxI9xReXdWTUZtynlmqoiiETaDSUBwGz1pkUObTK qNbZOSqmqzrG8SYD
tYskXrdn9n0VoqgWT8VWgkd7Wfl/V/kntbzHkStpBe2awA0YOiZVyRKWN2J7 vmGr2VznBCACmhFm
omGK57DWiUCSbKaIVNoqr5qHPBJkNh+SddGQh5yEhps6pjHDRrerKdW+RJ8C zhvQlXlnTq7sKF+O
jrzytXnKcuUqO16x9R2PaQTXZhi7p6OAD9QQkat0u0yBN9d/gWPJs8H3hFT8 wbm6jTYeTkiaw5Yi
gs46aO+gOirsYQ808NfICDcgzh8nnV9scXUpBisvPepsphxDC5/JcZST3OO9 y/9tfPqWCILr1dQy
tqd+QMe1ZTy/iB0Ud1Hcs4i9qe+xt+WFhzgQo5aSe8rkg2XyoTL5SCg/CJwf 5f8BBgkMM4xjDGyA
d/hZ7p3jB+YIn87z9wYmOOAvU0sPQ6Lmca6cE5yMwh2jvXq3nU5OPUEzw+y/ xtAHFnFKbS3wXUPg
r4krOAKcDSY+WYa7PcI9HeiKVm6S3yIH57kqpVaiDT2BlrqHhBKXMFzCXheo 5MowW8sw+b2cHNZ4
LiJIKsQdYBliyjTVvYihUlkSwe4ctW8HcG2hVgSnpGTgQijui7AmIqx2Venu h7gQw11sTHUv49Jd
NDbcj99fE+mnZdDtReh2XGE9xUodtlEkl0U+zgS9xWRS3SzvxEIx4BDxswBx d6hSRNTwFq4F77UA
OxZAXo8gP6d2nOv+VM8S3r6DnanunmW8M9rzG27cQVPPr7jRu4T376Cxd0GU it3G2gBfYD2+ZON8
xb7/GvvwTRBAKgQsBrAfZpCSksIAmtnzWUoNQZpJxP7GHg3yr6CkZKQotsGo pEmWdAdLasWw9oy+
43qvrJDJotckbrEZFGD+qYB2JeAC1wc1AMk7EaAZAXZEgG4Mqi8fBx6Gupfg PyiWrCUoyyPi/8jx
/4kn/UuZn46inw7MsvWKHdBO8XaRGYajSWhWc/U4mIJTS/iw5CXM4ndO2h9l k9C8erqauPlRkPjH
/wJQSwcIWENJVLQFAABSDgAAUEsDBBQACAAIAKqA5joAAAAAAAAAAAAAAAA/ AAAAY2hlY2tUZXN0
LmVkaXQvYmluL2NoZWNrVGVzdC9wcm92aWRlci9NeUNsYXNzSXRlbVByb3Zp ZGVyLmNsYXNzlVZb
c9NGGD3ruLETi0BMIdzacq9jQ0SgJaEOAcckNNQxITYJhFKjyBtHIEtGlgOm tLRP7XN/RR+B6YSh
D52+daY/qtNvZcVXBTvjGXm12nO+81322/33vz//AnARPwfgYzirbnD1SZaX bblkmZtanlvyQjWp
K+XyvM2Li+5cAH6GcdMqyFzVtVKZy7y4LvO81gRrXp/IKyVbwPoZJrvAZulV Mwo3zKKiGa1GgwxT
XdAZ26qodsXieQFNmobNDbvBMMhwuQtD1uLcEysxXOiCFbiUssb1Bmqoe6Bc J0vcsqsZs2KpnKF/
SjM0e5rAkVQ7XDWLRdOQDdPW1quyG9s5RbVNqxofXWbwJ808H0Qf9kvYi30M e1OawdOV4hq3ssqa
TvzhlKkq+rJiaeLdnfTbG1qZIZLqrQriDENKi3WGsd2pZThY4Pa28zd4WbW0 En0hFacjqcfKpiLr
ilGQb6895qodH61NVWxNl1Na2Sb8QEYrGIrIOMPDHiBTHQI/kI2GoPh0fAAM n0k4jhMMI5rnKpK9
r12iyMMpCUdwdJAIzkg4i88ZDiv5fMK2rU4OhgNeblBa+01nLJLX8Z1hT8ZW 1CcLSslJphB7TsIh
HA5gjGHiw04nzWLJLHMBbE1QCOdxQcI4LpIsytSSadqJtpTHI6NdYrojfVyE 5AsJX+IyeSX4ednZ
AKI6nVjIHuRuRTkhbgPEg5hkOJS7O59zCzanUJRz69wpEWHuKwlxTFHhkDnq FtRqqO01R7w2uV04
zVNB0IY8Kcg705bLu0PNNIK4ToXQLMKulhzjM8J4kuGWh8FeZjxEDWAWNwOY YzjV2LbJ7dEi1YRS
4KdTVLCWopclfI152rcL93PJVCKTyeUS2ewSedWZQtW0uDy7xNe5xQ2VO7n6 RkIKCwzHVIsiyr33
CmNHd9m0dpXiniK3gzfbx4Oiz9UqIr66utq5mzoJH3jloqcDsL2RhHAbdwJY pCS0dgoJS8gw9FFn
2KEHrDIEqWrni5TRtqJt7XbNU0Gs0N5ar+i6TP1j/PJ2Jw/hPh4EQJyxXURf Qhbfdt8wrm1RMt9J
yOERg2RucktXqq76SQ/1PfnDEKAYZPlzu3sIXGXUHGt1l9ygWZ4XbaVLgabF n0Yu03am5iscWZdQ
AGGHKqU81X5yQ9PztDNEf9ckqOKTZDTBqAHvxgjDEdXUdXIhzZ855C3nSizS dLAkawsFzPuouOa9
eqpz9bQng3CqJEFHkWG/4aXnoLcc8aHlZkGNz71dRHuXNIBNPA/gmfeFtN7c xFVxUa8UNENCFS9o
d8ynM9lEOjm7wyXGA0mKB2uXrjlNqDzkcdEZExIpu/OGwS3nKy8H8EpkbMeO S2K2ey5OUPX04SP6
BTCAEPbQjTtIc3Q3o+cwvU3DRz+gPxp7h/AbGvnwMT0HndmLhLyEAzQ6WFtF /yOAM6ITnjiYuF/Q
t2MO8hOH85HLORL9A5/+gyFBfXIlGtvCaTHzmj71OUbC8NPzKombJmnX6X2m ydhI3dgIIhglU1EH
yQSM7jKuB78TVCyfFNxResT+xvn3kGn5Fi5FwxNbuBINXw1PhK9tIfEWN/x9 fsbYFm69R9qHlYbP
MxQV0DHjxwL5nSb22yRnkfy7gzPUIyPIkIwsybiLGJZxDit0S7mHMVo/TrgJ amwN+ZN1+ZOufEbY
u67qWbIiVg1HY0JmePk97vmwhYev63L6aSloezcoh+uUw3VKBWsuZdwNeyAq PL3STmQ0EQXqRIE6
EfURl+imSxQSKeMiexuNIA1RBoAXFKDvqUheNpGG6qQhPMYTIvOLfVwvDsMh f0D4Pkdl7Nw7mG/q
xVCruF9I7a8O6fHasialT2E5ntQ0+1CmseTOPIXteEEXOteLMecd8L9FpT0W vzkWali/a8FHDonn
S/zgqGGUox/xU//A/1BLBwilJ0txoQUAAKoOAABQSwMEFAAIAAgAqoDmOgAA AAAAAAAAAAAAAB8A
AABjaGVja1Rlc3QuZWRpdC9idWlsZC5wcm9wZXJ0aWVzdY4xCgIxEEX7gblD wC11cgEVLBS20MrS
RrNhjWQzYZKA3t7EbmGd7r0Hw0dYqa3h+BE3PvMeG+oZN9X1Q4eA8HCBXDC+ DDapnaL1DUHNzxkO
SS+E8/F62PSX01KLvoz19Xvy/2MUjlayswnhdZdEhqfovCWWwUpbg5C4iLFE lZIYjcAlx5J/om6v
4gtQSwcIMQSwlowAAADwAAAAUEsDBBQACAAIAKqA5joAAAAAAAAAAAAAAAAr AAAAY2hlY2tUZXN0
LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9NeUNsYXNzLmdpZnP3dLOwTBRgEGDY zAAGDWDc0HDgwIGG
hgaG/0DufyD7/38w6z+IfX/+faCUg4OD4k8WRgYGTgYdkEaQGQwsegYnPVfv tXj95ZsK/8NC1+2m
rLdSErwWLPxqo/dxmtpVs/KelZr8ussZO92OTBQSZmSwBgBQSwcI8AWLyXMA AACBAAAAUEsDBBQA
CAAIAKqA5joAAAAAAAAAAAAAAAAgAAAAY2hlY2tUZXN0LmVkaXQvcGx1Z2lu LnByb3BlcnRpZXN9
UEtPwzAMvk/qf7DEjmjAuFIkVEDaYQNplGuVNW4b1iVR6tJV0/47SbpqDwpH +3vawegKHlKlWyPy
gh4DN96czW41nvFxMApGuqxzIRdsgxBCVGC6/sCK4IULgmWttTJkSUZ9C47m QGuaZoJbttElTpTJ
nU0Sz5LIICOMClHyhHBLlrm73Q9jUwfe7f8m3HeEAVCpkoR2bf0WFtg4G4il behNX+2+Nvhby7FK
jdAklDzqGUjrkDoCqAyo1ej9MmWACvSOWefocbuqsMSUkMNuup+cxizFqhQy /y+o6iiDUae+11D7
g4YrCAOaGZQ06b//bpRGQ+3zIVqZixYfRRd2uME/t5PO26hkVZX4PiHMW/Bz B8ZyLVUje/Bt9WUr
9soe5IyYI4TwycoaL40ZkUn6A0J4suO5/ojFstKYikwgdy4/UEsHCMMj1TVC AQAAzQIAAFBLAwQU
AAgACACqgOY6AAAAAAAAAAAAAAAAGQAAAGNoZWNrVGVzdC5lZGl0L3BsdWdp bi54bWytkt9KwzAU
xu8He4cYdttG8Uak3ZDpYOCFsPoANTnrgm0STk7H+vYm61a3oQhq7r7z5/fl JCeb7ZqabQG9tibn
N+k1Z2CkVdpUOX8tFskdn03Ho2wGstbOw2ftbaiNqZC8SpLxiGXSug51taFp VOJUhsBkqSbjUZL0
La5uK236DGMZ7AhM5DJntaGcW6zSg2UKzToFpSnVBM0L2q1WgA+qdAS4KCVZ 1OD5dE+KsPU+1h11
f1rUOd8QuXsh5AbkewGeRBz4vE7Wpfc5H0pSdzBM58fQ8rtrdBcs3zpnkUAV nQOfnycZ+3rIwW/5
FGT4h0fblNqcml6C2A+gFWErqUVQkTK3Jjw2/RZWIMA/YCLiuXyD+i+A0OsA qVvZFiVw0e9AJoZ1
6pdNDNv2AVBLBwhHJ6xqKwEAAPACAABQSwMEFAAIAAgAqoDmOgAAAAAAAAAA AAAAAD4AAABjaGVj
a1Rlc3QuZWRpdC9zcmMvY2hlY2tUZXN0L3Byb3ZpZGVyL0NoZWNrVGVzdEVk aXRQbHVnaW4uamF2
YdVVXYubQBR9VvA/3MI+bAOOP6Bp2BIshLbbss1b6YOON2aIzsjMmLaU/e+9 On6sbhIWlmUpiDoz
13vPOffDaLEIfFjAkqvqjxb53q7cOpputJtXm+yqeYkCv0r4IckR+B75YYvG skqro8hQvwv8wBdl
pbQFpXOGvBCVQYbljnFVlkqy+MvHb0WdC/kE29qKgt2hUbXm+FnxxKqLIZAr jQMYFjfLOBP2QcCo
47zdCwN02T3xQGl1UoARMi/QKgk7pduTdc8QkNxA1fphTqQ3YQgp0jqsDeow UxzCcDWeocwen9zk
KFEnFrNeyzotBIedkASAF4kxY9AROuBvS/4MDOrB38D3WjIeuf2EWAFx4AdQ uxb5wIU5i7NwvfN4
vRlgr0XsdZCNTeyA/BTmze337YfbdQzvQeKvUybXb9ucvBYPLY600RPZlFWB JZUCragEqrFmRnxr
jc0XDTAh6TvJ8cX0PalXm3bP1BXq5gXgupF21iLw46ezA4D7RmLvfkrjDm2t pZkKPDDqpY9dZ41V
/yyeuo15JiQ7K8bN1yNqTe08CjNnm2Mnz+ygV6uLPCT0P1Zj2nqzih10eCrx LUVPuK2pf8XU1Yzz
Ml05z8soXb30QHFDcMZtmH8O0YMZ2NEZu9NAMpXyMtpLcB/h7QD3iKcge9ld e/azjQBGVGIllim6
n0rHcwKRjNqHyxVNTEv/pyZlTc5c3uj2D1BLBwhaYthJGQIAALEHAABQSwME FAAIAAgAqoDmOgAA
AAAAAAAAAAAAAE4AAABjaGVja1Rlc3QuZWRpdC9zcmMvY2hlY2tUZXN0L3By b3ZpZGVyL0NoZWNr
VGVzdEl0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3J5LmphdmHNWFuP2joQfgaJ /+DV6UN2VbLvZ7fb
rba7ElJ7Wp2i826SAVycOLINPajlv3d8yRWnwKqsKiEgzsx45vM3l+T66mo0 JFfkNhHFVrLFUt+5
6+v2gl18NUlfmT/Xo2FBkxVdAEmWkKymoHRcSLFhKcib0XA0ZFkhpG7cXWvG 44fy8l1KCw3yiSZa
yG1T4yvdUCf8Tkq6/cCUvgncfBCcQ6KZyJvKQi5iSDgrFMSQzeNEZJnI41xo Nt/GftObI8X/MT8s
oX6TE3TaGHQ1IGU1WAgJzRfQ0DtOS6CUAjrjsAflKQbS52lPnuf15D1TuKvx +miVR7xk+eK9yCjL
JxqyzzXNjrNglD7QGfBnaaJSAVJvv4i1TI5320KzdTClhsSQn7DxFy3XiV5L SI0LDyJHdX2y+1MJ
ENYfDa992k+XTBH86CWQuSMB/qfarK2RH0QL4i1aGYamJAqCIjlA6gTUurD+ /MfgG0gVe8tAqGOX
IgsTPtUoPjP20Xi5WSLyDeJLHj8+leIkb2SeMlsKklDOldnr+z1n+Yr8NWcS WiCTvZVdwBHKVe3v
o8POBGjPmKglgPb+oylwUGRCIdZzG39tSAKK43dKKBaABcnWXLOCG4iUpjki 5OzcXozHZAYLlo8R
UDlORULG47v6HuTp/p37CrGy3q5nnCUk4VQpUtXRZkK0U5nA/3joaUO2cx85 xCFDXqBIXzV5TTqZ
jgt1DpPvo+HAEmlQMmkFUOAxSWwOJWJSCF2dbItiKXBYYIj2XC0pOmKxs9yL 4KAfwkEHw4EFcYAn
rbFt4KGFCyAp8ETzUHvqBNpIjwrIkpsn1c7dOYPs7IXtuHX5BnP4G2nLRJeh cDvnisloz9YnksFh
W+A52nbvkrzMU6Y8ik9CTlGIdBfOCkA9Jtx+mn3Ff3e1z1PrssOgmjVKsTAM WKyULc1I1bxK9DME
4JL9iDSPLm0WDtpRxTRNo/7WGdsqYiIMK/6y/RxS7uk6h9T2uvQxCu3m3NDY Heaw4a/Iq4ru0nku
pCW3Z289vn7cPhjju1Z1Pxtt/W7NMyPZ/lqQohJsSUV+VtXUBNUf0u8P5P4T tnSJHtZU9qz17vmt
/WLJYTYnUSBK8gZzdM25lxoERWwWB2CLTF9xJHKcGEhAZuc9cAaJ4zTUgW6G tUFjnqnWeHO+0tDX
snHU0v+ik+Ey4YMPdbkSZvLWRfB3UCruMd+HncJ5ygKX+H77J4C3ESw1nn0O BBidMBh4UI3PcRjS
vnmii9V5k28mBAfTsDqtN3LNzjbvNkE6Bbc8nshJ/vhhBLBE7xm09/u4UA1K drBHEzOlmV7bAbDx
+MG0Ao4zhltdwdYWsMbw/aIFy+4ZVSNTXg3Cv8IOfXR6tXhVh1705L2Tzhl/ IexPKABTgMNHWtbe
pj1bdpvBloYrEjiLF9ZE1Tix9drKe/v2zjIpiqLq2moiqyZeNvIbXVYOlCDT 6l3OwFb2bnk3layP
hzg+4Bfh/qn8vGUGNysf/6PwWwHHqe6qD7g9scdNa2G1/iaWiQ28XNxuv98Y esfgadG3HjXLR5P2
BjscmdLm7VDpPsfDSgO0vVcYUfMlZOu9SBikfQMtHTcw2qwM9quL9qQVHAAO b+ESMngM9t2BYSHO
GX4GZziBla+YZDm/7r0nislZgfeOHZpEK3wCN+PKRkVC/PoJUEsHCFCT19zn BAAAXxcAAFBLAwQU
AAgACACqgOY6AAAAAAAAAAAAAAAAPgAAAGNoZWNrVGVzdC5lZGl0L3NyYy9j aGVja1Rlc3QvcHJv
dmlkZXIvTXlDbGFzc0l0ZW1Qcm92aWRlci5qYXZhxVfdb+I4EH9Opf4PPm6l SysIupd9oVsVsXsS
UrdbFfbhnpBJJuCtY0e2Qw+t+N9vHDuQQNJ27257AkGS+fDMbz4zvLw8PyOX 5CqW+Vax1dpcu/th
80H58N00eWcvhudnOY0f6QpIvIb4cQ7aRLmSG5aAGp2f2Q/LcqlMjT6pru6d 6KjG9Y1uaFQYxqOJ
5Bxiw6QYtVBvmTZ1OalWEcSc5RoiyNIollkmRSSkYek2Gic0N6D+oLGRajt6 pdSd/WMx9Ta8JFXa
9QBaFiqGW4lyUj0nBgk7YIXuIpcGuuTwWmubCqaf8JaJ1UeZUSamBrL7Qxxe p8EK3dIl8H8kiUI5
KLP9CDpWLHfe/7j4rMTv1aIzo4rYFAoSq2QihQFhftj+uQL4N/I1tH30ysgP fU3N10wT/Jo1EIa8
pJIk1HGTVOI1+X7DmXislcrn7YRTrXdELr9hMUSuIn8ZDMgSVkwMCg1qkMiY DAbXBxqI5JRyswIB
ihpIqsItlpzFJLYHEH9Q3ZHzswD+QjQSTVr8QypCwyFDuDTeBN351y/JzwbK sXREwRFPkvPwuJk6
5DsSSuSDCvpYCl0erwkVhOENFciYKpkh6qkrNCQleFcWP8OgOvlOsINutIMj uIMS78AD3gJ12Cz5
Kiv87UXpUaALdDI8ImGaBTubakceK0Cohcu43MNDkn1l6jLhLNHpS1wa/Pc+ 33zZgFLo48F/27qv
OjrGNVmBOX2swy9l/vsy8ICwlISsVY0mHz4QUXDuOR12UYdur7SsWOSlSTI2 Rp1y1hgDC3oQOJRJ
hxFdscED8KctLPuoWANICtTWy09IRCUNOoJR30iWkG6HW1FvdzZCLSV8YazQ bmiPb8kRhGHYOe4u
jhLcBu1BStPkCi/6TpXNl6OZ26Bh18GeFPYWX6cLX3gLis4uPLi9LuZT2xdV nHAd6PVJt8ojmtnm
tWOOlx/cZNAtynX0+c/F5HY8my0W4/n8oeLHtgXVdYps0Eawqd51ffFij/CG RiuWvkkD8FmFgE8z
RKA1y3xlSRTmdOv4HEO/NeTRXlsvRaeHyPv7+6H3rPcyBrbouJ0uxODQ+x+7 o8tB6+McDXkOm47s
dunW5e8ahxwHTTKZoK+ituFqstySmHJuj/eLyK9FnqDBkzXjiQKxI0YS9wiH peXGTcV5gzuL4ymn
qNVku4BVRcmGwROuOPXD+uRpzeI1dk6So9FoEGquDk2ZgnL33k7Q3BUkuzdB vuyFon5uWH8DaNjv
I9GEJ2xwjPYzO2oqPeHqnBEekNbd0750INT2vcH+31NFM8BOstN+niwt+DaH q8g47WZN8V0Mt6Al
uBhhdhfCrqLGnrvfM38m3s3xE7sXvTt4KoGsT+bDO+CVK4RrIk7Z+qStShz0 zyhv1VQb8UdheXBV
ZxFVvvsQ7tqPbxd2x68v97/pPefb9I6jrtjaKBstZD+M7O5+zwu0K5rezebj u8mnPQT48zdQSwcI
cJaQuVIEAAAcEAAAUEsDBBQACAAIAKqA5joAAAAAAAAAAAAAAAAbAAAAY2hl Y2tUZXN0LmVkaXRv
ci8uY2xhc3NwYXRonZBPTwIxEMXPmvgdNr0zKxfjYVdizJpAIhhYvZLSTpaR Oi3TlsC3B/8QjQkc
vM2b/Oa9l6kG23dXbFAiea5VH65VgWy8Je5q9dI+9m7V4O7qsjJOxxh0Wh7E xY9CTrIrVsS2VlGM
Kj6WX2N5mjSej6SXDtA4ChHhzSZwOrNZHtJhNG3mD5Nxez8cN9PyL0ecUFg7 sLjIHWT6vkSBWdJs
tdjXp3YXsBzpjZ41vT7c/KNSsAjGC4LgOpOgfXa5I47nrHxOIaej24L4E67K 3y/cA1BLBwj0pbHS
0AAAAHgBAABQSwMEFAAIAAgAqoDmOgAAAAAAAAAAAAAAABkAAABjaGVja1Rl c3QuZWRpdG9yLy5w
cm9qZWN0vZLPbgIhEMbPmvgOZu8FvXnANVHjTdNE+wB0mK7o8ifAmj5+Admm G2PSQ9PbfB/z8Rsm
sNWnaqc3dF4avazmZFZNUYMRUjfL6u20e1lUq3oyZtaZC0LYogcnbYjd0R0x zRXWcEa4ntAHgkIG
4xjNdjoHoxTqUDPaV8ktl/ks6EC9d7IVR4uQVJGbGOVaZKcgjWsIQiutR3IR gYBxseA3ngP4Y4SY
4K7pEtsXTYcGow+UX3GtQLLnWn7El6//F3uMK1f8T6DF6VceeaFzWLrv4vm2 7+dpgNz3LJNGfm27
RurDQ6CvE/H7Lwy/2RdQSwcIKReT++wAAAClAgAAUEsDBBQACAAIAKqA5joA AAAAAAAAAAAAAAAl
AAAAY2hlY2tUZXN0LmVkaXRvci9NRVRBLUlORi9NQU5JRkVTVC5NRpWSO0/D MBSF90j5DxnoRizK
wOCqA1QZQBRFFLG7zm16VT+CH1HTX4+TtiFFRCpb7HPud44dL5nCDViXfoKx qBVNpuQujp68KgSk
y5Pai/e99MYk0GRSCV+iahe9smrkWgvkRwffAt99BAaBAp02M4uqFOACbe6M /xkbFhhUWAhmbc7c
liak33zkDmsWaEN+ZcCCcswFClmct7MuNe9q3jzLSoA8mwbRqmhZk8roGgsw F+d51ZwJPHQjNDke
uBff4cujgSLbA/etI1M1Gq3aEJq8sJqtsnRKHuIo21fauDRnfMdKGCseRydi egygiTYlAS6wskC4
NkCMVw4l3MbRHxpY7Q0HO6vR4hoFuobODUAX3o5c/o9R25AMchO+W/xe4vUT AU/8dX6PJFz7P8uM
9v/9TMK15u2DbGgi2KGJo29QSwcIyTAFPT8BAAD1AgAAUEsDBBQACAAIAKqA 5joAAAAAAAAAAAAA
AABRAAAAY2hlY2tUZXN0LmVkaXRvci9iaW4vY2hlY2tUZXN0L3ByZXNlbnRh dGlvbi9DaGVja1Rl
c3RBY3Rpb25CYXJDb250cmlidXRvciQxLmNsYXNznVRtT9NQFH7umJR1Rebw FURgTt0GtqCIJDMm
uMxkccyFzfH5rly7Quld+gLyi/yMUYx+8Af4o4ynZUYCBJI1aXvO6XPP85x7 zu3vPz9/AXiGNQUJ
hlWzJ8zdtvADo+8JX7gBD2zpGpV/4XUz8t9wryLdwLO7YSC9/LKCJMOs9CxD mI7d94Wx85GbwuAx
2jhZxDAa9Gw/v0Q09WF4ypThle3awWuGd4XhUtR3+D43HO5aRouCrlUudhiS FbktUmBIa7iGURUj
GNeg4DrDrcLFSybqtisa4V5XeG3edQRDti5N7nS4Z0f+IJiMSmZYG0ptfplK Tue5K93DPRn6SxHJ
OTUMI15IuztSKHZU3MWUgnsMK8MQapjGfQbFEkGTWyR/vlCsn25raBu1Lent doVr9iJIeQwPGHKE
0QcYPbT1fVsc+HrTk33hBYetnhBBGnPIKZhnmLk0oYaHyDOM+T150KE0DPpF HTinKsI2uReUU3iM
goInDItXbUF126aim05o2a6GIkrEW2u02uuNSpV4r+zZ6fVllXgXNTyFTq1w pHVmdN53d4QZ0Ogo
oDbOnZEfKa/RZFc/maJ/clhS4r+dO1vuOTxNwXgr4ObuBu8PRk9tydAzxVs7 cnKX9l2PdNJMV13T
kT5t8IYIenKbQau5rvAqDvd94VMHqTT6W7BMJjomZCXoVjBG8RRZFfKj7+nS wjeopcXv0I5i0AQ9
1RjMaGEDGbJux34aN5AFYmsSNylG+0bfThL2yY9Q06WvUI9xJzvzA7MJbH1G uv4FjxaOsXBEUBBB
FgZxR0RZJOm5Se82pfyAKWydIpweEE6S7mX67zE8j2tIbCowFEqxEit+gVV6 J+k4AS9j9Swmousv
UEsHCLnwThiOAgAAMwUAAFBLAwQUAAgACACqgOY6AAAAAAAAAAAAAAAAUQAA AGNoZWNrVGVzdC5l
ZGl0b3IvYmluL2NoZWNrVGVzdC9wcmVzZW50YXRpb24vQ2hlY2tUZXN0QWN0 aW9uQmFyQ29udHJp
YnV0b3IkMi5jbGFzc51TXU8TQRQ9Qwtr20UqfgtVqAVbimwlakxqTLTBhLAY EkgffJtuh3ZgO9vM
bmv8Kf4HX0hQow9GX3zwRxnvzlYhwUjSfZj7Mfeec+/cuz9/ffkKYB0PLEww PPa6wjvcE2Hk9LUI
hYp4JAPlNP64n3ux/YLrRqAiLVuDKNCldQtphjuB7jjC82U/FM7BPveEw020 kyQxTEVdGZZqROOO
w1MnhKdSyegZw1Z5PAj3gA+543PVcXbJqTr1SpMh3QjaIgOGnI1JTGWRwrQN CxcZrpb/nTLjSiVe
DXotofd4yxcMs27gcb/JtYztkTMdt8zwZKxqS+vUcq7EVaDe9oJBWItJzlTD kJHhhor52gypcuV1
Bjdwy8JNhofj0NqYwzxDPp7eUGy0Jfl2uI4Y5t3TMx5IZ/Pktm7hNkPtdIDo 7Tte0OsRIcUOpXgj
tLPZNHJHB0PZFpoq1gNl6m7mUEDRxl2UqKeOiJJIhlK54p5drgQvdJKoehbL KFu4x7BwXqyNChYY
LC326VG6tFbDEVPxfB6G6d2Ie4fbvD+acXY3GGhPvJSxUfzv067F06Pl2VCe H4Q0vW0RdQMam72p
lNANn4ehCLFAq5ii35Ll8/E+khZbFi6QP0NaAxPGk1upfkB2ZfUT7CMyJzBD Z5YkpVJiC3nSrhk7
h0uYBYx2GVfIR7tNdwngI5LMAB4je4zr31F4/xdwylwJA2YnYSMw+ulNrTFE SDImWj6BeIe5kfEN
hc9YZHCrP2BVP2LpyPQ0Y8qbpPMA0zik8ftYRA9L6J8qfXnEVqD+V1AlnlWT zZbouG/KXINDMk17
D9TMGyT90PcbUEsHCEUpvvlvAgAA4gQAAFBLAwQUAAgACACqgOY6AAAAAAAA AAAAAAAAUQAAAGNo
ZWNrVGVzdC5lZGl0b3IvYmluL2NoZWNrVGVzdC9wcmVzZW50YXRpb24vQ2hl Y2tUZXN0QWN0aW9u
QmFyQ29udHJpYnV0b3IkMy5jbGFzc51TXWsTQRQ9k8Ruk6wmVo3fWmvaxhRc sSIVRYxBobDRh4Y+
+Da7uSYTNzNhd1Z/lw8i+uAPEER/kXhnTRF8KCULw945e++Zc+7c/f776zcA 97HtoSTwMJ5Q/G5I
mQ3mKWWkrbTK6KB/BPdit38u077RNlVRbk3a3vVQEWhO5XsZJFKPg9fRlGLr YUVgy6TjgOJEzTMK
pm9lTIEsOIL9Aek8VJklTanAip2orH2PNYTLiHjMDE+UVvapwKPOchR3DgUq fTOiKgRO+/CwWkMZ
DR9VNAXKHZfQCJWmV/ksonQoo4QE1kITy+RQpsrtF2DF2RHYW0pJe5ftNGbc n15kcjs0BxPzQaDb
CY/v5kBqOSZnpI5LuOLhssDmiUp8XMU1gWo+H0lLvSRhB503zm999i9LYPuE CgRqByZPY3qpXDc2
jrV7100OG36h48RkSo8HZCdm5OG2wINl+udjEy2eyPgIoqFx6gT8fc3T1k9k llGGdb7nMq9TEM2m
u27+FUq8qqgxWudoj/cOqXV3PsHvfsaZj0XOWYcVX1z1D6xx5HPs0HM4X+AX 0FqwPFuwrO5UvuBi
Cf9z/OSzfxUcrb95Cw4XXceNQuXNomYdt/hdwQba2CrqRXEqP38AUEsHCHEI yS3ZAQAAywMAAFBL
AwQUAAgACACqgOY6AAAAAAAAAAAAAAAATwAAAGNoZWNrVGVzdC5lZGl0b3Iv YmluL2NoZWNrVGVz
dC9wcmVzZW50YXRpb24vQ2hlY2tUZXN0QWN0aW9uQmFyQ29udHJpYnV0b3Iu Y2xhc3PNWQt4W2d5
fj9b9pGlk5udm+M0cdI0kSU7yq1uE6dOHDtpTW0ntV0H50IqSye2ElkykuxS WsaADggtDMZYm5T0
MralK6WjgG2UQJaykV7pLsDGxgbbYGODcduFjY7Ge/9zjmRJVnxJefasT+Rz /tv3ff/73U9funL+
IoAtckJDkWBbcMAInuw2Ekn/UNxIGNFkIBmORf3N6emmoBrvCcSbY9FkPNw3 nIzFNTgEu2Pxfr8R
jISHEobfGDzuN0LhpH847A+YJ/x7OQxH+1tig4FwtDCVUsHWbConjgeChn8k bNxtxBP+1i4jYpjn
mgcC0X4j1BZOJI2oERcsVDxGDMUiFj8QiCcFK9uyKVGM1snVBsGiRJrYgXhs JBxSVDa2zYZ5ej+J
LE8MxO7meMiIJ8NGood7rYsJ1hagZQPRau3h+Yq4cZwgD/SYTNJHy4NxI5A0 mgfCkZA1lxAsbTsR
GAn4h5PhiL85FrFlIY2yrnB/NJAcjhuCHQU37ZxZlEYSWprFtt2IDrcHooF+ BcuGac5nbSSJxRaJ
rnBfhJrOyL48ZzqHdunOcDScbBQUe2p6BI7mWMhwoRgrdCxFFSc8rTU9Gq4T 1F+LYa7bXIbVWKOh
WlA7EwHbPiLD/eGojrW4XuBs7ejqbupo3quMYy7nG5y4QVB97M7WY11TbOTY ICE4Fk4agy5Kt0GH
BzVUZL+R7KLg0X7Beo+lyQjt3G9NNtRMnXJhJXwKqVrB7Z4ZBSyEUEMBRj1l 4H11uKFr2HSt0G9x
MqigSkHQmW3m2bf3w6d43ahjnuJ1k2DzDFGkLRYIdRqJ2HA8aFhsXajHdgXC MkWqQcdO3EInikzZ
yODSNmfqDRp2CepmONcTiIRDNPG0RI3YroTZo6MZLYL5IznrAv9MguQSpBD7 aMAznDHBj0XSMuy1
ZGjV8SbcLpgXzF7OD3YzkaNzL2gLR42O4cE+I94d6Isw3JS3xYKBSE8gHlZj e9KRHAjT5+uvzRoZ
E4PpodEd647FItxBBXimCUL2rnQcUgGjixH4qge6jKFAPEB2Ttypwq2SKEmJ 6hJGUqWohAudOKhM
6s2CJYVcsceNQzii4bDAM1u5dBzFWxjoAqEQDWC6+2QA4aiVfkJ+TtyloMlI SiJhO7rOT+awEXhn
DxUzZzbcKjTz/HSyZQf8mh4Vqo/rCCKkYUCw7qrnso45cYIpQYWFvMhpBgYn IjS1jO2oc60tLvQj
qvQRYzYqoI9CGnLirYypGZzcSGBYAwuDG2Z1OR0juFvgDkcTDNxNx5MK2aZC vOeox3uYVdJ2poQ6
4sR9As06k3DiV+iqGanrjGjIiV8VVJp4TSbo7CDaj4PK0d+joxwViuSv6Xiv El63hN9jHI/FDSfe
b0fj5uxsPElI0fiAjiWo0PDgtQb9rS48gA8pVf26YPs1piTlXgl8RMdv4KM0 BqKhFDNZ7flmMtD0
VtNCBR/T8VsIqSoxFLo1EusLRDKliXswuxqZnxjuy5lYQE01ZZWWgtWe6epK yyM+ruM0zig8H9Wh
waneHtdRBpcbv43f0fCJvGA+U6mp43fxe4JVcWMwNmJcvQy+uRAwM5bPJt5P 4ikNvy9YcfXb6fgk
nqapqjqFBkNP8tRMAeNgLH6yz4gGB9QJta3BjWfwaQ1/IFgz42Ydz+IzrCMV i6n1+aY8fjNW6Aru
z+kYVeBVUflXQ0DtG9fxeaToNNm8Gd5nyZMp+gLD+tW35vPeO0JvcOE8vqi8 5aLg4OyUl7nc7MSy
POCSjufwJXpAIk8KNnzTsS0odINZqQ+ZXda8rmQgeLI9MGRmf2Xol3XMxwLF 9AUdL+IltlohYyg2
NBxh0Mk41m2zzX/pXFO4/bFK1Vd0LFYsz2Ncw5+wtJkOmWR8OKi6pUljcONV /JmOP8dXea1E+O2G
2Y20qumv6/gL/CXjAI1iXzjOTBUxGCB48cWe7Hp8f98J0qIN/JVgS8G6KmS2 vZY7ZbrgtC7d+Aa+
qeNv8LdUEVnlbFLFT03hYs0mmrOdRv9t/L2GvxPUzPqQjn/Ad9gCkneHcbeZ YVqMRDAeHqLvM0zu
9Ey97NSZmsJKUrbwjzr+Cd9jeOlX/qayWIEet9tTmMAsLf3q3P9Fx/cV95W5 3HP7VLXxX3X8ED+i
vqcY7KFfjsEWriUT+ImOn+Lf2A8PD6myXzW+h5SblRgjprltnrOTslyMFlLl Es7aF8+ZL0tMBr31
s0Oc4sZMzatWYIo1cDVkG7BvDuarPnXktBX3DKVbi8rCnze8jQ2aUHmLC61q UlSwLp16HcG9he1P
MXgjJjir7y+alFBjk8eb4vHAPSo/ucSB7W5MiFOXMnGxemSeNLsXIuXJ5thq zze4RZf5msyjWqau
6rJARTRH1HhbUpNFzKoz9YH5nuqShVLBpCWLpyStvHJodqgVCCQ96sJL2THJ srwOLL3jkLpkpS4r
pIolyUAg0cH7mIH7EKu6ULZluyZHmqy+WoDOv3BOcHDJKqkQvPOXEgR2+mZj EIUihSbXC6pnOuyW
G2SDJuvzPlvMKC27BvEIbppbk9OUzsSKrVepzKcqw9mcoOIG0/HVP0dkWawH s9urltwYZMvNGBSw
nfuN6EKTrUzM+dQFg/+H9mABXK/LTXIzgwAztWopE+pTQs3huTShmuwo2H6k P44M9+Ufccl22anL
LdJolcetUWZRtcBSq2B5PA3v3QWLZPuAddmp7HfJHl2apcX6SJr+grVuWt42 cCqQ7NPlVhVInMpi
mGMSCslWXd4kt9NArKZqDhneauXnspl5PGwpq25OqmJWC/PXmv2Zxl6jCucG fLsm3QLv7M+wClK9
cFNfbDjZHVNfsdnbykFd7kTIKb1MISpuFi4Wpn71aXDKEYbi4XCd/aWDVY+8 RceIeNyyVu7SJaAi
eVk4sTeqsn1IzQZ1CamqyMU23J5W/fXH2M1ZWmuKRDqN40acPaSR2B9tYU5R xZOry/yCuy+sqoa1
035s2Kg8kmZt2nRzJJBIGAmsYTVRzF8JnHCoDh7gk/27+XRDN5/z7CfbHe5d yPciLOK4HBXm/OK8
+SXmvM65pVjGv8s5Oo1SvgH7vY5xVHovYGWv9zNYVb5uDOvH4R1FHef81txm c27rKLZxrr53HDeP
YgdfG/m6exRNfN3L11tHcduzJtM2/l1PsYGP8yrtZNWBSgSwAn2ow1ncjEfR jMc4+zhXLdEoCsf7
+RQcwB22mIcpfhGfq30X0Nlb3j2OnhR6i2ANj6WHk2znEz/gKSLwSazC0yb5 pRYJm7x6C1AQVbkF
EbIYiYeCqpPPeH3jMC6gv1fdPMybl58cx2C7r3yoNoV4MWpNzm8zOb+9yB7e mzscyh2+Iz30pum+
00T0XaN4d235kPdzeHcK9xdPLr8vvXzKWj5lLpPYA73ecXwwhQ+TVu0YfnPy 3ntMfY/zFinq+Dyq
QfXhC2jEF4nBRRzBlxDDH+FePI8P4QWcwSt4BF/BJ/h8El/Fp/A1E6tqC4UM Vs/gIVqPkOZDeJhv
RXw/zdOWel4hP4WtoVB7xOsbxVmK+9hlzFMPbwpPUFXPw+2VUTx2Dru9vhTO CUX8lIAz9qbP8jZ8
S2GMXTyqCMP5XnMpPTmOL4zhD9Vli83LbqQrAN8i82/TNb5DI/8uqtjnrcb3 sIEdVz1+gN34Mff+
hAr+9ywjMDIXMwiGk9f4Y75T9VXunRw8R5Qse/is6X/Ai0o7l7HAq578fXkM zyuN2FOn+HuZU9Iu
Hb4xfGWHo9LxHF49jaZKxyW8msKfMlw9jq326GuCHSU8cvYSvpHCX3NUWlla WSIpfKsY7ZWlUlli
vnZ4vbWVjjF8dxRf9nrr1Os/j+JlS5YVGVlkDD9Q744UfmxieMpeNcWyV09Z q8+aoUGh18OAoBxO
Exb+UowVLPTXSxk84oJXdGySedgn89EpC3GXlOOkVDBaLse7pBIPShU+Kivx uFyHp2Q1npVqXJQ1
eEGuN1G+zQItg/KLRP8/yMyDJ/CfdEpKSb//Gd+KsYmG9F/4b0rViXX4OV6j Hu6inv4Hv2DEeN3W
mXXySubkFZ5UOitHSUX5FezXMKH+iWy9jpTY63OnGfp4M2WiPyOtUj6bLoij d1xKO3yXUe9LiaZU
cQ5riLi4+e6ouyALldmdJfLjUp6SJUU4qFaXC85MfLPu0xkAVyiCUgenbIQu flTLJtzI5y7ZaoKw
jRchwwwITQRsgRnimswLF9HwtuM+E4RqLCGUr5Hy6xkjVfuvcL+1a5F94ToU T9ANSzWIdWH+pQ6Z
Cq6bYKx15MwrUb//hrBYNYlF9YxYNBKLXcRiN7FoIha7iUXL/ycsfogfZbBY Yzr4SpJSWDTWXsbO
2gwGG2wMLslawkAv99H7UrKuGOfg9qnXmiJkkPj6pFetUpYvd8AhnaiSLqyW bvjkILZyfIsczgKj
MQNGo9TSjMScu8/0DjW3kaZUzHi2nGal22Do6V2ymbsUBEfgmOAREwK5wbzt FguCCZ7NmdZkrb2g
Fd5vI5aZVnd6ES9lENtmIraWY+XdR4nYYVrNjYKO4nrHOdxat8SxRYE3r7Lk kmwfk4YdJZUlz8n2
MxM/Vc9dp5VpXZJdY9K0o7S2sjQle4vo/LpPAXkbTet+hyxx1F18YuLzk4DW s86BGAT0ONzSj0Vy
AsvkJMNVBOv4rJW3YpvECVgCrZJkuOrHEbknKwwdzQB9NAP0URtoN+6QNmkn 0PPRIR2yn1yXoUEO
UIUlBHqxCX5pFvhHs8Cn6b2ORZp0yi/g1KSr7DXUFf1clVSqSLWT4zMkqZLp ASZH6ZH2vOTf7q1N
x3Bfhby51szxeRWAtefl3D15NZa8ByVyP1X5XsLzPqyR99PuPsCrPIC98iD2 ywezEvuBDCQH7MSu
oRUPyyFSdKj/WWXL/qCd2Ft85e9QNUyFHDaLGBZAFOQwhapLydFilXO2qV9K jjGtS19Renmbtcyb
G5PyWsHiIZTLw/SPM9gsj1B9Z9Esj2bl6JaMjC22jDQB5h1LslqzcCNFx9MZ umYpK09m1ZJFNo0i
GoX6OyBhk38xVsL6z28/H7Ae/wtQSwcIsbOSZM0OAACOJgAAUEsDBBQACAAI AKqA5joAAAAAAAAA
AAAAAABDAAAAY2hlY2tUZXN0LmVkaXRvci9iaW4vY2hlY2tUZXN0L3ByZXNl bnRhdGlvbi9DaGVj
a1Rlc3RFZGl0b3IkMS5jbGFzc6VU4VIbVRT+TkJZiVtIEYvW1tZKMSSUFSi2 lYotgSoaGhwindHp
jDfLJVkIuzt3b9LxUfoC9LczNc74w9G/PkWfxPHc3YWWgA0zwmT23HPv+c53 vnvO/fuf3/8AMIdv
LGQIBbcp3b2ajLQTKhlJXwvtBb5TPnSvbns6UBOzFgYI+V3REU5L+A2nWt+V rrYwSLgcqIYj3ZYX
RtJpe87ahlC64kVa+lIRBnXTiyY+5VyVsyVb5Jh7nu/pJULpzEFTW4SBcrAt h0A4b8PCWzlkMWJj
CHlCtmAOjFQ8Xz5q79elqol6SxJGK4ErWltCeWadOgcMZULxjLknZpny+ZCr fuBqryO03CZcL1R6
dXkcqL269N2mEYgJW3iPMNdzquPJp5HjBj7Lp4O2bjFjp5wsq8kyh3FcsvEB LhOGG1KX20rx7oZo
MPcrhanexIaZuZWGXBzCh7hm4Sph8my12fgI11km9xiDJNXd3kSncl8rnwhd zDGNCRs3MEkY5wqM
boG/LJQ5q7x6mzMTVnpKkfs7jmRWJpWIIxxD0vMbK8G+8PzTUDhVAUULU4T7 /xfLRgnT3ERRQrgj
E4kIV0/edbKVXrRRfcaGA56CseNKbrFkZkomjyHs7ghXxnJKFTk1JdNzsXBz NuZxi6cxOrr6Q5Qb
hTfApBCm7z4j3Dz17kIVhFJpT0bORmL+vNmUUuewgEumjLs2Pge3+4Xw9e2k H+ZP74f/wjzqhC9s
LJkZHW4Kf7slD4eIQCFr22eMePI2tXD31kWYTm/e9PuyCtqNpq4FtYBBcsZV bgWRmcwRs1iR4tWs
xtvVkN8rs9gM2sqVDz2DNdYzDjPmBWSIVd9lNO6WdambAUfZaz6/duWWiCIZ 4Rq/QVn+nQPl8+Yp
4id3kH9DyLH3bbbuIMP/QK5Y+hV28TcM/8KrDC4YX7zD0fQtRtmy2TbedzAW +9/FxRTlZYrytPQX
xp9hvvQnxrt4v/gC9gtcOYAwVhcfJ59PzCfZu9nF7HMsc9jCM0xz2EIXt5Ot Owcongzr4t5zjJaM
ecCkE4+hnI0pzxg6tA6LHvGjVuW5/g63qYYl+h5V2sITeowG/YCAfkSHnsRl XUyop2UZ60vc58Ie
sG3h3K3MdGaYl8tH1S7ECnGeV1INGmnop9fw6AiPUjxCuT+E2wdipT/ETh+I 1f4Q3hshsngYn/8K
X/N3gCcHWIs7g+IO4b9/AVBLBwjtaeROjQMAAN8HAABQSwMEFAAIAAgAqoDm OgAAAAAAAAAAAAAA
AEQAAABjaGVja1Rlc3QuZWRpdG9yL2Jpbi9jaGVja1Rlc3QvcHJlc2VudGF0 aW9uL0NoZWNrVGVz
dEVkaXRvciQxMC5jbGFzc6VUbU8TQRB+lh7UluNVRPENkIp9AQ78Wl9CGjQk hZBQa/x4vQ7tQnuL
u1uI/0oTlUQTf4A/yjh3LUhJlCbeh9uZ3WeenZln7n7++vYDwFOsJzEkkAua FBxVyFjvWJOh0PpW
qtArnW9v1aVVOrPBcEcgo3TDo6Aljw151D7wAtVuM7wjvaqkU9J7fkgCI7Yp TWZdIFsejL/IMc9k
KO0LATlwUPlyNpzC9lulj2oUBs09v0H/PNa2mKsKOCVVpxQERl0MYySNBMZc JDEusJn9f/qJsgxp
t9Ouka74tRZ3ZrqsAr9V9bWM/N6mE7VLoDBg3SwG92s044cq/NBWHcONnr8m 2T78xjV4zl7ADTT5
lrqyCrzub4c5td6prDfIGq+k2sfKSEvFXB/m8MAPyDuJCUxvPopJ3L0yRv2w iqbenWnM4X4kxgOB
5YFu546ngnNXYGmAGIEpTe873NvNwMqTuN8CiWyuGs3CkosFLKbxGE+SWOY0 BhPIRRY5gRlDttTR
mmGXP45cfy1/+4rictL7qqMDeiWjMZm5cs3aoX/i85BthUGLqwkbO2Sbqu5i DYusd1e/SH2eLXc7
DEmXWr4xZLgorpH/AmJyMhp7tiIviRu8n2Jrl32HVzdf+IJ0fmX1DO4n9ocw we80rxyLYWcHk2wt
xNEupjANxNZNzMQYF7cwy6cCt3Gnx/2c/egs9R1z7wpnuPfxgniEIXD2YtLZ LuiCNIWHmOdzESnS
o3rJGI7AWP4Mj/KfOdOvyPzJczzKy6nAcd7AdaoxrdsN6NEmkI/RBazw6rDO q/DiCkWM4+c3UEsH
CASV2yVgAgAAMAUAAFBLAwQUAAgACACqgOY6AAAAAAAAAAAAAAAARAAAAGNo ZWNrVGVzdC5lZGl0
b3IvYmluL2NoZWNrVGVzdC9wcmVzZW50YXRpb24vQ2hlY2tUZXN0RWRpdG9y JDExLmNsYXNzpVRr
TxNBFD0DS2vL8BRRfAFSsA9gqV/rI6RBQ1IIiaTGj8v20g60O2V2CvFfaaKS aOIP8EcZ724LUhOk
if3QmTtz7tl7z7m7P399+wHgGTaSGBLI+Q3yj/cptG7bUEiB9azSgVu+ON6q KatNplhMwhHIaFN3
yW+qdkgutQ5dX7daDO8ot6rojMyeF5BAwjZUmNkQyFYG4y9xznMVKPtSQA2c VLlaDZew/U6b4wMK
/MaeV6d/XhtbylUFnLKuUQoCoxIjSKQxjDGJJMYFNrP/Tz9RUQHtdloHZPa9 gyYrM13RvtesekZF
ce/QieQSKAzYN5vBeo1mvEAHH1q6E7LQ8zcU24cv3oDn6gWkb8iz1LVV4E2/ HOGZdc9UrU42dMu6
1dahslTK9WGODj2f3NOYIOzNRymJ+wLL18NiSbrYNObwMHLjkcDKQI9nyVP+ RSiwNECOwJShkw6L
u+lbdRoLLjCczVWjYViSWMBiGst4msQKlzGYQxJZ5ARmQrLljjEMu/p25Pp7 ue41ittJv9Ud49Nr
Fc3JzF+PWT/yTj2esq3Ab3I3QX2HbEPXJNaxyIZ3DYzs5+GS20FAptz0wpBC bop75M+AmJyM5p53
UZTELT5P8W6XY4dXmS98QTq/unYO+YnjIUzwf5pXzsWI08Ak7xbibIkpTAPx 7jZmYozEHczyrcBd
3Otxv+A4ukt9x9z7wjkefLwkTjAEznFMOtsFXZKm8BjzfC8iR3pUrxjDGRjL n+NJ/jNX+hWZP3WO
R3U5Go7ThnROYlrZTejRDiMfowtY5dVhn9fgxh2KGMe/31BLBwgq0kUBXwIA ADEFAABQSwMEFAAI
AAgAqoDmOgAAAAAAAAAAAAAAAEQAAABjaGVja1Rlc3QuZWRpdG9yL2Jpbi9j aGVja1Rlc3QvcHJl
c2VudGF0aW9uL0NoZWNrVGVzdEVkaXRvciQxMi5jbGFzc6VUbU8TQRB+Fg5q y/IqovgGSMW+AAd8
rS8hDRqSSkhsavx4XId2ob3D3S3E32HiB/VHaKKSaOIP8EcZ564FKYnShPtw O7P7zLMz88zdr9/f
fwJYw0oCfQJZv07+fpmMdQ80GQqsZ1UYuMWT7Y2qsqFOr64l4AikQ11zyW+o A0MuNXddP2w2Gd5S
bkXREeltLyCBQVtXJr0ikCn1xl/gmIcqUPaxgOo5qHQ2G05h82Wo93co8Ovb Xo3+e6xtIVsRcIph
lZIQGJIYwGAK/RiWSGBEYD1zefrRkgpoq9XcIV32dhrcmYlS6HuNiqdV5Hc2 nahdAvke62YxuF9D
aS8IgzfNsGW40TMXJNuFX70Az9kLSF+TZ6ktq8Cz7naYI+seqWqNrHGLYfMg NMpSIduF2dv1fHIP
YwLTmY9CAjfPjVE3rKypc2cK07gdiXFHYKGn27njSf/EFZjvIUZgXNPrFvd2 3bfqMO63QH8mW4lm
YV5iFnMp3MeDBBY4jd4EksggKzBpyBZbWjPs7MeR7a7lX19RXE7qRdjSPj1V 0ZhMnrtmec879HjI
NgK/wdUEtedk62FVYhlzrHdbv0h9ni25GQSkiw3PGDJcFNfIfwExNhaNPVuR l8AV3k+ytcW+w6vM
5b8ilVtcOob8zH4fRvmd4pVjMeC8xRhbs3G0xDgmgNi6iskYI3ENU3wqcB03 OtyP2I/Okj8w/Sp/
jFufTokHGQLnXUw61QadkiZxFzN8LiJFOlRPGMMRGM4d417uC2f6Dem/eY5E eTnv4TgfIJ2PMa1s
B3Ro+5GL0Xks8uqwzktw4wpFjOPnD1BLBwisWRU9ZwIAADAFAABQSwMEFAAI AAgAqoDmOgAAAAAA
AAAAAAAAAEQAAABjaGVja1Rlc3QuZWRpdG9yL2Jpbi9jaGVja1Rlc3QvcHJl c2VudGF0aW9uL0No
ZWNrVGVzdEVkaXRvciQxMy5jbGFzc41SXU/UQBQ9Qwvdlip1QVDxA8zGwEJY wQdMNL5sICFZ0Cjh
fXb2ZnewTEln1v9lAsFo5Af4o4x36hINT51kMnfOnHPvPbf99fv7NYAdPI8w JbCuRqQ+H5N1nfOS
LBknnS5Mp3sD7w20K8rW9qsIoUB2Kr/ITi7NsPO+f0rKRZgRaP5DP46Nkf2c BGbcSNvWS4G1Xr0a
b1jzVhvt3gls1BatnwiE3WJAMQTupIjQSBBgLkWMTCBY84S5njZ0ND7rU3n8 t7tmr1AyP5Gl9vcJ
GPqWuXjN2jwU7jkoxybBEh5GeCDwop40xSMsCzSkUmRta1tgs7bjA+8o+VSM S0X72ve9cIuy5b8H
u94zKi+sNsNDcqNikGLFj2RWlSQdfZBDYrPpgTFUdnNpLVkmsCHe0xBZ5mfJ v8oU7xgJo7Mcvea7
R5L2xiXS9hXufq049zxWvbA6/IEmRynHHp3HQoXfRzbJsstM/xa3L5AG37B4 K0n4E43w+r8k8SRJ
gMcV8wme8hny3J9htVKJisfrD1BLBwh7PWcujAEAAOICAABQSwMEFAAIAAgA qoDmOgAAAAAAAAAA
AAAAAEQAAABjaGVja1Rlc3QuZWRpdG9yL2Jpbi9jaGVja1Rlc3QvcHJlc2Vu dGF0aW9uL0NoZWNr
VGVzdEVkaXRvciQxNC5jbGFzc41STW/TQBB922yaJjVJSkMIny00LYkrYUDc QEhVFCSkFCFa5cBt
ay/JtsaOdjdF4qfwL5AoSBw4glRA/CPErOteOCAfvN6Z8bz35o1P/3z5CuAB 7lSwwNAPpzI82pfG
BjMtjUyssCpNgsF5ehgpm+ru/YcVcIbNVE8CGcZqZmRg3tpAHlOLCQZpYnUa 70RiZqVmKE/mQkcM
7BXDop0q073H0BsVI3tEPY9VouwThu3CTf0xAx+kkayC4YKHCpZqKKHhoYom Q6nXH7vKRQ9lLDI0
RiqRz+dvDqTeFwexpMooDUU8Flq5OE9yJ55kFFRBPpH6enhmx0tp1DtJNvR6 o/8bN3QRjVDDVVyv
4BrDVjFCDzfcdEtTFTnJJLWcIdOqClGSVXtWhEe7YpZPXNtL5zqUT5ULWv/Q 3T0Ux4LMGyZhnBqV
THalnaaRh02nYjnUUlj5QkwkCfGeJYnUg1gYIw3WyfsS/XgL9NACgGbTrSjP VFGj+jLddih2mYa/
fQLP/4y6XzrByofsw1U66xkMzcm/ocq/o0WRRzG14BLaWe0yOjnc6xzuiv8R K+/R8jmB0d37RKlz
4FIG3CZd4Keo8B/w+E+s8l/o8N8ZQfsMJCdwt5tYI4r1rJt16LiVKbyNDXpz WmMXW3RzY7GsBX8B
UEsHCDFZQ5juAQAAegMAAFBLAwQUAAgACACqgOY6AAAAAAAAAAAAAAAARAAA AGNoZWNrVGVzdC5l
ZGl0b3IvYmluL2NoZWNrVGVzdC9wcmVzZW50YXRpb24vQ2hlY2tUZXN0RWRp dG9yJDE1LmNsYXNz
jVJdaxNBFD2TXbPJZrXbWBu1rR8QpEnBtIIiKL6ECIG0FRv6Ptkdkkm3s2F2 tv+r0A/wwR/Q16I/
p3hnG1HylIVh7pw559wzl725+/ETwDu89lBiaEUTEZ0MRWY6My0yoQw3MlWd 7l+4F0uT6ubeew8u
QzjlZ7yTcDXuHI6mIjIeygz1f+j3XCk+SgRD2Uxk1txl2B4s1+MTaT5LJc0X hp2lRa1jBrebxqIK
hocBPFR8OFgJUEXI4GxbwspAKnGQn46EHt6nqw/SiCfHXEt7noOujUzNl+xN Q6HMjs6VjwaeeXjK
8GY5aYDnNl0jn8XciG86pf6nfRXLqKAz+EdpriPxVdpcawvqt3be9KqeipI0 k2q8L8wkjQO8tKa1
SAtryseCHhP0lRK6m/AsExle0ZAcWg/AwtDOin6FEq0qfEJrVH2ks0X89s4l gvY1Hp0XnFWLFTek
dm9Rpyqg2qKPsVbgTxDOXT7Qbu8q7QsEV1hf8HB/wXN//+dRmXs42CiYm9ii 3aWxvqDMKNJZHn1/
AFBLBwjrGrZ7kAEAAMECAABQSwMEFAAIAAgAqoDmOgAAAAAAAAAAAAAAAEQA AABjaGVja1Rlc3Qu
ZWRpdG9yL2Jpbi9jaGVja1Rlc3QvcHJlc2VudGF0aW9uL0NoZWNrVGVzdEVk aXRvciQxNi5jbGFz
c5VT224TMRA9bpIu2RoaSluuhQKh5IIwBYSQgngJQaqUUqRWFQ/wsNkMicOy W62d8F1IUCQe+AA+
CjHeBChBVOlK1o7Hc2aOz4y///j6DcB93PEwJ1AN+xS+2yNj1UFKhmIbWJ3E qvnL3epqm6TlzUce
8gKlQTAKVBTEPbXTGVBoPcwLPEjSnqIw0geG1OBtEJIaafpAqVFbuxRxGKds 9hlF3bY2lmJKBeZt
X5vyPYFKezYSDcY80bG2TwXqM4Oq+wL5ZtKlIgROS3g45SOHRYkiSgK5igtY bOuYXgzfdyjdCzoR
CSy1kzCI9oNUu/3EmXeUufiMtVk15lwyUxIIPKy0/y/ZtGKtEefna/i4gEse LgqoE4IlLuOKgOyR
/X3Osleqx7D407iGj6tY93BNYGO2e0tcxw2BNabQjaiZxNxxuzO0EYt8hED1 OBWO1HcNKpC7iMDm
iYU
Re: Problem checking constraints on references with types from ecore meta model [message #63820 is a reply to message #63794] Tue, 07 July 2009 09:29 Go to previous messageGo to next message
Sven Efftinge is currently offline Sven EfftingeFriend
Messages: 1823
Registered: July 2009
Senior Member
Usually if a feature of a type is not available/visible in Xpand it
means, that its type couldn't be resolved.
As you mentioned that the type comes from ecore itself, it might happen
because you refer to it via resource URI, i.e. you refer to Ecore.ecore
somehow instead of referring to it via NsURI?

If not, please provide your ecore model.

Cheers,
Sven

Stephan Hildebrandt schrieb:
> Hello,
>
> I have a problem checking constraints using Check on elements, that have
> a reference whose type is EOperation (or any other type from the ecore
> meta model). The check validator throws "EvaluationException : Couldn't
> find property 'attr' for type checkTest::MyClass". In the attached
> sources, there is a small meta model, that contains only "MyClass". This
> class has a reference "attr" whose type is "EOperation". Additionally,
> there is a check file with a single constraint that checks if that
> reference is not null. Using the check extension point, this check file
> is registered for my meta model in the EMF validation framework. When I
> start a new Eclipse instance, create a model of my meta model and
> validate it, the above exception is thrown. The full stack trace is:
>
> EvaluationException : Couldn't find property 'attr' for type
> checkTest::MyClass
> model::NewCheckFile.chk[87,9] on line 6 'this.attr'
>
> at
> org.eclipse.internal.xtend.expression.ast.FeatureCall.evalua teInternal(FeatureCall.java:142)
>
> at
> org.eclipse.internal.xtend.expression.ast.Expression.evaluat e(Expression.java:48)
>
> at
> org.eclipse.internal.xtend.expression.ast.OperationCall.eval uateInternal(OperationCall.java:60)
>
> at
> org.eclipse.internal.xtend.expression.ast.Expression.evaluat e(Expression.java:48)
>
> at org.eclipse.internal.xtend.xtend.ast.Check.validate(Check.ja va:160)
> at
> org.eclipse.internal.xtend.xtend.ast.ExtensionFile.check(Ext ensionFile.java:205)
>
> at
> org.eclipse.xtend.typesystem.emf.check.CheckEValidatorAdapte r.runOawCheck(CheckEValidatorAdapter.java:172)
>
> at
> org.eclipse.xtend.typesystem.emf.check.CheckEValidatorAdapte r.runExtXptCheck(CheckEValidatorAdapter.java:159)
>
> at
> org.eclipse.xtend.typesystem.emf.check.CheckEValidatorAdapte r.validate(CheckEValidatorAdapter.java:89)
>
> at
> org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostic ian.java:164)
> at
> org.eclipse.emf.edit.ui.action.ValidateAction$2.validate(Val idateAction.java:287)
>
> at
> org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostic ian.java:143)
> at
> org.eclipse.emf.edit.ui.action.ValidateAction.validate(Valid ateAction.java:258)
>
> at
> org.eclipse.emf.edit.ui.action.ValidateAction$1.run(Validate Action.java:177)
>
> at
> org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation.ex ecute(WorkspaceModifyDelegatingOperation.java:69)
>
> at
> org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(Worksp aceModifyOperation.java:106)
>
> at org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1800)
> at
> org.eclipse.ui.actions.WorkspaceModifyOperation.run(Workspac eModifyOperation.java:118)
>
> at
> org.eclipse.jface.operation.ModalContext$ModalContextThread. run(ModalContext.java:121)
>
>
> Unfortunately, there is no source code attached to
> org.eclipse.internal.xtend.expression.ast.FeatureCall so I cannot trace
> the source of the problem. Is this a bug of the Check framework or am I
> missing some important detail?
>
>
> Have a nice day
>
> Stephan
>
> P.S.: Of course, other checks that do not involve such references are
> working fine.
Re: Problem checking constraints on references with types from ecore meta model [message #63956 is a reply to message #63820] Wed, 08 July 2009 14:08 Go to previous messageGo to next message
sth2000 is currently offline sth2000Friend
Messages: 10
Registered: July 2009
Junior Member
This is a multi-part message in MIME format.

------=_NextPart_000_001B_01C9FFE6.55106AB0
Content-Type: text/plain;
format=flowed;
charset="iso-8859-1";
reply-type=response
Content-Transfer-Encoding: 7bit

Hi Sven,

I tried both ways but neither of them works. In the attached ecore model,
nsURI references are used. Now, I have also added a check with context
ecore::EOperation. Now, the validation just crashes without any dialogs. In
the error log, an exception appears because EOperation cannot be found,
although the check editor does not complain about any errors. Without that
check, the error that EOperation cannot be found is displayed in the
validation errors dialog.

By the way, I'm using the Modeling Tools Distribution of Eclipse 3.5.

Have a nice day

Stephan


"Sven Efftinge" <sven.efftinge@itemis.de> schrieb im Newsbeitrag
news:h2v4il$tk$1@build.eclipse.org...
> Usually if a feature of a type is not available/visible in Xpand it means,
> that its type couldn't be resolved.
> As you mentioned that the type comes from ecore itself, it might happen
> because you refer to it via resource URI, i.e. you refer to Ecore.ecore
> somehow instead of referring to it via NsURI?
>
> If not, please provide your ecore model.
>
> Cheers,
> Sven
>
> Stephan Hildebrandt schrieb:
>> Hello,
>>
>> I have a problem checking constraints using Check on elements, that have
>> a reference whose type is EOperation (or any other type from the ecore
>> meta model). The check validator throws "EvaluationException : Couldn't
>> find property 'attr' for type checkTest::MyClass". In the attached
>> sources, there is a small meta model, that contains only "MyClass". This
>> class has a reference "attr" whose type is "EOperation". Additionally,
>> there is a check file with a single constraint that checks if that
>> reference is not null. Using the check extension point, this check file
>> is registered for my meta model in the EMF validation framework. When I
>> start a new Eclipse instance, create a model of my meta model and
>> validate it, the above exception is thrown. The full stack trace is:
>>
>> EvaluationException : Couldn't find property 'attr' for type
>> checkTest::MyClass
>> model::NewCheckFile.chk[87,9] on line 6 'this.attr'
>>
>> at
>> org.eclipse.internal.xtend.expression.ast.FeatureCall.evalua teInternal(FeatureCall.java:142)
>> at
>> org.eclipse.internal.xtend.expression.ast.Expression.evaluat e(Expression.java:48)
>> at
>> org.eclipse.internal.xtend.expression.ast.OperationCall.eval uateInternal(OperationCall.java:60)
>> at
>> org.eclipse.internal.xtend.expression.ast.Expression.evaluat e(Expression.java:48)
>> at org.eclipse.internal.xtend.xtend.ast.Check.validate(Check.ja va:160)
>> at
>> org.eclipse.internal.xtend.xtend.ast.ExtensionFile.check(Ext ensionFile.java:205)
>> at
>> org.eclipse.xtend.typesystem.emf.check.CheckEValidatorAdapte r.runOawCheck(CheckEValidatorAdapter.java:172)
>> at
>> org.eclipse.xtend.typesystem.emf.check.CheckEValidatorAdapte r.runExtXptCheck(CheckEValidatorAdapter.java:159)
>> at
>> org.eclipse.xtend.typesystem.emf.check.CheckEValidatorAdapte r.validate(CheckEValidatorAdapter.java:89)
>> at
>> org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostic ian.java:164)
>> at
>> org.eclipse.emf.edit.ui.action.ValidateAction$2.validate(Val idateAction.java:287)
>> at
>> org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostic ian.java:143)
>> at
>> org.eclipse.emf.edit.ui.action.ValidateAction.validate(Valid ateAction.java:258)
>> at
>> org.eclipse.emf.edit.ui.action.ValidateAction$1.run(Validate Action.java:177)
>> at
>> org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation.ex ecute(WorkspaceModifyDelegatingOperation.java:69)
>> at
>> org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(Worksp aceModifyOperation.java:106)
>> at org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1800)
>> at
>> org.eclipse.ui.actions.WorkspaceModifyOperation.run(Workspac eModifyOperation.java:118)
>> at
>> org.eclipse.jface.operation.ModalContext$ModalContextThread. run(ModalContext.java:121)
>> Unfortunately, there is no source code attached to
>> org.eclipse.internal.xtend.expression.ast.FeatureCall so I cannot trace
>> the source of the problem. Is this a bug of the Check framework or am I
>> missing some important detail?
>>
>>
>> Have a nice day
>>
>> Stephan
>>
>> P.S.: Of course, other checks that do not involve such references are
>> working fine.

------=_NextPart_000_001B_01C9FFE6.55106AB0
Content-Type: application/octet-stream;
name="checkTest.ecore"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
filename="checkTest.ecore"

<?xml version=3D"1.0" encoding=3D"UTF-8"?>
<ecore:EPackage xmi:version=3D"2.0"
xmlns:xmi=3D"http://www.omg.org/XMI" =
xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
xmlns:ecore=3D"http://www.eclipse.org/emf/2002/Ecore" =
name=3D"checkTest"
nsURI=3D"http://checkTest/1.0" nsPrefix=3D"checkTest">
<eClassifiers xsi:type=3D"ecore:EClass" name=3D"MyClass">
<eStructuralFeatures xsi:type=3D"ecore:EReference" name=3D"attr" =
eType=3D"ecore:EClass =
http://www.eclipse.org/emf/2002/Ecore#//EOperation"/>
<eStructuralFeatures xsi:type=3D"ecore:EReference" name=3D"ref" =
eType=3D"#//MyClass"/>
</eClassifiers>
</ecore:EPackage>

------=_NextPart_000_001B_01C9FFE6.55106AB0
Content-Type: application/octet-stream;
name="NewCheckFile.chk"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="NewCheckFile.chk"

import checkTest;
import ecore;

context ecore::EOperation WARNING
"Some warning":
false;

context checkTest::MyClass ERROR
"Some error":
this.attr != null;

context checkTest::MyClass ERROR
"Some other error":
this.ref != null;


------=_NextPart_000_001B_01C9FFE6.55106AB0--
Re: Problem checking constraints on references with types from ecore meta model [message #63978 is a reply to message #63956] Wed, 08 July 2009 14:49 Go to previous messageGo to next message
Sven Efftinge is currently offline Sven EfftingeFriend
Messages: 1823
Registered: July 2009
Senior Member
Hi Stephan,

looking at the code I guess you have to add Ecore's nsURI to your
extension-point. This is done by adding a corresponding
'referencedMetaModel' element.
If you're not sure hwat I mean, please provide your plugin.xml.

Cheers,
Sven



Stephan Hildebrandt schrieb:
> Hi Sven,
>
> I tried both ways but neither of them works. In the attached ecore
> model, nsURI references are used. Now, I have also added a check with
> context ecore::EOperation. Now, the validation just crashes without any
> dialogs. In the error log, an exception appears because EOperation
> cannot be found, although the check editor does not complain about any
> errors. Without that check, the error that EOperation cannot be found is
> displayed in the validation errors dialog.
>
> By the way, I'm using the Modeling Tools Distribution of Eclipse 3.5.
>
> Have a nice day
>
> Stephan
>
>
> "Sven Efftinge" <sven.efftinge@itemis.de> schrieb im Newsbeitrag
> news:h2v4il$tk$1@build.eclipse.org...
>> Usually if a feature of a type is not available/visible in Xpand it
>> means, that its type couldn't be resolved.
>> As you mentioned that the type comes from ecore itself, it might
>> happen because you refer to it via resource URI, i.e. you refer to
>> Ecore.ecore somehow instead of referring to it via NsURI?
>>
>> If not, please provide your ecore model.
>>
>> Cheers,
>> Sven
>>
>> Stephan Hildebrandt schrieb:
>>> Hello,
>>>
>>> I have a problem checking constraints using Check on elements, that
>>> have a reference whose type is EOperation (or any other type from the
>>> ecore meta model). The check validator throws "EvaluationException :
>>> Couldn't find property 'attr' for type checkTest::MyClass". In the
>>> attached sources, there is a small meta model, that contains only
>>> "MyClass". This class has a reference "attr" whose type is
>>> "EOperation". Additionally, there is a check file with a single
>>> constraint that checks if that reference is not null. Using the check
>>> extension point, this check file is registered for my meta model in
>>> the EMF validation framework. When I start a new Eclipse instance,
>>> create a model of my meta model and validate it, the above exception
>>> is thrown. The full stack trace is:
>>>
>>> EvaluationException : Couldn't find property 'attr' for type
>>> checkTest::MyClass
>>> model::NewCheckFile.chk[87,9] on line 6 'this.attr'
>>>
>>> at
>>> org.eclipse.internal.xtend.expression.ast.FeatureCall.evalua teInternal(FeatureCall.java:142)
>>> at
>>> org.eclipse.internal.xtend.expression.ast.Expression.evaluat e(Expression.java:48)
>>> at
>>> org.eclipse.internal.xtend.expression.ast.OperationCall.eval uateInternal(OperationCall.java:60)
>>> at
>>> org.eclipse.internal.xtend.expression.ast.Expression.evaluat e(Expression.java:48)
>>> at org.eclipse.internal.xtend.xtend.ast.Check.validate(Check.ja va:160)
>>> at
>>> org.eclipse.internal.xtend.xtend.ast.ExtensionFile.check(Ext ensionFile.java:205)
>>> at
>>> org.eclipse.xtend.typesystem.emf.check.CheckEValidatorAdapte r.runOawCheck(CheckEValidatorAdapter.java:172)
>>> at
>>> org.eclipse.xtend.typesystem.emf.check.CheckEValidatorAdapte r.runExtXptCheck(CheckEValidatorAdapter.java:159)
>>> at
>>> org.eclipse.xtend.typesystem.emf.check.CheckEValidatorAdapte r.validate(CheckEValidatorAdapter.java:89)
>>> at
>>> org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostic ian.java:164)
>>>
>>> at
>>> org.eclipse.emf.edit.ui.action.ValidateAction$2.validate(Val idateAction.java:287)
>>> at
>>> org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostic ian.java:143)
>>>
>>> at
>>> org.eclipse.emf.edit.ui.action.ValidateAction.validate(Valid ateAction.java:258)
>>> at
>>> org.eclipse.emf.edit.ui.action.ValidateAction$1.run(Validate Action.java:177)
>>> at
>>> org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation.ex ecute(WorkspaceModifyDelegatingOperation.java:69)
>>> at
>>> org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(Worksp aceModifyOperation.java:106)
>>> at
>>> org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1800)
>>> at
>>> org.eclipse.ui.actions.WorkspaceModifyOperation.run(Workspac eModifyOperation.java:118)
>>> at
>>> org.eclipse.jface.operation.ModalContext$ModalContextThread. run(ModalContext.java:121)
>>> Unfortunately, there is no source code attached to
>>> org.eclipse.internal.xtend.expression.ast.FeatureCall so I cannot
>>> trace the source of the problem. Is this a bug of the Check framework
>>> or am I missing some important detail?
>>>
>>>
>>> Have a nice day
>>>
>>> Stephan
>>>
>>> P.S.: Of course, other checks that do not involve such references are
>>> working fine.
Re: Problem checking constraints on references with types from ecore meta model [message #64047 is a reply to message #63978] Thu, 09 July 2009 12:18 Go to previous message
sth2000 is currently offline sth2000Friend
Messages: 10
Registered: July 2009
Junior Member
Thanks Sven,

that did it.


Have a nice day

Stephan


"Sven Efftinge" <sven.efftinge@itemis.de> schrieb im Newsbeitrag
news:h32bmm$6jh$1@build.eclipse.org...
> Hi Stephan,
>
> looking at the code I guess you have to add Ecore's nsURI to your
> extension-point. This is done by adding a corresponding
> 'referencedMetaModel' element.
> If you're not sure hwat I mean, please provide your plugin.xml.
>
> Cheers,
> Sven
>
>
>
> Stephan Hildebrandt schrieb:
>> Hi Sven,
>>
>> I tried both ways but neither of them works. In the attached ecore model,
>> nsURI references are used. Now, I have also added a check with context
>> ecore::EOperation. Now, the validation just crashes without any dialogs.
>> In the error log, an exception appears because EOperation cannot be
>> found, although the check editor does not complain about any errors.
>> Without that check, the error that EOperation cannot be found is
>> displayed in the validation errors dialog.
>>
>> By the way, I'm using the Modeling Tools Distribution of Eclipse 3.5.
>>
>> Have a nice day
>>
>> Stephan
>>
>>
>> "Sven Efftinge" <sven.efftinge@itemis.de> schrieb im Newsbeitrag
>> news:h2v4il$tk$1@build.eclipse.org...
>>> Usually if a feature of a type is not available/visible in Xpand it
>>> means, that its type couldn't be resolved.
>>> As you mentioned that the type comes from ecore itself, it might happen
>>> because you refer to it via resource URI, i.e. you refer to Ecore.ecore
>>> somehow instead of referring to it via NsURI?
>>>
>>> If not, please provide your ecore model.
>>>
>>> Cheers,
>>> Sven
>>>
>>> Stephan Hildebrandt schrieb:
>>>> Hello,
>>>>
>>>> I have a problem checking constraints using Check on elements, that
>>>> have a reference whose type is EOperation (or any other type from the
>>>> ecore meta model). The check validator throws "EvaluationException :
>>>> Couldn't find property 'attr' for type checkTest::MyClass". In the
>>>> attached sources, there is a small meta model, that contains only
>>>> "MyClass". This class has a reference "attr" whose type is
>>>> "EOperation". Additionally, there is a check file with a single
>>>> constraint that checks if that reference is not null. Using the check
>>>> extension point, this check file is registered for my meta model in the
>>>> EMF validation framework. When I start a new Eclipse instance, create a
>>>> model of my meta model and validate it, the above exception is thrown.
>>>> The full stack trace is:
>>>>
>>>> EvaluationException : Couldn't find property 'attr' for type
>>>> checkTest::MyClass
>>>> model::NewCheckFile.chk[87,9] on line 6 'this.attr'
>>>>
>>>> at
>>>> org.eclipse.internal.xtend.expression.ast.FeatureCall.evalua teInternal(FeatureCall.java:142)
>>>> at
>>>> org.eclipse.internal.xtend.expression.ast.Expression.evaluat e(Expression.java:48)
>>>> at
>>>> org.eclipse.internal.xtend.expression.ast.OperationCall.eval uateInternal(OperationCall.java:60)
>>>> at
>>>> org.eclipse.internal.xtend.expression.ast.Expression.evaluat e(Expression.java:48)
>>>> at org.eclipse.internal.xtend.xtend.ast.Check.validate(Check.ja va:160)
>>>> at
>>>> org.eclipse.internal.xtend.xtend.ast.ExtensionFile.check(Ext ensionFile.java:205)
>>>> at
>>>> org.eclipse.xtend.typesystem.emf.check.CheckEValidatorAdapte r.runOawCheck(CheckEValidatorAdapter.java:172)
>>>> at
>>>> org.eclipse.xtend.typesystem.emf.check.CheckEValidatorAdapte r.runExtXptCheck(CheckEValidatorAdapter.java:159)
>>>> at
>>>> org.eclipse.xtend.typesystem.emf.check.CheckEValidatorAdapte r.validate(CheckEValidatorAdapter.java:89)
>>>> at
>>>> org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostic ian.java:164)
>>>> at
>>>> org.eclipse.emf.edit.ui.action.ValidateAction$2.validate(Val idateAction.java:287)
>>>> at
>>>> org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostic ian.java:143)
>>>> at
>>>> org.eclipse.emf.edit.ui.action.ValidateAction.validate(Valid ateAction.java:258)
>>>> at
>>>> org.eclipse.emf.edit.ui.action.ValidateAction$1.run(Validate Action.java:177)
>>>> at
>>>> org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation.ex ecute(WorkspaceModifyDelegatingOperation.java:69)
>>>> at
>>>> org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(Worksp aceModifyOperation.java:106)
>>>> at
>>>> org.eclipse.core.internal.resources.Workspace.run(Workspace. java:1800)
>>>> at
>>>> org.eclipse.ui.actions.WorkspaceModifyOperation.run(Workspac eModifyOperation.java:118)
>>>> at
>>>> org.eclipse.jface.operation.ModalContext$ModalContextThread. run(ModalContext.java:121)
>>>> Unfortunately, there is no source code attached to
>>>> org.eclipse.internal.xtend.expression.ast.FeatureCall so I cannot trace
>>>> the source of the problem. Is this a bug of the Check framework or am I
>>>> missing some important detail?
>>>>
>>>>
>>>> Have a nice day
>>>>
>>>> Stephan
>>>>
>>>> P.S.: Of course, other checks that do not involve such references are
>>>> working fine.
Previous Topic:How to run workflow from own code
Next Topic:XPand workflow problem
Goto Forum:
  


Current Time: Thu Apr 25 15:31:04 GMT 2024

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

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

Back to the top