Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » Custom serialization without XSD ?
Custom serialization without XSD ? [message #657903] Fri, 04 March 2011 14:48 Go to next message
Ugo Sangiorgi is currently offline Ugo SangiorgiFriend
Messages: 59
Registered: January 2010
Member
This is a multi-part message in MIME format.
--------------080006010706000200070903
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hello everybody,

Is it possible to do some sort of customization without needing to create a xml schema?
Here is what I need, I have this output from my ecore model (see the attached image as well):

<?xml version="1.0" encoding="ASCII"?>
<SketchDatabase xmlns="http://www.eclipse.org/sketch">
<sketch word="346754387453974624323422222" gridWidth="3" name="square">
<points>Point(10, 10)</points>
<points>Point(34, 55)</points>
<points>Point(13, 67)</points>
... HUNDREDS OF points
</sketch>
</SketchDatabase>

I would like something as:
<?xml version="1.0" encoding="ASCII"?>
<SketchDatabase xmlns="http://www.eclipse.org/sketch">
<sketch word="346754387453974624323422222" gridWidth="3" name="square">
<points>(10,10)(40,56)(100,39)..</points>
</sketch>
</SketchDatabase>

So I would save ~22 characters for each point.

My Point object is a draw2D object referenced by a DataType.

thank you very much!
Ugo

--------------080006010706000200070903
Content-Type: image/png;
name="Captura_de_tela-19.png"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="Captura_de_tela-19.png"

iVBORw0KGgoAAAANSUhEUgAAAa4AAAEICAIAAACI0oc+AAAAA3NCSVQICAjb 4U/gAAAAGXRF
WHRTb2Z0d2FyZQBnbm9tZS1zY3JlZW5zaG907wO/PgAAIABJREFUeJzt3Xdc E+cfB/BvEsJG
prJxsBRFwYGgIDhwVUGtQkVtba21rrqqtVbrpo7abf3Zpa27thVnnQy17j0R lb1nElbGXZ7f
H4EQyCWEJYZ83y9fvuJx9zx3l/PLjeTzsCKipgBCCOk2PQAQC/itvRoIIdSa 9ADAxMiotVcD
IYRakx4AsFisJrby/ootmsz2S/SyJnaEEEItQa/pTby/YksnOwsAiFq0Tz5x /9cMtyDfX7EF
qyFC6DXUPGeFcv/tnwMAA6N+VDWDcl8cI0sbKyNpaVGRQCQFAI5VDz/H7BsP i+kmrEezNIIQ
0hnNcFbYeGzzXlOXfjjYqjirGMztrUv/jV79Vzq3y9j3R5+5/7C4Qu2yBm6T Zvs/2Ln3WSXj
TzVrBCGEAEB+Vpibn382Nlb9rMOHDLHr0EH9PGrOB2UUzwq5ncLeHsTfvXj1 DZ4UgGVoaQk0
i6XPYrGAxZLNyGKzWUQqJQAsPVNLK0MJr6hUTACApW/ZpYdbhr6enoRIadkM xpbWZlBaWFxB
A0vWCMfQ0tqM5hWVSogmOwMhpKuqzgrtOnQYPmTItZs3jx47FhISojhHfHx8 eFiYf79+9dbB
/V9PiVq0T36XsN5bh2x9E32pRELLyhQRlhTX+rG+XeAHH4+mj3z9yw3OwA8+ inAV5pQZOxgl
79v623/lXd+K7Gpqb7di/eiKF399ta/I74OP3vIQZebR5pYFez7fkQTAtvKb +fm49nqG9vZl
J9ZvPpIqatieQQjpkJp7hfa2tgF+fuFhYYrVUFYHA/z86q2DjH4Z9hYAvH/+ oHyK4lmhOPXf
f9M/X7jjx/SnT58/ufNf7LVkAQ0sAAC2qWfYzDneL37a9NeTivYjV0wyObFq 2dVimtMh9JPP
p/W8//XdAwcS+4+N37juZhlw7Eavmmx9YfWS8zkSADaHTViGANx2elfXrr3J Z9uPXbMqzPX0
90+Fjd5LCKE2rta9QrsOHRSrYePqoOLJoDBD7azijNNfzLnm0q1bN8/u/u+s GtX3x0++vykG
4HZ+c9VHxac2bzuTISIss879OhqQ7uHT3AgAp52RkbObtd7dAnkrLOPOfW1z LtzIlQAAgJSW
AgCAKP3GU74UQFqSVsDybcdlgRCvkhFCzGRnhTX/trftMMDPLzw8bNGixV9/ /dUAPz8724ad
DypeIM97drDOT5UeIEv46Q+upT+4Fner7MvVQzyNbz0CoIuTEulevj3tEzLT hMBis2jes7s3
HpYTAICbV8TF+RSLLWuupkEWC2raZgGAlCbAYgGwgBAWm63cNUIIVWH4MI29 ne1AP7+1a9eO
GjbUzta20U0z3h9U7Itt3qWTflZKgYgAsI1srA3EggqaxWKBVPBw77e3xn6y cJn+9m1HU1Nv
57TrY1kSczdXAgBsQ1M9MbAMaCGtb2bIYZVLhWm38+2H+TvcOJdddYFMs1gg e/TCAmDJKmYz
fmQIIdTWMH+Yxs7WdlpkhJ5ekz5qU+9jE067HhM/+cxJlJdfxrZ0tKm4/tu3 z4SgDwAA0tIn
B7/YMWHp3E/0d249+tPBjnNXfx2Sk1upb2UDt39Yty9FlBJ7BWat/25M6dO9 G375+U+3j9Z8
HZiRR5mZ5e1f+1NSU1YcIaRzWBFRU0zZTWri7Y83yr5tArXLHyg8NpGVwtRc 3h9fflZ7aY6B
uZWFEUvIK+QLpeq64RhbWrfjiHnFPOb5WHqmltYmpLSwpAI/V40Qaphm/oi1 4tlf1KJ99Tw2
AQCgRfyCPE2SceiKknx1H5gmVFlxXpkGDSGEUF3N/MW7Opgem+AdO4TQa4cV ETXFjNPU8jRt
yQZNZtuzbWUTO0IIoZbAioia0k6vaTcLEUJIy+kBQGFxSWuvBkIItSY9ADhy /HhrrwZCCLUm
vDRGCKFWzStMuJ+myWzBvTq29JoghHRcq5XChPtp8g9m1zsnVkOEUIt6vS6Q lw/TdOQTSpD9
4mliSn71N0skmef+PJcpaVr3zdIIQkgLtWqgPwAAxC+4SkuqvkrnaNbxwpz/ ZK85XHbItwEM
C9B5p5aGTfsl27GbAyv/ebr1R/GX1/QS3Y6e9c3CEaFO5mo7q7i+Yvpfo37d GmTG+FPNGkEI
tTlNOiuMj49n1Sc+Pl59IxIhbedl5dy3g7mDiZeDj/y1RMj8VWLh/a3z/rD7 X1Lqg+vX76cU
Zhyb6apfZxZC01WhhURcnJGcVlBZVWqJMPfmhevZlRRFVWdni3mZL19m8iSK S5fnpqYVYroh
QjqkSaUwJCQkLi7OxsYmLi6O1CafXmd4AGVESrjGemYdjPVNuUWCAvlrImWu RXRFSSXb0FBP
9g0ZtqmDY604icrnv0/p3mvGoVSRMGnXNO/OAREzJge5er+9N0VMSs5/+llC 8dVlw/39h84/
W1zx9OfJ3Rx7hc+YOSmg5+RTJQAAVOafs4KDwiNC3e0GbLhb3pS9gxDSHk29 VxgSEnL48OFJ
kyYpnv3Fx8dPmjTp8OHD9dZBABBSlYLs8oIXvPJCYTo/Wf5aSDGOZQcmfRYt 7XUuzMHJN/St
eRv33civOaGji69sHDvyl87b43+Ncs786Z1VvE9vPL4ad+Xh5bkpny4+XWwR umVTiNWAbbG3
biX8OKTof9M+zZz7X9Lt+NirTx/9McICAEBUKI78++b1G4+ufVq+ffN1jHdA SDc0w71CeTWU
1b4G1cHlw5Y5mnUUPqsAgHR+MgDE34h1Me8CAHllWcuHnd90fkvdZYx6LD6b Pfl+QuzFy+cO
LfD/JubQg4OTjAEq76wcHOG8+PTp+T1MWKTw9j93K9jnoxdeZQFQBQLBwysZ orDO8lYI/07M
c49ZEe4GAADA4XIAAMDEOzLElgPAcfDpTE7mCwmYYn4EQm1f8zw2kVfDuXPn bt++XcM6CACb
zm/5c1pM9/6eXGO9Ltmd4m/Ejho+imusJ8guh2cw/8hc5sVYhvY+I6b4jJgy c5xN16AdV/iT
hgHoOwYN4p46cSbpve6+pkCkUq59YPjEUEs2AMCkKGMXN32oP8mwuiYCi81S dY2OEGprmu3D
NLJquHbtWs3roIyYFsnvD7qYd5G/FtPMo3VSebeup5TLnoPQpenp5ca2FlwA AI7t6K8v7PY5
MGb0xmt8YtFnXNf8S1mO/sHBwcHBwQN9Xe2M2cA2aMetLCqnAVjmvcPdnu04 +Ew2Dh5dPQYp
QkgXNeeHaUJCQsrKykxMTBq0lJgWCbLLhQJxeaEQAOSvVZbC/HPLRwx+aOzm Zk1nPUmziNhx
PMgMZPcV9WyGbjr359o33hxRuf/Uir2b77050HWnp7t5RUYqa9zfl770M+kz J4pE9XHZ2D74
h4Sf90RfDw9w29XD1aCw0G3b5X0Dm7oHEEJaihURNeXQvr2vvmP5t00uLb3x PD1RNrFcXGqi
X/WRP3eXrkFb/QAgNZen9G0TqiwvI5tP2jl0tDPlqOtGws9Kzxcb2znbmzFW fSIqysjgsW1c
nGSnlgghndT6H7EO2uoXBH6y18uHLWN4TsJAz9S2s4cmg/FxzR1d1X1gmmVg 7eJmrUFDCKG2
7PX64p1mdRAhhJpZq50VBvfqiMk0CKHXRGteIGONQwi9Jl6vC2SEEGoVWAoR QghLIUIIvQ4f
pmkofNiCEGp2WlYK5R/MvvBDsKp5hs5LABwGACHUEFpWChVNWfWH8sR9699W swglyE7NEnCs
XVw6GHMAQJJ57sjTbuNDnZryTZNmaQQh1Kq09V6hlDBnZ6maDnTeqcX9bZ36 T5j+zrj+TjZ9
19wXyhL8o29X1NdZxfUVEUsvlar6qWaNIIReY61QCptlGACKBkK4hHABuABc IFV/UypiuHAY
AISQGq1wgSwbBoAx3lXz2FeKsP/c/aNy3aEIc3FXHgag1o8rn//+fvhW7spj OydQ+2dOWHnD
zMO65Bnfb8uJX6ZYJHz6WULxs6Th/lvN/TYe+dLl7xnjV1wx6e6qn5fTaduV AwOrhgFYmyou
S0qyXhJ3fqVvw8J5EEKtLiJqCmkNyoOiqBomRVH8vdTUXF5qLu+rpX2FovvK f75a2lc2Q/y9
1FpLVjzcNswSuPY+wyLnbth7PU9MCCG8mBCLkL+T/9swtEvgZ7EFFBG/+Nbf cczeTAkhRPxy
e6DTuKOFUsI7Hmo16HARIYSIk7b1sQ787pmQEEIIJaakhBcTwrWY+HcuRYgo cZO3XeSF0mbd
Uwihltdq9wrrDIrSoGEAAEBCM6+5qumyYQCyb+z6eKx72akF/t2jDufQAFXD AFwMO3p6/WAb
DuHf/uduRfn56IXz5s1btCVBNgyAQivKwwCwAGqGAdB38OlMsvPxKhkhbdOa T5AbPQwAAIhp
FiFcAGDJLnkJAAuAgJhWPRQJDgOAEFKhlT9MI6uGgwcP1mSYUEUSmrX1q8Og VHQoFaWQyrt1
u6Jbv84mbIZhAA5HbB45ZnTl38dX9Okzrmv+0SzHVeM8DACAKi2WGLOhvHoY ACtO9TAAExd0
NQSgJTQbP0KDUBvQ+p8rbNwwABIpe8WSccrT1y46wzg/DgOAEFKj1QL9G0f+ bZMf1ozZ8O12
5RlWLpg7b80JwGEAEEIN0fpnhY1DqbhXqOoCGQBwGACEkCraWgppwl4yZ7by dA5bW78/gxBq
RVpWCuXDALw573dV86Tm8gCTaRBCDaFlpRCwxiGEWgBeTiKEEJZChBDCUogQ QqCN9wobB4cB
QAipoROlUP7BbE3mxGqIkA7CC+RXRZJ5/nBslqT+GQEAgEhpSgEt/7I1Jch+ 8TQxJb+i/owI
SXbcX2dTRfXOhxDCUvjKVNyOnr3proa5/2UJ02y4XDNLKxmHQV8milWMSaB6 sAHRs93r/3ev
DHNyEKqfTlwgN56UplkcDgsACE1L2fKXhMNhAwDQ5bnpeVJrF4d2VTtSNhsp y8koNnB0sdJn
AREVZWSLLJyNG9i1geuyuEebfQzlE4R3ZGMSXJlkxwGQlmXngD4QXu7NC9d7 VVKUEYujx5bW
6j1k151gFodVvVZQkZtRqGfnYmNY/eVEIirMyBZbODuYsWnC4rDVfGkRobZN t0phvUOG1kZn
/BIUeGnj4z2D2dfmdAk4Mv5q8g5/Om5aj88GXb400+Le1knjt6U7e+ilvDB/ 70DMuhBrNv/Y
MMdF1oMtnmYZeU77+cBCx7vrx4RtL/H0MBSZOxcoXx0TfsKnH8QEfb/tjQ71 np8zjElASs4p
Djawe/gm78U1vc9Im+AWPeXxxSj9Y8OcPnYYbftUccgBaXHCZ6Pe3FXZzcNA Yu6cd7Hs+/Sz
Y9R98Rqhtky3SqGQYs9Yu1t5+q+rpzPNzrENHGm+7cQz4UDDM9fNB5hfP5Mi 9hEev2k+aoUt
nbh1+hZ63d0H053Z+TGTe763Ydzjr/sCgKhANPnygygHDoD46cYPdlj/cC8+ wp6k7xrpeY6h
3LE5ehzGKih++evU4ItmbACAdoO+/mezf59FS3sNCnNw8gkeNDBk7NszI/w6 WIZu2RTy19YP
YhMmWgHwj25S6B0ECg/NRYXiyMs3J9jSzzb3Ddl8feHBgSnfzP69068PD4S3 J9n7xnqca+i+
RKhN0a1SWC5m3l5V0/U7DQ+kZl9ISTe7wJ3yyZSTX15KjxDEUYE7OnH5x06n e3442kkPADoM
fqefYOXVXKqvFYBJrymh9hwAAMK/fybLa+Ewew4AOI1629dEKQyNZR60cV8Q Y996DqNXfLPA
Ux8AWHqWbkYA7B6Lz2ZPvp8Qe/HyuUML/L+JOfTg4KQ61901vdeZXjXkAMfB pzM5mS+U8h/G
5nVfOqg9GwDsQ6f0Mlb5nW6EdIFulcJSsR5jtFepilIIxt3CfAs2nDhhKhiw IXBUyeefnzwu
KPD9vJsxiAEAmO6tsbhG+orTq1+zGngjjm1k7+XbR+FeIYCKMQnU9S5Xd8gB NlcPJCKaALCA
UCIKH64g3aZbpbBcrMcY7WWop2o/mPmOd384N9py7AFPq65jvJ9Oji7psd3H DFiUz6iOSb//
mxXxjhM7P273zXYhq+30ZAWyGsu813CHJ3ti88Im2kL26T33ypXbF6aciXnS aexoT5N6KyXz
mATsmsEGNNoF8nXrPc71yY+HnofNdZc+2rvjVrllQxZHqK3RrVL40brjDVyC be0f1pH/n214
L1Mw7RXuztubN9bfmg2g7zn/t6UJ43v3+J8bJyXZcsbBHb2NoHYpBH3PeTtn jg7v6fOdp0Gl
mbOtoVItJIIra2dsnfx4hKdJ3XdC9HKLn+X3sockes7vnb77pRnTmAR6CoMN HIvQfMO4rrP+
iL41caDTF+0ceowa5GWWjM+PkS7TskD/xtH82yZMwwCoQ5flpOVJrV0czVUG +xNRYVqm0NLF
SfUsDaDxmAQNUXppTq8PLGPubexp0FxNIqRldOussNlxTO27mKqfhWVg08m1 2TrUeEyC+vHP
Tg/7lnh1ZKcnHH3s/+NlL6yDSIdhKdRZ5kO/39PhbmKO0GjuZj+vDgZ4fYx0 mU6UQvkwAJrM
2dIr8/rgmLn4DHLxae3VQOh1oBOlEHSsxiGEGgrjGBBCCEshQghhKUQIIdCd e4X42AQhpIZO
lEIM9EcIqYcXyM2kxdPzZRH/NN38uQmUIOt54oucspohAlT1VTXMAC2tbyVw LAGkbXSrFF74
IVjVn6Y2rT49X03svobKEqbZcPUtbdpbW5hb2HYdMvPbi/lUE9qToTL2RXax cO4fNnFkDxuH
oRuu8qVq+qqa3r69lZmxdY+Ib24LVJXElt4bCDU3nbhAlmtgdCtUReGziSA7 nW/k5GxVE4BV
N8rfVF16PhEqxu5zWERUlJFRLDWzd7I11fwdMHBdKov4lxTe2fvxpJFBmXG3 t/Y3URpCgCrN
Sc8Vmji62BrLvqaselgCtpnvwhPp+7ys9KDy4Rf9/efujrqxoIuqvrrLp+vz r6zoN+TdnW/c
XurObere0HgHINRydOussKHRrcA/NszcdfyYgKFvvT3K0yl4/Q0BASClt7eM 7NxlyNR3RnZ1
DloZXyQFAMHpsfbBBwoI8I8Ns+g6NTI4KDwi1N1uwIa75aTk/KefJRRfXTbc 33/o/H8TT871
6eg3adacd0b1CVx1V1i7R8JPWB656GS+VM1mcG16v/v9b5P5P0fHl/CPDTN3 nzTWz/+NqYt+
fyEW3l0d1CNw0swPowI7uk346blINixBl7fjygAqrs1x1HOcc60CoDRuWpeg XzKIhVeAl5Ue
AICRc8/OhhUllVLVfdVMZZv3HOnXLv9pnriJe+NsMQYloteCbpVCWXQrIVwA LgAXSNXfKqNb
AUCYVxFx5Pqlyw/uf232w6z/PZeIE7+bvoVed+vBf5fu3dvh8Mt7G+5U1l5E VCiO/Pvm9RuP
rn1avn3z9XLL0C2bQqwGbIu9dSvhxwGJ3/xt/7+b1y+cS7jz7OqaOtmsoCbi vxbT7qFu4sR7
uWLZEAInHtz5759FXgYGPZZfeHr/8oULV59cX5ITve5KmWxYghsnngnFKfJh CYRJx2+ajwq0
rQm3qbj3w+eX3T+IctdX2xeRCHIy0lOfxu7ccqrSe0gXwybujRFWeFKIXgu6 dYHc8OhWABOf
aSMdOABgP/KdrvN3PBS8K2GK8rdWXKROej4BhXwu4+5jPG/MDH0zdsLo0RMm hnarM7KSmoh/
ZbIyohjiTyqT9q9dtyv+RQklLX2e3SFFIB3soHJYguqyJ07ZMz38V8/tF+d7 MFRCxb4k6fvn
hl8yNbTo6L/233WTHdjFF5u0NxB6TehWKWx4dKuM8pmL+nOZuun5ivTdF1xI Hnnp339Px3wS
sHr/gfu7R1k34ty87NHZF/rdetvrSxRD/CtvrRy/pnTL+fjxbmYV5950X0lJ ibphCQAAxGn7
3x36Gb0mbs9bzsxFSt4XgL7rh//cURiSlDRxbyD0mtCVC+S4J5KAyOiAyOi4 J3WH4AyIjM7i
cbJ4nIDIaIYly+/vO5tNA9C55/Y8cxnZw8y8KsqfApDKovwD7Or7jSKP3Qeg SnlUO8/Bkxdu
3rUjUu/W1Zw66yNMOXPw5LNydRVDnH/zlznvHrKavSK4zqclJQUv+Db9+3c2 40gL4n9PKKz6
fIyZ73j3hxujE73HyIYl2Bj9yGO8jxkASDIPvz9kWeny8/vedWXMK1TdFwAA sJq4NxB6TejK
WeGKtVuvHloBAAGR0bIXcn/tXDVx1nrZC4mwqO6Shh0M9of3/9lImJhoMff4 hx76+sAU5a88
xrEiE3nsftDK2eXro5OdvRzYWY/y/Dae9qhdgdRH/Ae036HPImDi4jfu43MX P+xnAvxas5gG
LJkqHO/X96A7m6/f0dmyqgmVwxIIH36zZE9yFneBj9VCAOB2mXP+5pf9VPVV xrBlzAMbaLo3
gn9I2Bdmg7cLUevTlUD/yQt+ZCyFymeC2fGba/7BPzq40zcLU84Gl6bzjZ1c rGvyTTWI8ldJ
WlmYkVlCLJ1dbAyb/7ScLs9Ny6Wsm2kEAQ37bMLeQOh1oCtnhapcPbQii8dR d1YIACyuhbNr
nctDDaL8VWIb2XR0t2nkwvXimNh1ab4RBDTsswl7A6HXga7cK4xevVR2rzB6 9VKoPhmU/T1x
1vq/dq6SXybXYhKw+a/NASavfHURQq+WTlwgAybTIITU0pULZKxxCCE1dOUC GSGE1MBSiBBC
WAoRQkh37hXiYxOEkBo6UQox0B8hpB5eILeqpgTfSzLPH47NksDrlLOPow4g baVbpbAFA/01
pxhnrz74vp52bkfP3nS34nXK2cdRB5D2ioiaQtq6+Hupqbm81Fze9uW+QtF9 5T/bl/vKZoi/
l6q0tFRYmJacxZcQKU3RUkJIzYs6ryWC7JdJybnlVM2yFEVJCVWWk5JaUCmb TVoUM8wq6GCe
RCKhpPLFpZSkhkLroqL0l6n5FTTD+pTEDLYOPc4jpDQuytZ12d1KQmjef5+4 G3hvSRLLZqXK
cpJfZvElNcvKN6G+FZP18zwpJbdUQjRVsyaEiAtu//ZOFyOPj6+VVncnEWQn pxaJpIz7iqYo
qeJOq35JE7rk8ZXHRRJCCKl4EO1t7PvNS4nqvlpob6C2TrfOChsc6E/419YN cvYa/XbkkAFj
JrhajTzJBzrr14GdpiXIYlqK/x5iP/a0AIAhSR/qj7NP/XesffCBArrgxMwB Pj4+Pj4+3q5m
XLPxZwUAwqRd07w7B0TMmBzk6v323hRxnfWZujulbgBMs+Xs46gDOOqAztGp s8JV8wIqhU8q
hU+EoidC0ROhsOrvVfMCGM8KRU82eNuFH8qmCJGk/TbUUD/0OI9QmT/7O0XF lRJCCCk6HNx+
9Ck+IVJxhex0h4hffu/fcWpsKSGEFxPCtZj4dy5FiChxk7dd5IVSQnjHQ60G HS4ihBDCPzW6
feC+fPlJYPm9zUGOA7+4WyYVv/jW33HM3kwJIUT8cnug07ijhVLG9SGlcVEd XD48lZSW8uTC
l6MsTYftyaJETzb0sB62K11CCJ13JMK288KbFQrd1bdiJUeG2Y44UlS1Vkqn RVLexRVRS07l
0XWmK56pEUKItODAQCOP9U/yY0L0TMfsy6o6BWTaV6LHa709Ft+qFD1a4+sx wMN3zSNR5a1F
Ht7rHotq2i+/u763Vf9tz0Rq+ipq/r2BdIFOPEGWa2CgP+HfP5PltXCYPQcA nEa97Wui+sva
TEn6ptCgOHsq66+Z43/t9tOlpT4mUHj7n7sV7PPRC6+yAKgCgeDhlQxhQKKK 9WnunH0cdQBH
HdA1ulUKGxXoXx1RyGJV/5sFQGSXTIQWyx5pMifpA2gcZ08EV9eELS76+MKv oztwAAiRSrn2
geETQy3ZAACTooxd3PQhkWF9AJo/Zx9HHUC6RlfuFTYq0J9l3mu4w5M9sXk0 AJ19es+9cgAA
tqmDrfjZg3wKgM6LP/ywHEBlkj4Tpjh7cfKuqZHHh+w78KGH7D8wy6LPuK75 l7Ic/YODg4OD
gwf6utoZcxjXh0lTc/Zx1AEcdUDX6MpZYeMC/fU95+2cOTq8p893ngaVZs62 huUAAO0CV3zA
Ht7P+4C7sX4nz/YGYlCZpM9EMc7++FQAAKi8/93nxzMlTz4IOA4ALKvRv577 asDsvZvvvTnQ
daenu3lFRipr3N+XvvRjXB8mTcvZx1EHcNQBnaMTeYWND/QHACCiwrRMoaWL afwIt+2LX54d
Yw4A0sr89FzSoaOtcc15dUsk6Uv4Wen5YmM7Z3uz6qJTvT4adIOjDtTqE0cd QKrpylmhKhoE
+rMMbDq5AtQ+tWEbdejUuc6MLZGkzzV3dK37zKJqfTSAow7U6hNHHUCq6cq9 wkYG+isyCdj8
Z3R/DPdHqC3SiQtkwGQahJBaunKBjDUOIaSGrlwgI4SQGlgKEUIISyFCCOnO vUJ8bIIQUkMn
SiEG+iOE1MML5CZjzIWvTtsnUsXEeSld51/SehavM/Hcn+cy1X9djFlVxn01 2ToQWf8IIcBS
2AwYc+Gr0vaF9z7xcJgSK4uF550cb6bn+oksB1Wa88cgm8DdWbS6xWvHylfc jp4Vfbui4WtY
ljDNhss1s7SScRj0ZaIYyhKmOXp+ek/IvAjG2SMdg6WwXkRUmJ6SLaCASKuG DiI0TROgSnNS
0orFxDRk152/wq1ZVTMXpadkC6iqymboNqo/6/rpF0IAqHh6MtE5gHvpUg4F AKX3Yp7ZvxHQ
nqNucSDC3JsXrmdXyk/lAAhdnpuaVihsWI6UgeuyqwUCmfz/lnZVTPyTbU6t Zhn6RahN04l7
hXJqhnMaOi+BYaq0OOGzUW/uquzmYSAxd867WPZ9+tkxcGyY4yLrwRZPs4w8 p/18YEbaBLfo
KY8vRtkIrq0fE7a9xNPDUGTuXCABADD1Hte9eNPlHMrXMS32hvV7y/oc+P1W yfzOpokn7xgF
L+2oD4J/x6pavCpW/lnScP+t5n4bdw+a+XpqAAAgAElEQVQHKvPPWcFrU8Vl SUnWS+LOr/St
9T1Awk/49IOYoO+3vdGhAb/i+MeGOX3sMNr2qbzZzzpdUez3yPYRVpjLgto4 3SqFQoo9Y+1u
5em/rp7OOL/o8Tezf+/068MD4e1J9r6xHufkPygQTb78IMqBAwCCqmfT4sQf Pthh/cO9+Ah7
kr5rpOc5NgCwLPuFd0o5dps32+DaeUngtuChd9ftf1Q+zjE+odx3UzdjAAGo XJxlGbplU8hf
Wz+ITZhoBcA/uklUKI68fHOCLf1sc9+QzdcXHhxSO1+AzdHjMFZB8ctfpwZf NGMDALQb9PU/
m/1rbWfdZmv1i5AO0K1S2MBhngj/YWxe96WD2rMBwD50Si/j36t+ohhPL5+Z Mf1fz37QcOtN
xx7lGp/M9Z7t3t5rlO3ys0mZXicyPd7zbVfv4nUo586bKpyvqcnZ13MYveKb BZ76AMDSs3Qz
AlC854hx9kjn6VYpLBXrEcIFeRg+AWABEChVUSLZXD2QiGgCwAJCieS38BTj 6WtTTts3dBvp
T2bFnOQ+dRnjbcq28BvC2fnvmSfPHN8IsFE6gWMK66+lsbnzbCN7L98+NRn3 zdQsQm2FbpXC
Bg7zxDLvPc71yY+HnofNdZc+2rvjVrml6rbl6f9hE21BMW3fxDu8R877m064 z19hyQJux8F9
csdHPzYc86mLfv2Ly2PlrThKPSoTppyJedJp7GhPk6be22tYvwhpPd0qhQ0d 5onrOuuP6FsT
Bzp90c6hx6hBXmbJbFb1qEFKmNP/AVgW/cLdBPMLgwY5cAHAqOsb3fg/xY8a 09VYg8UVY+WP
RdSzuupz9v0sv9djAQDoOb93+u4PPdU2hXH2SMfoRF6h5t82Sc3lqfq2Seml Ob0+sIy5t7En
40hDVRqQtt8CiyOEGkm3zgobjn92eti3xKsjOz3h6GP/Hy97qauD0KC0/RZY HCHUSFgK1TMf
+v2eDncTc4RGczf7eXUwwAtFhNoknSiFwb06NjqZhmPm4jPIxacF1goh9PrQ iVIImL6FEFIL
v4OMEEJYChFCCEshQgiB7twrxEB/hJAaOlEKMdAfIaQeXiC//hjj+AEAKEH2 i6eJKfkVdL1t
MA4bgBCqhqXwtccYx0/nnVrc39ap/4Tp74zr72TTd819odoUfsZhAxBC1XTi ArkJCE1L2Ryo
yM0o1LNzsTGs/rYJVZqTnis0cXSxNebUmrM8N5NnYO9oqc8iEl52VoWZk0O7 mp1MxMWZmaWG
9s7tjRryS8jAdVnco80KEVvCO1vn/WH3v6Qrk+w4ANKy7BzQB8LLvXnheq9K ijJicfTYUlrK
5pCynIxiA0cXq5Bdd4JZHJbqLSKiwoxssYWzgxmbJiwOG79Xg3SKbpXCBgf6 K4fdr/Q1Ed5d
HTo5hjja0OkPcr03nj3wgbsB8I8Nc1piO9zmaZqIl1To9+X2PifXHMyszEwk k49d+XaoFRuE
SbtmTlh5w8zDuuQZ32/LiV+mdlZM6WpQHD9dUVLJNjSUJc0A29TBEUjJudrp /5u8FzOMOqDP
tEWM4xaYN3TvIqTNIqKmkLYu/l5qai4vNZe3fbmvUHRf+c/25b6yGeLvpdZa khcTwrWY+Hcu
RYgocZO3XeSFUkKk4gqRlBBCiPjl9/4dp8aWVs856Z9cikhL/o20APdPrgqk hEr/aYD14IP5
UiJ+8a2/45i9mRJCiPjl9kCncUcLpbX6kvIurohaciqPrrP2pXFRlmDd3c9f Zviyq2WEVDzc
NswSuPY+wyLnbth7PU9MCCG846FWgw4XVa+5numYfVmUrBH+qdHtA/flSxm3 SPhgVTf7iJh8
mhAqa+8oE4PQ47xmfxMQeq3p1llhAwP9AYAp7N64Mmn/2nW74l+UUNLS59kd UgTSwaYAYNIz
ItiWA2DSxdfF2egNbzMWgLWXl2lJBp8irNv/3K1gn49eeJUFQBUIBA+vZIjC rBVipRsUx8/u
sfhs9uT7CbEXL587tMD/m5hDDw5Oqh2AyDTqAOMWSVWOW4CQztCtUtjQQH8A UA67r7y1cvya
0i3n48e7mVWce9N9JVWdgM+umpPNYXO4nKqLVzYbpASASKVc+8DwiaGWbACA SVHGLm76yp0x
Y4zjZxna+4yY4jNiysxxNl2DdlzhTxpWeymVow7U3SKV4xYgpDN0qxQ2MNCf maTgBd8mrH9n
M460IP73hEJ6hAYLsSz6jOuafzTLcdU4DwMAoEqLJcZ1bgk2II6fyrt1u6Jb v84mbAC6ND29
3NjWgtvYFP4GjVuAUNukW6WwoYH+jEwDlkwVjvfre9Cdzdfv6Gyp2S7kus/e u/nemwNdd3q6
m1dkpLLG/X3pSz/FS9qGxPF/aXZu+YjBD43d3KzprCdpFhE7jgeZgV5D0v8V 141x3AKEdAkG
+teiJtC/Fro8Ny2Xsm548L6En5WeLza2c7Y3a/JvIaosLyObT9o5dLQzbbbB mDQbtwChtka3
zgqbDcfErkujgve55o6uzfUpFT1T284ets3SVEPHLUCorcFSiADHLUBIJ0ph UwL9dQSOW4B0
nE6UQtDhGocQ0gTGMSCEEJZChBDCUogQQqA79wrxsQlCSA2dKIUY6I8QUg8v kF9bmOOP0KuD
pbAFqAnW1xzm+CP0CunEBXITNCamnwgVg/U5LIb0f81gjj9Cr4pulcJGBfo3 MKZ/ikWCYrD+
gfevREbVTf9XhDn+CL0OMNC/3kD/Bsf0KwbrM6b/K8Icf4ReA7p1VtioQP+G x/R3VlicMKX/
K57+YY4/Qq8B3SqFjQr0b3hMv8KTXdXp/xrAHH+EXhXdKoXNEuivQEVMf3lN sL4G6f+Y449Q
69OtUtgsgf6KmGP6TWqC9b87sniqcIK69H/M8UfoNYCB/rVoGuhfh/qY/kan /zPDHH+Emp9u
nRW2FPUx/Y1O/2eGOf4INT8shboMc/wRqqITpRAD/VXBHH+EZHSiFILu1TiE UINgHANCCGEp
RAghLIUIIQTaeK8QH4AghJqdlpVC+Yel643bwmh+hJDmtKwUKpqy6g/lifvW v61mEUqQnZol
4Fi7uHQw5gCAJPPckafdxoc6NeVrIMyNEClNSwmLxeFwmv5pvWZZT4SQatp6 r1BKmAuMqukq
ovBvR8+Kvl1RX2fqA/oZGylLmGbD1be0aW9tYW5h23XIzG8v5lONa19VFwih 5tMKpTA+Pp5V
n/j4ePWNUDQQwiWEC8AF4AKp+ptSMfSR8L4sCj/1wfXr91MKM47NdNWvMwuh aVoqeyUuzkhO
K6iUVv1AmHvzwvXsypqxloiYl/nyZSZPorh0eW5qWqGwJunKwHXppZziYh6/ 4PH+aZLvRgZ9
er1Mtu6lOcnPU/LkozQptV93hur5KH5WcnqxWCFMi2lOIipKf/E8Na9MofTW 2SKEUB2tcIEc
EhISFxc3adKkw4cPh4SEKP4oPj6ecboyirD/3P2jcsIeRZiLO0MUvqLK57+/ H76Vu/LYzgnU
frUB/Ue+dPl7xvgVV0y6u+rn5XTaduXAQAAq889ZwWsVs/IVG+fa9H73+98u u4dHx6845PhN
6ORa+f5uFec1GQBAkrJrSsB6gUFlYpL1RydOrPRrJ7q7uk5T7gZ0/qmPQt87 bdi9i2FJuuiN
g/HrfQ2VhhyY2rnubwGEUGsF+sfFxdnY2MTFxamZokwezf/V0r6M0fxfLe3L HM3PHIUfE2IR
8nfyfxuGdgn8LLaAqj+gX5y0rY914HfPhIQQQigxxZyVT0rjomxdl92trO5e WnBgoJHH+idC
pnz/egcA4MWEcAxDd2dQhFBZe0d38Nn8TMw4Z8mRYbYjjhRV9UlJiYotQgjV 1mqPTUJCQg4f
Piw/B9T8fFBGQjOf/amaDkYqovAr76wcHOG8+PTp+T1MWKSwnoB+wr8T89xj VkTVUE3VudB1
s/IJGDKtAwuAVCYdUMr3V5yHcQAAADDxmTbSgQMA9iPf6Tp/x8PSZW56ynPa dB/jeWNm6Jux
E0aPnjAxtJs54TNukTXj+iGku1rzCbK8Gs6dO3f79u2a10EAENMsxmh+Ma36 eS1jFL6+Y9Ag
7qkTZ5Le6+5rWn9Avwp1s/KVlD06+0K/W2+LBysHqs33VzsAAKveOfXdF1xI Hnnp339Px3wS
sHr/gfu7+jJuEUKotlb+MI2sGg4ePDguLk7zOggAEpq19avDoFR0KBWlkDkK HwA4tqO/Phyx
eeSY0ZV/H1/Rp76AfvPe4W7Pdhx8NnFBV0MAWkKz6/98izj/5h9L3j1kNTs+ 2CT/B4Z8f7YG
AwCU3993NjtqmiPkntvzzGVkD1PJC4Y5qVIe1c5z8GTPweF+PK/3r+ZQwxi3 CCFUW+t/rjAk
JKSsrMzExKT+WRVIpOwVS8YpT1+76Azj/FQ+UxR+JQAA6NkM3XTuz7VvvDmi cv+pFeoD+n9I
+HlP9PXwALddPVwNCgvdtl3eN1DFKopebglov0OfRcDExW/cx+cuftjPhFW8 ZKpwfN18f00G
ADDsYLA/vP/PRsLERIu5xz/00Ddtr9yUtPDk2/0Wv3T2cmBnPcrz23jaw4Cr zzTkgLGKdUZI
V2lZoL/82yY/rBmz4dvtyjOsXDB33poTwBzNr3EUvvqAfgAiKsrI4LFtXJws Gv6h53rz/VXO
IOFlpPONnVysqzNWmeaUVhZmZJYQS2cXG8Oa07/6tgghHaet/y8oFfcKVV0g A0ADovDVB/QD
sAysXdysG7K+CurN91c5A9fC2dWivjnZRjYd3W2UFq1nixDScdpaCmnCZhzG k8PGG2EIoQbT
slIoj+Z/c97vquZJzeUBJtMghBpCy0ohYI1DCLUAvJxECCEshQghhKUQIYRA G+8VNg4OA4AQ
UkMnSqH8g9mazInVECEdhBfIDSTJPPfnuUxJ/TO2XCOUIPvF08SU/OrA1tdg lRDSdrpVCi/8
EMz4BwAWzPtIoyZabgwATbziYQkQ0hk6cYEsJ6TYM9burjPx4eUbsheRb03Y /M1vdZchoqKM
jGKpmb2TrWndvUVoWsricNgARFycmVlqaO/c3ogN1Rn9vSopyojF0eOwAIiY l5VRBNYKX1sm
dHluRqGenYuNoYYjQVUPS3Blkh0HQFqWnQP6AKLWXCWE2gbdOissF9cqZmOj n46NfrrqVOW8
5RsAwM7G6ZOF7ynOQOefmuvT0W/SrDnvjOoTuOquUOFnlc9/n9K914xDqSJh 0q5p3p0DImZM
DnL1fntvipiUnP/0s4Tiq8uG+/sPnX+2uOLpz5O7OfYKnzFzUkDPyadKAKrG AAgKjwh1txuw
4W55nRUl/ITlkYtO5tcZi0R5WAJTxTewRVcJobattQL9XyX5MACr5gVUCp9U Cp8IRTV/4k/v
Ss3lhU98u3/IkDrDACjn47fgGACKpLyLK6KWnMqj62zJKx6WACGdoVsXyOVi PeUQB0M96Uc+
4wHg0MF/ZN9fljOum48PAC02BoCpwiUpyzxo474g5Q14xcMSmOJVMtIVulUK P1p3XNWPvv3h
O+WJSvn4u0fpvbIxAFRozWEJEGqzdOVeYdwTSUBkdEBkdNyTuh8YCYiMzuJx snicgMjoOj+q
zsdfuHnXjki9W1dzJACyMQAu7PY5MGb0xmt8YtFnXNf8S1mO/sHBwcHBwQN9 Xe2M2TUZ/cCq
HgNAdqORltCa1BhhypmDJ5+V15mVyrt1PaVcdgNRaViCll4lhNoyXTkrXLF2 69VDKwAgIDJa
9kLur52rJs5aL3shERYp/IQhH79lxwCQI4Ira2dsnfx4hKeJ4jvUCsMSIKQb tCzQv3ES7qdN
XvAjYylUPhPMjt+s+E/mfHxlLToGQC2vx7AECLUtunJWqMrVQyuyeBwVZ4UA qvLxlbXoGAC1
vB7DEiDUtujKvcLo1Utl9wqjVy+F6pNB2d8TZ63/a+cq+WUyQkgH6cQFMmAy DUJILV25QMYa
hxBSQ1cukBFCSA0shQghhKUQIYS08V4hPgBBCDU7LSuFGM2PEGoJWnyBvP23 xNHhn8j/OTr8
k+2/JaqenUhpiqLoFvi6LSXIep74IqesJu9AVV8qpkuy4/46myqCltXEXoTJ p/fu2vX7X9cL
6891aE7y1W7RvSTJPH84Nqt5xjNQPh5aqKNWoW3HMJV76dDuXbv2nssQq59R W0vh9t8STx7d
deroZllB3P5b4qmjm08e3aWyGpYlTLPh6lvatLe2MLew7Tpk5rcX86kmrwaV sS+yi4Vz/7CJ
I3vYOAzdcJUvVdOXqumiZ7vX/+9eWQtnIjStFynv0rp5X90sLBe94uyGyvtf zll/RUBadi9V
3I6eveluk8czYD4eWqCjZqB+gAdVtO4YJrSwLP/qF7M33qgvjFi7oltlIaxL o6959Z8lS2P1
6j9L9kf+z6XR11JzeXVCWElpXJSt67K7lYQQIi64/ds7XYw8Pr5WSoiUoigp kQiyk1OLRFJC
CJEIsl8mJeeWU9XL0hQllb2SzVz9kiZ0yeMrj4skhBBS8SDa29j3m5cS1X2p XgeaoqU17VOl
OakZxSIpIUQqLslMyeJLFDdFKipKf5maXyHPda1aqiwnJbWgUlozn7Aw7XlS Sm5p1dLyXggh
hCrLSX6p2LCKRuT7IGf3AIdJ5wU1U1S0oLgnpcKCtOQsvqR212q3RTaxJOPF i4wSMSGE8E+N
bh+4L19ady9JJbzMl2lVHTFur8r2FbsSFqYlZ/ElJTGDrUOP8xi3osnHA3NH SmvCtK8Y11/V
e9egw0ZaFDPMKuhgnkQioaS1t5qu2aqqza3pXiuPYf7JUe2D/ypW3umKtLIU KlZD2QtZ+ZO/
qKcUEkKIIP49W/Ow48W8mBCTzm+O8fXyHTD+q8fCyjufB3r2HDhkiL+bTafx O5OEhFDpOwNc
psaWElJ+9UNbsP3wajkhgtgpLgE70ymFHkpOhFl5rn4kUt2Xquny/+28mBBT 18gJ/Xv28XEx
c5q48+gXYb69ene1Nvacd76IJoSQyme/Te3u4OEfEuBp7zVtT7KIEMKLCTF1 i4oY6OvXz93C
3H/9nTJCqLyTc3radvEbMmyQr0f/lXcqFWqKVHBr8wjnDt0GBHrb2wV+FldI q2hEUa1SqKoF
xT1JF8Uv97O29Q4M6tt/zPhO7ZT//zNtC6l48tNbnjYuvYMH+3ft+tbJ4prV VtxLJh3DR/ft
EzjQy6Z90LrrfCnT9jK3r0DKu7o2sH2H7oGBffq9Ma5qDVvieGDsqNbOZdxX TOuv8r1r4GEj
LT77QXcu6Ln06tNn0OzTyUcUtvru3Q09XabHyd5qSeqPAxzC/imoLixaeQy3 6VKYmss7dj5V
fjIoq4PHztf8tL5SKC04MNDIY/2T/JgQPdMx+7KqDmKpuKLqPEP88nv/jlNj SwkRPV7r7bH4
VqXo0RpfjwEevmseiSpvLfLwXvdY4T9X+d31va36b3smUtNXkYrpBQqHEddi 0j+5FJGW/Btp
Ae6fXBVICZX+0wDrwQfzpaqS+hmy+BmGIqg+jERPNvSwHrYrXUIInXckwrbz wpsVpN5Af8VS
qLIFhT0pfLCqm31ETD5NCJW1d5SJQd3//4zbwjDSAGMp5BiG7s6gCKGy9o7u 4LP5mVh5e5n3
lQLRkw3eduGHsilCJGm/DTXUry6FzX08MHekgHFfMa6/mveu4YdNzQAPdbaa Sv95kFP4PwVS
QkSP1/VwmR7Lr/f/0Wt9DGtUCrXsCbLcni9GTPv0zKmjNYFastey6Zq2Isur N+k1JdS+Ku6K
VCbtX7tuV/yLEkpa+jy7Q4pAOtih0/BAavaFlHSzC9wpn0w5+eWl9AhBHBW4 o5N+VTvilD3T
w3/13H5xvoc+c0/VfdU73aRnRLAtB8Cki6+Ls9Eb3mYsAGsvL9OSDD5FWKqS +pWy+JmHIgAA
IPz7p9M9PxztpAcAHQa/00+w8mou1ddK80B/NS3I9yThP4zN6750UHs2ANiH Tull/HvdRhi2
RTjgGdNIA8pMfKaNdOAAgP3Id7rO3/GwdGHPOtvL2L4ozNpQYSvOZHktHGbP AQCnUW/7mlR/
E7+ZjwdSoKoj+Zow7Cvm/ROQqGrPN+qwqbVLa7aa4zRucb/1Xx/LCnsrc8cu UcRfAe1UvA9V
tO8YZqCtpVBCs/747VtQun9K0Rpuedmjsy/0u/W215cAi2ukX7VU5a2V49eU bjkfP97NrOLc
m+4rKSkBMO4W5luw4cQJU8GADYGjSj7//ORxQYHv592MAQBAnLb/3aGf0Wvi 9rzlzJz7J+9L
k+nsqv//bA6bw+VUjW3HZoOUgJqk/rpZ/AxDEdRaN8a91KBAf6YWFPYkm6sH EhFNAFhAKBGl
1BrztjxT36nKFVDa3l19GdtX1QhLcWCZljgemDqqxrivmPdPYt0Nr2mjMYeN 4p6o2Wpg2Qxd
PHLJgv2329+LMX//grchqKTVx3AtWlsKpewVS8YpT1+7SINTQnH+zT+WvHvI anZ8sAWcr9Vs
wQu+TVj/zmYcaUH87wmF9AgAADDzHe/+cG605dgDnlZdx3g/nRxd0mO7jxkA SDIPvz9kWeny
2D/fdTWot6+bKqZf1GyjWRZ9xnXNP5rluGqchwEAUKXFEmM2MD0ErB6KwHNw uB/P6/2rOZJR
LlWNmPuM6pj0+79ZEe84sfPjdt9sF7LaTg/q+aRBrdXQoAWWee9xrk9+PPQ8 bK679NHeHbfK
LQEApLx7x88U950wxJHLtC0cvaqRBiYu6GoIQEtoNvMvl/L7+85mR01zhNxz e565jOxhqrS9
1DDGfaWwAua9hjs82RObFzbRFrJP77nH9ICxOY4HFnNHimvCsK8Y32sOpzHv nYrDprx6gAcr
hnNv037zp4iGTZ9Lua7Z4srh3Ttataq1ZtLiY5iBtn6YRiJlXnNV0wEARC+3 BLRvZ97OrH2v
6YdMPz53cUM/kzqzmAYsmSpc5tc3ZFC/4d9WOFtW/aZgW/uHdeTz3MN7mYJp r3B3Hr/jWH9r
NoDw4TdL9iRnnV7gY2VsbGxs3uPjm5Vq+9JgHdTgus/eu7njjoGuPQMHB/V2 6xwS/VDIOKO0
8OTb7k7dBwwLDezzZqzfx+941NRpfc/5vy2Flb17BAzw7vlh9ozfPuttpPkq aNoC13XWH9FO
OwY6Obn5L0vv72Wmx2YBSNIPL35/y70KVdvCdZ+9J9rxhwA3n6Dg/t16Tj/D Y+geAAw7GOwP
7z8oqFev+SWz//ehh57y9jLvK4UV0Pect3Nm7uyePoMG9R//p4kt06lPsxwP zB0p7gqmfcW4
/o1775h3hUmfOVFkdR8Xl+5RxwqVTp8Mur47xyWpJHBRuCNHYVUB2sgxzEBL H5ssnBlUa0Rj
YdXfC2cGMT820RxVlvPyRQZP3Kwr3qzEvMwXScnZAonaueiKgtSkpJSCSsYP klCl2S9fZGq+
lXTO7gDLfiv3nLpXRDW0BcHF2Z27rrgvZPoZ07ZIhYVpz6s/TKOMFxNiERJT Ii5Jf5FaKJQ/
CmHe3nr2lVRYkFLPm908x4MGHRFClPcV0/o39L1T05Rqwoefe3WckSCof85G eWXHsCT/xvHf
P/Fu12Yfm9CErTyiMQBw2E0+z+WY2HVxbWojLaq+pH4Z9UMRcEztu5g2oE+W Wd+5n4anZqbk
C4lmLfDPTg/7lnh1ZKcnHH3s/+NlL8YbCEzbotFIAyyuhbOr4ncwmbe3nn3F MrDpVM+b3TzH
g/qOVO8rpvVv6HunpilGdEH8N2u//uWw1aLLAWYN76cZV6YZjmFSmZucZRa5 anbPes4btSzF
WvPvIKfm8vA7yK2LLk1/eDcxR2jk4uPn1cGg2YaXp/JvJKR2CvbroK2/xxm0 1L5qFFKe/N/l
ZEOvgX2cjVp3TV4lLSuFgMk0CKEWoH2/WLHGIYSanbY+QUYIoWaEpRAhhLAU IoSQNt4rxMcm
CKFmp2WlEAP9EUItQYsvkLU20J+i6/2aeOPi0TFzX1O6kLnfrIeZxrH42ktb S6E2B/q3b29l
ZmzdI+Kb2wJVx6r64HIVUeyYua8Jncncb9bDTPNYfK2llaVQXgcB4OTRXfK/ 66mGBq5LL+UU
F/P4BY/3T5N8NzLo0+tlAISmaQJUaU5KWrGYAABQpTnJz1PyKuSnDFL5+Z1s 5uqXUmCb+S48
kV6U+fTRi8ybCwu+mLs7lVLTV/V0niDn+Jh7y9/d+aLq3IMuz01JzhbIa7Np yK47f4Vbs6p7
pMtzU9MKq77yRoS5Ny9cz66kKKpuzWOZdHvzg3cG2eoxN8uwsURUmJ6SLaCA SFWcRRBxcUZy
WkGltPZEXubLl5m82udOdVabUPys5PSqjmSLiYrSXzxPzSujFJtiaF+xK1FR ekq2QCHmq2Xe
MoaOlNaEaV8xrr+KPU+X5aZllogJABAJLytVcQ7lpmq/0bW2WkrXuuaQ0nSt 7pv9MOM6hs74
cJxb0zMPXmNaGseg9YH+pXFT2tu+e6mMOZq8Vjx67YzyOlHsRTXJzJi5j5n7 dQ/15jzMNMqC
1l7aWgq1NdC/g8uHp5LSUp5c+HKUpemwPVkUczQ5v1Y8et2McsUodgWYuY+Z +1WHeoscZm28
FGrZE2Q5bQ30l6Tvnxt+ydTQoqP/2n/XTXZgF19kiiZXjGVRzihnjjNVhJn7 up25/4oOszZF
W0uhtgb667t++M+dzT41/9sBQPW4JzKNzijHzH1dzdx/pYdZG6GVj00AQCJl L1sybtnHdf+o
S7GWE+ff/GXOu4esZq8IrvMZRUnBC75Nf4UAd9lkM9/x7g83Rid6j5EFuG+M fuQxvlaA+/l9
qgP9VfQFAArR5BSAVBZNHmBX3+8ndnUUu0qaNCvP3BcCqXi0d8ctedD80UOx WZLq7PVLWY7+
wcHBwcHBA31d7Yw55lWZ+7LoYVqi6ml1+f19Z7NpALpu5v7Czbt2ROrduppD MbXPVlyB6ih8
GoBWm7nfxLdMRUeKa8Kwr1Tsn9mFiigAAAEFSURBVEa8ocxNsdW/0ab95k8R fTV97lnX+VGu
HPmqMrffModZm6LFpbBB0wFej0B/JY2JJlcfxa5xs5i532Yz95W00GHWpmjp Y5M2FujfyIj2
2jBzX80sGmj7mfuNP8w0jsXXXtp6r7CNBfo3MqK9Nszcb5q2n7nf+MNM41h8 7aVlKdYY6N+8
MHNfc5i537ZpWSkETKZBCLUA7futjTUOIdTstPUJMkIINSMshQghhKUQIYSw FCKEEGApRAgh
wFKIEEKApRAhhABLIUIIAZZChBACAPabb4xq7XVACKFWhmeFCCGEpRAhhLAU IoQQYClECCHA
UogQQoClECGEAEshQggBwP8BKVVz1OIDeV8AAAAASUVORK5CYII=
--------------080006010706000200070903--
Re: Custom serialization without XSD ? [message #657912 is a reply to message #657903] Fri, 04 March 2011 15:15 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33140
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------070109040403070300020209
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Ugo,

Comments below.

Ugo Sangiorgi wrote:
> Hello everybody,
>
> Is it possible to do some sort of customization without needing to
> create a xml schema?
Yes, with extended meta data annotations.
> Here is what I need, I have this output from my ecore model (see the
> attached image as well):
>
> <?xml version="1.0" encoding="ASCII"?>
> <SketchDatabase xmlns="http://www.eclipse.org/sketch">
> <sketch word="346754387453974624323422222" gridWidth="3" name="square">
> <points>Point(10, 10)</points>
> <points>Point(34, 55)</points>
> <points>Point(13, 67)</points>
> ... HUNDREDS OF points
> </sketch>
> </SketchDatabase>
>
> I would like something as:
> <?xml version="1.0" encoding="ASCII"?>
> <SketchDatabase xmlns="http://www.eclipse.org/sketch">
> <sketch word="346754387453974624323422222" gridWidth="3" name="square">
> <points>(10,10)(40,56)(100,39)..</points>
Unfortunately this requires the points feature to be a single-valued
feature whose one value is a list of points. And if you do that, you
won't get a multi-valued feature that notifies as points are added or
removed...
> </sketch>
> </SketchDatabase>
>
> So I would save ~22 characters for each point.
Perhaps as an alternative, you could make the points multi-valued
feature transient and define a non-transient derived single-valued
feature that's simply returns the multi-valued feature's list. You
could define an EDataType for that new feature that's a list of points,
and then you can define the string conversion for that point. You could
even suppress that new feature from the generated API so clients don't
see it. Kind of complicated but should do the trick without
specializing any serialization code.
>
> My Point object is a draw2D object referenced by a DataType.
>
> thank you very much!
> Ugo
>
> ------------------------------------------------------------ ------------
>

--------------070109040403070300020209
Content-Type: multipart/related;
boundary="------------030202040504010408050502"


--------------030202040504010408050502
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Ugo,<br>
<br>
Comments below.<br>
<br>
Ugo Sangiorgi wrote:
<blockquote cite="mid:4D70FBC9.6020206@gmail.com" type="cite">Hello
everybody,
<br>
<br>
Is it possible to do some sort of customization without needing to
create a xml schema?
<br>
</blockquote>
Yes, with extended meta data annotations. <br>
<blockquote cite="mid:4D70FBC9.6020206@gmail.com" type="cite">Here is
what I need, I have this output from my ecore model (see the attached
image as well):
<br>
<br>
&lt;?xml version="1.0" encoding="ASCII"?&gt;
<br>
&lt;SketchDatabase xmlns=<a class="moz-txt-link-rfc2396E" href="http://www.eclipse.org/sketch">"http://www.eclipse.org/sketch"</a>&gt;
<br>
&nbsp; &lt;sketch word="346754387453974624323422222" gridWidth="3"
name="square"&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;points&gt;Point(10, 10)&lt;/points&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;points&gt;Point(34, 55)&lt;/points&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;points&gt;Point(13, 67)&lt;/points&gt;
<br>
&nbsp;&nbsp;&nbsp;&nbsp;... HUNDREDS OF points
<br>
&nbsp; &lt;/sketch&gt;
<br>
&lt;/SketchDatabase&gt;
<br>
<br>
I would like something as:
<br>
&lt;?xml version="1.0" encoding="ASCII"?&gt;
<br>
&lt;SketchDatabase xmlns=<a class="moz-txt-link-rfc2396E" href="http://www.eclipse.org/sketch">"http://www.eclipse.org/sketch"</a>&gt;
<br>
&nbsp; &lt;sketch word="346754387453974624323422222" gridWidth="3"
name="square"&gt;
<br>
&nbsp;&nbsp;&nbsp; &lt;points&gt;(10,10)(40,56)(100,39)..&lt;/point s&gt;
<br>
</blockquote>
Unfortunately this requires the points feature to be a single-valued
feature whose one value is a list of points.&nbsp; And if you do that, you
won't get a multi-valued feature that notifies as points are added or
removed...<br>
<blockquote cite="mid:4D70FBC9.6020206@gmail.com" type="cite">&nbsp;
&lt;/sketch&gt;
<br>
&lt;/SketchDatabase&gt;
<br>
<br>
So I would save ~22 characters for each point.
<br>
</blockquote>
Perhaps as an alternative, you could make the points multi-valued
feature transient and define a non-transient derived single-valued
feature that's simply returns the multi-valued feature's list.&nbsp; You
could define an EDataType for that new feature that's a list of points,
and then you can define the string conversion for that point.&nbsp; You
could even suppress that new feature from the generated API so clients
don't see it.&nbsp; Kind of complicated but should do the trick without
specializing any serialization code.<br>
<blockquote cite="mid:4D70FBC9.6020206@gmail.com" type="cite"><br>
My Point object is a draw2D object referenced by a DataType.
<br>
<br>
thank you very much!
<br>
Ugo
<br>
<br>
<hr size="4" width="90%"><br>
<center><img src="cid:part1.03070601.03020409@gmail.com"></center>
</blockquote>
</body>
</html>

--------------030202040504010408050502
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-ID: <part1.03070601.03020409@gmail.com>

iVBORw0KGgoAAAANSUhEUgAAAa4AAAEICAIAAACI0oc+AAAAA3NCSVQICAjb 4U/gAAAAGXRF
WHRTb2Z0d2FyZQBnbm9tZS1zY3JlZW5zaG907wO/PgAAIABJREFUeJzt3Xdc E+cfB/BvEsJG
prJxsBRFwYGgIDhwVUGtQkVtba21rrqqtVbrpo7abf3Zpa27thVnnQy17j0R lb1nElbGXZ7f
H4EQyCWEJYZ83y9fvuJx9zx3l/PLjeTzsCKipgBCCOk2PQAQC/itvRoIIdSa 9ADAxMiotVcD
IYRakx4AsFisJrby/ootmsz2S/SyJnaEEEItQa/pTby/YksnOwsAiFq0Tz5x /9cMtyDfX7EF
qyFC6DXUPGeFcv/tnwMAA6N+VDWDcl8cI0sbKyNpaVGRQCQFAI5VDz/H7BsP i+kmrEezNIIQ
0hnNcFbYeGzzXlOXfjjYqjirGMztrUv/jV79Vzq3y9j3R5+5/7C4Qu2yBm6T Zvs/2Ln3WSXj
TzVrBCGEAEB+Vpibn382Nlb9rMOHDLHr0EH9PGrOB2UUzwq5ncLeHsTfvXj1 DZ4UgGVoaQk0
i6XPYrGAxZLNyGKzWUQqJQAsPVNLK0MJr6hUTACApW/ZpYdbhr6enoRIadkM xpbWZlBaWFxB
A0vWCMfQ0tqM5hWVSogmOwMhpKuqzgrtOnQYPmTItZs3jx47FhISojhHfHx8 eFiYf79+9dbB
/V9PiVq0T36XsN5bh2x9E32pRELLyhQRlhTX+rG+XeAHH4+mj3z9yw3OwA8+ inAV5pQZOxgl
79v623/lXd+K7Gpqb7di/eiKF399ta/I74OP3vIQZebR5pYFez7fkQTAtvKb +fm49nqG9vZl
J9ZvPpIqatieQQjpkJp7hfa2tgF+fuFhYYrVUFYHA/z86q2DjH4Z9hYAvH/+ oHyK4lmhOPXf
f9M/X7jjx/SnT58/ufNf7LVkAQ0sAAC2qWfYzDneL37a9NeTivYjV0wyObFq 2dVimtMh9JPP
p/W8//XdAwcS+4+N37juZhlw7Eavmmx9YfWS8zkSADaHTViGANx2elfXrr3J Z9uPXbMqzPX0
90+Fjd5LCKE2rta9QrsOHRSrYePqoOLJoDBD7azijNNfzLnm0q1bN8/u/u+s GtX3x0++vykG
4HZ+c9VHxac2bzuTISIss879OhqQ7uHT3AgAp52RkbObtd7dAnkrLOPOfW1z LtzIlQAAgJSW
AgCAKP3GU74UQFqSVsDybcdlgRCvkhFCzGRnhTX/trftMMDPLzw8bNGixV9/ /dUAPz8724ad
DypeIM97drDOT5UeIEv46Q+upT+4Fner7MvVQzyNbz0CoIuTEulevj3tEzLT hMBis2jes7s3
HpYTAICbV8TF+RSLLWuupkEWC2raZgGAlCbAYgGwgBAWm63cNUIIVWH4MI29 ne1AP7+1a9eO
GjbUzta20U0z3h9U7Itt3qWTflZKgYgAsI1srA3EggqaxWKBVPBw77e3xn6y cJn+9m1HU1Nv
57TrY1kSczdXAgBsQ1M9MbAMaCGtb2bIYZVLhWm38+2H+TvcOJdddYFMs1gg e/TCAmDJKmYz
fmQIIdTWMH+Yxs7WdlpkhJ5ekz5qU+9jE067HhM/+cxJlJdfxrZ0tKm4/tu3 z4SgDwAA0tIn
B7/YMWHp3E/0d249+tPBjnNXfx2Sk1upb2UDt39Yty9FlBJ7BWat/25M6dO9 G375+U+3j9Z8
HZiRR5mZ5e1f+1NSU1YcIaRzWBFRU0zZTWri7Y83yr5tArXLHyg8NpGVwtRc 3h9fflZ7aY6B
uZWFEUvIK+QLpeq64RhbWrfjiHnFPOb5WHqmltYmpLSwpAI/V40Qaphm/oi1 4tlf1KJ99Tw2
AQCgRfyCPE2SceiKknx1H5gmVFlxXpkGDSGEUF3N/MW7Opgem+AdO4TQa4cV ETXFjNPU8jRt
yQZNZtuzbWUTO0IIoZbAioia0k6vaTcLEUJIy+kBQGFxSWuvBkIItSY9ADhy /HhrrwZCCLUm
vDRGCKFWzStMuJ+myWzBvTq29JoghHRcq5XChPtp8g9m1zsnVkOEUIt6vS6Q lw/TdOQTSpD9
4mliSn71N0skmef+PJcpaVr3zdIIQkgLtWqgPwAAxC+4SkuqvkrnaNbxwpz/ ZK85XHbItwEM
C9B5p5aGTfsl27GbAyv/ebr1R/GX1/QS3Y6e9c3CEaFO5mo7q7i+Yvpfo37d GmTG+FPNGkEI
tTlNOiuMj49n1Sc+Pl59IxIhbedl5dy3g7mDiZeDj/y1RMj8VWLh/a3z/rD7 X1Lqg+vX76cU
Zhyb6apfZxZC01WhhURcnJGcVlBZVWqJMPfmhevZlRRFVWdni3mZL19m8iSK S5fnpqYVYroh
QjqkSaUwJCQkLi7OxsYmLi6O1CafXmd4AGVESrjGemYdjPVNuUWCAvlrImWu RXRFSSXb0FBP
9g0ZtqmDY604icrnv0/p3mvGoVSRMGnXNO/OAREzJge5er+9N0VMSs5/+llC 8dVlw/39h84/
W1zx9OfJ3Rx7hc+YOSmg5+RTJQAAVOafs4KDwiNC3e0GbLhb3pS9gxDSHk29 VxgSEnL48OFJ
kyYpnv3Fx8dPmjTp8OHD9dZBABBSlYLs8oIXvPJCYTo/Wf5aSDGOZQcmfRYt 7XUuzMHJN/St
eRv33civOaGji69sHDvyl87b43+Ncs786Z1VvE9vPL4ad+Xh5bkpny4+XWwR umVTiNWAbbG3
biX8OKTof9M+zZz7X9Lt+NirTx/9McICAEBUKI78++b1G4+ufVq+ffN1jHdA SDc0w71CeTWU
1b4G1cHlw5Y5mnUUPqsAgHR+MgDE34h1Me8CAHllWcuHnd90fkvdZYx6LD6b Pfl+QuzFy+cO
LfD/JubQg4OTjAEq76wcHOG8+PTp+T1MWKTw9j93K9jnoxdeZQFQBQLBwysZ orDO8lYI/07M
c49ZEe4GAADA4XIAAMDEOzLElgPAcfDpTE7mCwmYYn4EQm1f8zw2kVfDuXPn bt++XcM6CACb
zm/5c1pM9/6eXGO9Ltmd4m/Ejho+imusJ8guh2cw/8hc5sVYhvY+I6b4jJgy c5xN16AdV/iT
hgHoOwYN4p46cSbpve6+pkCkUq59YPjEUEs2AMCkKGMXN32oP8mwuiYCi81S dY2OEGprmu3D
NLJquHbtWs3roIyYFsnvD7qYd5G/FtPMo3VSebeup5TLnoPQpenp5ca2FlwA AI7t6K8v7PY5
MGb0xmt8YtFnXNf8S1mO/sHBwcHBwQN9Xe2M2cA2aMetLCqnAVjmvcPdnu04 +Ew2Dh5dPQYp
QkgXNeeHaUJCQsrKykxMTBq0lJgWCbLLhQJxeaEQAOSvVZbC/HPLRwx+aOzm Zk1nPUmziNhx
PMgMZPcV9WyGbjr359o33hxRuf/Uir2b77050HWnp7t5RUYqa9zfl770M+kz J4pE9XHZ2D74
h4Sf90RfDw9w29XD1aCw0G3b5X0Dm7oHEEJaihURNeXQvr2vvmP5t00uLb3x PD1RNrFcXGqi
X/WRP3eXrkFb/QAgNZen9G0TqiwvI5tP2jl0tDPlqOtGws9Kzxcb2znbmzFW fSIqysjgsW1c
nGSnlgghndT6H7EO2uoXBH6y18uHLWN4TsJAz9S2s4cmg/FxzR1d1X1gmmVg 7eJmrUFDCKG2
7PX64p1mdRAhhJpZq50VBvfqiMk0CKHXRGteIGONQwi9Jl6vC2SEEGoVWAoR QghLIUIIvQ4f
pmkofNiCEGp2WlYK5R/MvvBDsKp5hs5LABwGACHUEFpWChVNWfWH8sR9699W swglyE7NEnCs
XVw6GHMAQJJ57sjTbuNDnZryTZNmaQQh1Kq09V6hlDBnZ6maDnTeqcX9bZ36 T5j+zrj+TjZ9
19wXyhL8o29X1NdZxfUVEUsvlar6qWaNIIReY61QCptlGACKBkK4hHABuABc IFV/UypiuHAY
AISQGq1wgSwbBoAx3lXz2FeKsP/c/aNy3aEIc3FXHgag1o8rn//+fvhW7spj OydQ+2dOWHnD
zMO65Bnfb8uJX6ZYJHz6WULxs6Th/lvN/TYe+dLl7xnjV1wx6e6qn5fTaduV AwOrhgFYmyou
S0qyXhJ3fqVvw8J5EEKtLiJqCmkNyoOiqBomRVH8vdTUXF5qLu+rpX2FovvK f75a2lc2Q/y9
1FpLVjzcNswSuPY+wyLnbth7PU9MCCG8mBCLkL+T/9swtEvgZ7EFFBG/+Nbf cczeTAkhRPxy
e6DTuKOFUsI7Hmo16HARIYSIk7b1sQ787pmQEEIIJaakhBcTwrWY+HcuRYgo cZO3XeSF0mbd
Uwihltdq9wrrDIrSoGEAAEBCM6+5qumyYQCyb+z6eKx72akF/t2jDufQAFXD AFwMO3p6/WAb
DuHf/uduRfn56IXz5s1btCVBNgyAQivKwwCwAGqGAdB38OlMsvPxKhkhbdOa T5AbPQwAAIhp
FiFcAGDJLnkJAAuAgJhWPRQJDgOAEFKhlT9MI6uGgwcP1mSYUEUSmrX1q8Og VHQoFaWQyrt1
u6Jbv84mbIZhAA5HbB45ZnTl38dX9Okzrmv+0SzHVeM8DACAKi2WGLOhvHoY ACtO9TAAExd0
NQSgJTQbP0KDUBvQ+p8rbNwwABIpe8WSccrT1y46wzg/DgOAEFKj1QL9G0f+ bZMf1ozZ8O12
5RlWLpg7b80JwGEAEEIN0fpnhY1DqbhXqOoCGQBwGACEkCraWgppwl4yZ7by dA5bW78/gxBq
RVpWCuXDALw573dV86Tm8gCTaRBCDaFlpRCwxiGEWgBeTiKEEJZChBDCUogQ QqCN9wobB4cB
QAipoROlUP7BbE3mxGqIkA7CC+RXRZJ5/nBslqT+GQEAgEhpSgEt/7I1Jch+ 8TQxJb+i/owI
SXbcX2dTRfXOhxDCUvjKVNyOnr3proa5/2UJ02y4XDNLKxmHQV8milWMSaB6 sAHRs93r/3ev
DHNyEKqfTlwgN56UplkcDgsACE1L2fKXhMNhAwDQ5bnpeVJrF4d2VTtSNhsp y8koNnB0sdJn
AREVZWSLLJyNG9i1geuyuEebfQzlE4R3ZGMSXJlkxwGQlmXngD4QXu7NC9d7 VVKUEYujx5bW
6j1k151gFodVvVZQkZtRqGfnYmNY/eVEIirMyBZbODuYsWnC4rDVfGkRobZN t0phvUOG1kZn
/BIUeGnj4z2D2dfmdAk4Mv5q8g5/Om5aj88GXb400+Le1knjt6U7e+ilvDB/ 70DMuhBrNv/Y
MMdF1oMtnmYZeU77+cBCx7vrx4RtL/H0MBSZOxcoXx0TfsKnH8QEfb/tjQ71 np8zjElASs4p
Djawe/gm78U1vc9Im+AWPeXxxSj9Y8OcPnYYbftUccgBaXHCZ6Pe3FXZzcNA Yu6cd7Hs+/Sz
Y9R98Rqhtky3SqGQYs9Yu1t5+q+rpzPNzrENHGm+7cQz4UDDM9fNB5hfP5Mi 9hEev2k+aoUt
nbh1+hZ63d0H053Z+TGTe763Ydzjr/sCgKhANPnygygHDoD46cYPdlj/cC8+ wp6k7xrpeY6h
3LE5ehzGKih++evU4ItmbACAdoO+/mezf59FS3sNCnNw8gkeNDBk7NszI/w6 WIZu2RTy19YP
YhMmWgHwj25S6B0ECg/NRYXiyMs3J9jSzzb3Ddl8feHBgSnfzP69068PD4S3 J9n7xnqca+i+
RKhN0a1SWC5m3l5V0/U7DQ+kZl9ISTe7wJ3yyZSTX15KjxDEUYE7OnH5x06n e3442kkPADoM
fqefYOXVXKqvFYBJrymh9hwAAMK/fybLa+Ewew4AOI1629dEKQyNZR60cV8Q Y996DqNXfLPA
Ux8AWHqWbkYA7B6Lz2ZPvp8Qe/HyuUML/L+JOfTg4KQ61901vdeZXjXkAMfB pzM5mS+U8h/G
5nVfOqg9GwDsQ6f0Mlb5nW6EdIFulcJSsR5jtFepilIIxt3CfAs2nDhhKhiw IXBUyeefnzwu
KPD9vJsxiAEAmO6tsbhG+orTq1+zGngjjm1k7+XbR+FeIYCKMQnU9S5Xd8gB NlcPJCKaALCA
UCIKH64g3aZbpbBcrMcY7WWop2o/mPmOd384N9py7AFPq65jvJ9Oji7psd3H DFiUz6iOSb//
mxXxjhM7P273zXYhq+30ZAWyGsu813CHJ3ti88Im2kL26T33ypXbF6aciXnS aexoT5N6KyXz
mATsmsEGNNoF8nXrPc71yY+HnofNdZc+2rvjVrllQxZHqK3RrVL40brjDVyC be0f1pH/n214
L1Mw7RXuztubN9bfmg2g7zn/t6UJ43v3+J8bJyXZcsbBHb2NoHYpBH3PeTtn jg7v6fOdp0Gl
mbOtoVItJIIra2dsnfx4hKdJ3XdC9HKLn+X3sockes7vnb77pRnTmAR6CoMN HIvQfMO4rrP+
iL41caDTF+0ceowa5GWWjM+PkS7TskD/xtH82yZMwwCoQ5flpOVJrV0czVUG +xNRYVqm0NLF
SfUsDaDxmAQNUXppTq8PLGPubexp0FxNIqRldOussNlxTO27mKqfhWVg08m1 2TrUeEyC+vHP
Tg/7lnh1ZKcnHH3s/+NlL6yDSIdhKdRZ5kO/39PhbmKO0GjuZj+vDgZ4fYx0 mU6UQvkwAJrM
2dIr8/rgmLn4DHLxae3VQOh1oBOlEHSsxiGEGgrjGBBCCEshQghhKUQIIdCd e4X42AQhpIZO
lEIM9EcIqYcXyM2kxdPzZRH/NN38uQmUIOt54oucspohAlT1VTXMAC2tbyVw LAGkbXSrFF74
IVjVn6Y2rT49X03svobKEqbZcPUtbdpbW5hb2HYdMvPbi/lUE9qToTL2RXax cO4fNnFkDxuH
oRuu8qVq+qqa3r69lZmxdY+Ib24LVJXElt4bCDU3nbhAlmtgdCtUReGziSA7 nW/k5GxVE4BV
N8rfVF16PhEqxu5zWERUlJFRLDWzd7I11fwdMHBdKov4lxTe2fvxpJFBmXG3 t/Y3URpCgCrN
Sc8Vmji62BrLvqaselgCtpnvwhPp+7ys9KDy4Rf9/efujrqxoIuqvrrLp+vz r6zoN+TdnW/c
XurObere0HgHINRydOussKHRrcA/NszcdfyYgKFvvT3K0yl4/Q0BASClt7eM 7NxlyNR3RnZ1
DloZXyQFAMHpsfbBBwoI8I8Ns+g6NTI4KDwi1N1uwIa75aTk/KefJRRfXTbc 33/o/H8TT871
6eg3adacd0b1CVx1V1i7R8JPWB656GS+VM1mcG16v/v9b5P5P0fHl/CPDTN3 nzTWz/+NqYt+
fyEW3l0d1CNw0swPowI7uk346blINixBl7fjygAqrs1x1HOcc60CoDRuWpeg XzKIhVeAl5Ue
AICRc8/OhhUllVLVfdVMZZv3HOnXLv9pnriJe+NsMQYloteCbpVCWXQrIVwA LgAXSNXfKqNb
AUCYVxFx5Pqlyw/uf232w6z/PZeIE7+bvoVed+vBf5fu3dvh8Mt7G+5U1l5E VCiO/Pvm9RuP
rn1avn3z9XLL0C2bQqwGbIu9dSvhxwGJ3/xt/7+b1y+cS7jz7OqaOtmsoCbi vxbT7qFu4sR7
uWLZEAInHtz5759FXgYGPZZfeHr/8oULV59cX5ITve5KmWxYghsnngnFKfJh CYRJx2+ajwq0
rQm3qbj3w+eX3T+IctdX2xeRCHIy0lOfxu7ccqrSe0gXwybujRFWeFKIXgu6 dYHc8OhWABOf
aSMdOABgP/KdrvN3PBS8K2GK8rdWXKROej4BhXwu4+5jPG/MDH0zdsLo0RMm hnarM7KSmoh/
ZbIyohjiTyqT9q9dtyv+RQklLX2e3SFFIB3soHJYguqyJ07ZMz38V8/tF+d7 MFRCxb4k6fvn
hl8yNbTo6L/233WTHdjFF5u0NxB6TehWKWx4dKuM8pmL+nOZuun5ivTdF1xI Hnnp339Px3wS
sHr/gfu7R1k34ty87NHZF/rdetvrSxRD/CtvrRy/pnTL+fjxbmYV5950X0lJ ibphCQAAxGn7
3x36Gb0mbs9bzsxFSt4XgL7rh//cURiSlDRxbyD0mtCVC+S4J5KAyOiAyOi4 J3WH4AyIjM7i
cbJ4nIDIaIYly+/vO5tNA9C55/Y8cxnZw8y8KsqfApDKovwD7Or7jSKP3Qeg SnlUO8/Bkxdu
3rUjUu/W1Zw66yNMOXPw5LNydRVDnH/zlznvHrKavSK4zqclJQUv+Db9+3c2 40gL4n9PKKz6
fIyZ73j3hxujE73HyIYl2Bj9yGO8jxkASDIPvz9kWeny8/vedWXMK1TdFwAA sJq4NxB6TejK
WeGKtVuvHloBAAGR0bIXcn/tXDVx1nrZC4mwqO6Shh0M9of3/9lImJhoMff4 hx76+sAU5a88
xrEiE3nsftDK2eXro5OdvRzYWY/y/Dae9qhdgdRH/Ae036HPImDi4jfu43MX P+xnAvxas5gG
LJkqHO/X96A7m6/f0dmyqgmVwxIIH36zZE9yFneBj9VCAOB2mXP+5pf9VPVV xrBlzAMbaLo3
gn9I2Bdmg7cLUevTlUD/yQt+ZCyFymeC2fGba/7BPzq40zcLU84Gl6bzjZ1c rGvyTTWI8ldJ
WlmYkVlCLJ1dbAyb/7ScLs9Ny6Wsm2kEAQ37bMLeQOh1oCtnhapcPbQii8dR d1YIACyuhbNr
nctDDaL8VWIb2XR0t2nkwvXimNh1ab4RBDTsswl7A6HXga7cK4xevVR2rzB6 9VKoPhmU/T1x
1vq/dq6SXybXYhKw+a/NASavfHURQq+WTlwgAybTIITU0pULZKxxCCE1dOUC GSGE1MBSiBBC
WAoRQkh37hXiYxOEkBo6UQox0B8hpB5eILeqpgTfSzLPH47NksDrlLOPow4g baVbpbAFA/01
pxhnrz74vp52bkfP3nS34nXK2cdRB5D2ioiaQtq6+Hupqbm81Fze9uW+QtF9 5T/bl/vKZoi/
l6q0tFRYmJacxZcQKU3RUkJIzYs6ryWC7JdJybnlVM2yFEVJCVWWk5JaUCmb TVoUM8wq6GCe
RCKhpPLFpZSkhkLroqL0l6n5FTTD+pTEDLYOPc4jpDQuytZ12d1KQmjef5+4 G3hvSRLLZqXK
cpJfZvElNcvKN6G+FZP18zwpJbdUQjRVsyaEiAtu//ZOFyOPj6+VVncnEWQn pxaJpIz7iqYo
qeJOq35JE7rk8ZXHRRJCCKl4EO1t7PvNS4nqvlpob6C2TrfOChsc6E/419YN cvYa/XbkkAFj
JrhajTzJBzrr14GdpiXIYlqK/x5iP/a0AIAhSR/qj7NP/XesffCBArrgxMwB Pj4+Pj4+3q5m
XLPxZwUAwqRd07w7B0TMmBzk6v323hRxnfWZujulbgBMs+Xs46gDOOqAztGp s8JV8wIqhU8q
hU+EoidC0ROhsOrvVfMCGM8KRU82eNuFH8qmCJGk/TbUUD/0OI9QmT/7O0XF lRJCCCk6HNx+
9Ck+IVJxhex0h4hffu/fcWpsKSGEFxPCtZj4dy5FiChxk7dd5IVSQnjHQ60G HS4ihBDCPzW6
feC+fPlJYPm9zUGOA7+4WyYVv/jW33HM3kwJIUT8cnug07ijhVLG9SGlcVEd XD48lZSW8uTC
l6MsTYftyaJETzb0sB62K11CCJ13JMK288KbFQrd1bdiJUeG2Y44UlS1Vkqn RVLexRVRS07l
0XWmK56pEUKItODAQCOP9U/yY0L0TMfsy6o6BWTaV6LHa709Ft+qFD1a4+sx wMN3zSNR5a1F
Ht7rHotq2i+/u763Vf9tz0Rq+ipq/r2BdIFOPEGWa2CgP+HfP5PltXCYPQcA nEa97Wui+sva
TEn6ptCgOHsq66+Z43/t9tOlpT4mUHj7n7sV7PPRC6+yAKgCgeDhlQxhQKKK 9WnunH0cdQBH
HdA1ulUKGxXoXx1RyGJV/5sFQGSXTIQWyx5pMifpA2gcZ08EV9eELS76+MKv oztwAAiRSrn2
geETQy3ZAACTooxd3PQhkWF9AJo/Zx9HHUC6RlfuFTYq0J9l3mu4w5M9sXk0 AJ19es+9cgAA
tqmDrfjZg3wKgM6LP/ywHEBlkj4Tpjh7cfKuqZHHh+w78KGH7D8wy6LPuK75 l7Ic/YODg4OD
gwf6utoZcxjXh0lTc/Zx1AEcdUDX6MpZYeMC/fU95+2cOTq8p893ngaVZs62 huUAAO0CV3zA
Ht7P+4C7sX4nz/YGYlCZpM9EMc7++FQAAKi8/93nxzMlTz4IOA4ALKvRv577 asDsvZvvvTnQ
daenu3lFRipr3N+XvvRjXB8mTcvZx1EHcNQBnaMTeYWND/QHACCiwrRMoaWL afwIt+2LX54d
Yw4A0sr89FzSoaOtcc15dUsk6Uv4Wen5YmM7Z3uz6qJTvT4adIOjDtTqE0cd QKrpylmhKhoE
+rMMbDq5AtQ+tWEbdejUuc6MLZGkzzV3dK37zKJqfTSAow7U6hNHHUCq6cq9 wkYG+isyCdj8
Z3R/DPdHqC3SiQtkwGQahJBaunKBjDUOIaSGrlwgI4SQGlgKEUIISyFCCOnO vUJ8bIIQUkMn
SiEG+iOE1MML5CZjzIWvTtsnUsXEeSld51/SehavM/Hcn+cy1X9djFlVxn01 2ToQWf8IIcBS
2AwYc+Gr0vaF9z7xcJgSK4uF550cb6bn+oksB1Wa88cgm8DdWbS6xWvHylfc jp4Vfbui4WtY
ljDNhss1s7SScRj0ZaIYyhKmOXp+ek/IvAjG2SMdg6WwXkRUmJ6SLaCASKuG DiI0TROgSnNS
0orFxDRk152/wq1ZVTMXpadkC6iqymboNqo/6/rpF0IAqHh6MtE5gHvpUg4F AKX3Yp7ZvxHQ
nqNucSDC3JsXrmdXyk/lAAhdnpuaVihsWI6UgeuyqwUCmfz/lnZVTPyTbU6t Zhn6RahN04l7
hXJqhnMaOi+BYaq0OOGzUW/uquzmYSAxd867WPZ9+tkxcGyY4yLrwRZPs4w8 p/18YEbaBLfo
KY8vRtkIrq0fE7a9xNPDUGTuXCABADD1Hte9eNPlHMrXMS32hvV7y/oc+P1W yfzOpokn7xgF
L+2oD4J/x6pavCpW/lnScP+t5n4bdw+a+XpqAAAgAElEQVQHKvPPWcFrU8Vl SUnWS+LOr/St
9T1Awk/49IOYoO+3vdGhAb/i+MeGOX3sMNr2qbzZzzpdUez3yPYRVpjLgto4 3SqFQoo9Y+1u
5em/rp7OOL/o8Tezf+/068MD4e1J9r6xHufkPygQTb78IMqBAwCCqmfT4sQf Pthh/cO9+Ah7
kr5rpOc5NgCwLPuFd0o5dps32+DaeUngtuChd9ftf1Q+zjE+odx3UzdjAAGo XJxlGbplU8hf
Wz+ITZhoBcA/uklUKI68fHOCLf1sc9+QzdcXHhxSO1+AzdHjMFZB8ctfpwZf NGMDALQb9PU/
m/1rbWfdZmv1i5AO0K1S2MBhngj/YWxe96WD2rMBwD50Si/j36t+ohhPL5+Z Mf1fz37QcOtN
xx7lGp/M9Z7t3t5rlO3ys0mZXicyPd7zbVfv4nUo586bKpyvqcnZ13MYveKb BZ76AMDSs3Qz
AlC854hx9kjn6VYpLBXrEcIFeRg+AWABEChVUSLZXD2QiGgCwAJCieS38BTj 6WtTTts3dBvp
T2bFnOQ+dRnjbcq28BvC2fnvmSfPHN8IsFE6gWMK66+lsbnzbCN7L98+NRn3 zdQsQm2FbpXC
Bg7zxDLvPc71yY+HnofNdZc+2rvjVrml6rbl6f9hE21BMW3fxDu8R877m064 z19hyQJux8F9
csdHPzYc86mLfv2Ly2PlrThKPSoTppyJedJp7GhPk6be22tYvwhpPd0qhQ0d 5onrOuuP6FsT
Bzp90c6hx6hBXmbJbFb1qEFKmNP/AVgW/cLdBPMLgwY5cAHAqOsb3fg/xY8a 09VYg8UVY+WP
RdSzuupz9v0sv9djAQDoOb93+u4PPdU2hXH2SMfoRF6h5t82Sc3lqfq2Seml Ob0+sIy5t7En
40hDVRqQtt8CiyOEGkm3zgobjn92eti3xKsjOz3h6GP/Hy97qauD0KC0/RZY HCHUSFgK1TMf
+v2eDncTc4RGczf7eXUwwAtFhNoknSiFwb06NjqZhmPm4jPIxacF1goh9PrQ iVIImL6FEFIL
v4OMEEJYChFCCEshQgiB7twrxEB/hJAaOlEKMdAfIaQeXiC//hjj+AEAKEH2 i6eJKfkVdL1t
MA4bgBCqhqXwtccYx0/nnVrc39ap/4Tp74zr72TTd819odoUfsZhAxBC1XTi ArkJCE1L2Ryo
yM0o1LNzsTGs/rYJVZqTnis0cXSxNebUmrM8N5NnYO9oqc8iEl52VoWZk0O7 mp1MxMWZmaWG
9s7tjRryS8jAdVnco80KEVvCO1vn/WH3v6Qrk+w4ANKy7BzQB8LLvXnheq9K ijJicfTYUlrK
5pCynIxiA0cXq5Bdd4JZHJbqLSKiwoxssYWzgxmbJiwOG79Xg3SKbpXCBgf6 K4fdr/Q1Ed5d
HTo5hjja0OkPcr03nj3wgbsB8I8Nc1piO9zmaZqIl1To9+X2PifXHMyszEwk k49d+XaoFRuE
SbtmTlh5w8zDuuQZ32/LiV+mdlZM6WpQHD9dUVLJNjSUJc0A29TBEUjJudrp /5u8FzOMOqDP
tEWM4xaYN3TvIqTNIqKmkLYu/l5qai4vNZe3fbmvUHRf+c/25b6yGeLvpdZa khcTwrWY+Hcu
RYgocZO3XeSFUkKk4gqRlBBCiPjl9/4dp8aWVs856Z9cikhL/o20APdPrgqk hEr/aYD14IP5
UiJ+8a2/45i9mRJCiPjl9kCncUcLpbX6kvIurohaciqPrrP2pXFRlmDd3c9f Zviyq2WEVDzc
NswSuPY+wyLnbth7PU9MCCG846FWgw4XVa+5numYfVmUrBH+qdHtA/flSxm3 SPhgVTf7iJh8
mhAqa+8oE4PQ47xmfxMQeq3p1llhAwP9AYAp7N64Mmn/2nW74l+UUNLS59kd UgTSwaYAYNIz
ItiWA2DSxdfF2egNbzMWgLWXl2lJBp8irNv/3K1gn49eeJUFQBUIBA+vZIjC rBVipRsUx8/u
sfhs9uT7CbEXL587tMD/m5hDDw5Oqh2AyDTqAOMWSVWOW4CQztCtUtjQQH8A UA67r7y1cvya
0i3n48e7mVWce9N9JVWdgM+umpPNYXO4nKqLVzYbpASASKVc+8DwiaGWbACA SVHGLm76yp0x
Y4zjZxna+4yY4jNiysxxNl2DdlzhTxpWeymVow7U3SKV4xYgpDN0qxQ2MNCf maTgBd8mrH9n
M460IP73hEJ6hAYLsSz6jOuafzTLcdU4DwMAoEqLJcZ1bgk2II6fyrt1u6Jb v84mbAC6ND29
3NjWgtvYFP4GjVuAUNukW6WwoYH+jEwDlkwVjvfre9Cdzdfv6Gyp2S7kus/e u/nemwNdd3q6
m1dkpLLG/X3pSz/FS9qGxPF/aXZu+YjBD43d3KzprCdpFhE7jgeZgV5D0v8V 141x3AKEdAkG
+teiJtC/Fro8Ny2Xsm548L6En5WeLza2c7Y3a/JvIaosLyObT9o5dLQzbbbB mDQbtwChtka3
zgqbDcfErkujgve55o6uzfUpFT1T284ets3SVEPHLUCorcFSiADHLUBIJ0ph UwL9dQSOW4B0
nE6UQtDhGocQ0gTGMSCEEJZChBDCUogQQqA79wrxsQlCSA2dKIUY6I8QUg8v kF9bmOOP0KuD
pbAFqAnW1xzm+CP0CunEBXITNCamnwgVg/U5LIb0f81gjj9Cr4pulcJGBfo3 MKZ/ikWCYrD+
gfevREbVTf9XhDn+CL0OMNC/3kD/Bsf0KwbrM6b/K8Icf4ReA7p1VtioQP+G x/R3VlicMKX/
K57+YY4/Qq8B3SqFjQr0b3hMv8KTXdXp/xrAHH+EXhXdKoXNEuivQEVMf3lN sL4G6f+Y449Q
69OtUtgsgf6KmGP6TWqC9b87sniqcIK69H/M8UfoNYCB/rVoGuhfh/qY/kan /zPDHH+Emp9u
nRW2FPUx/Y1O/2eGOf4INT8shboMc/wRqqITpRAD/VXBHH+EZHSiFILu1TiE UINgHANCCGEp
RAghLIUIIQTaeK8QH4AghJqdlpVC+Yel643bwmh+hJDmtKwUKpqy6g/lifvW v61mEUqQnZol
4Fi7uHQw5gCAJPPckafdxoc6NeVrIMyNEClNSwmLxeFwmv5pvWZZT4SQatp6 r1BKmAuMqukq
ovBvR8+Kvl1RX2fqA/oZGylLmGbD1be0aW9tYW5h23XIzG8v5lONa19VFwih 5tMKpTA+Pp5V
n/j4ePWNUDQQwiWEC8AF4AKp+ptSMfSR8L4sCj/1wfXr91MKM47NdNWvMwuh aVoqeyUuzkhO
K6iUVv1AmHvzwvXsypqxloiYl/nyZSZPorh0eW5qWqGwJunKwHXppZziYh6/ 4PH+aZLvRgZ9
er1Mtu6lOcnPU/LkozQptV93hur5KH5WcnqxWCFMi2lOIipKf/E8Na9MofTW 2SKEUB2tcIEc
EhISFxc3adKkw4cPh4SEKP4oPj6ecboyirD/3P2jcsIeRZiLO0MUvqLK57+/ H76Vu/LYzgnU
frUB/Ue+dPl7xvgVV0y6u+rn5XTaduXAQAAq889ZwWsVs/IVG+fa9H73+98u u4dHx6845PhN
6ORa+f5uFec1GQBAkrJrSsB6gUFlYpL1RydOrPRrJ7q7uk5T7gZ0/qmPQt87 bdi9i2FJuuiN
g/HrfQ2VhhyY2rnubwGEUGsF+sfFxdnY2MTFxamZokwezf/V0r6M0fxfLe3L HM3PHIUfE2IR
8nfyfxuGdgn8LLaAqj+gX5y0rY914HfPhIQQQigxxZyVT0rjomxdl92trO5e WnBgoJHH+idC
pnz/egcA4MWEcAxDd2dQhFBZe0d38Nn8TMw4Z8mRYbYjjhRV9UlJiYotQgjV 1mqPTUJCQg4f
Piw/B9T8fFBGQjOf/amaDkYqovAr76wcHOG8+PTp+T1MWKSwnoB+wr8T89xj VkTVUE3VudB1
s/IJGDKtAwuAVCYdUMr3V5yHcQAAADDxmTbSgQMA9iPf6Tp/x8PSZW56ynPa dB/jeWNm6Jux
E0aPnjAxtJs54TNukTXj+iGku1rzCbK8Gs6dO3f79u2a10EAENMsxmh+Ma36 eS1jFL6+Y9Ag
7qkTZ5Le6+5rWn9Avwp1s/KVlD06+0K/W2+LBysHqs33VzsAAKveOfXdF1xI Hnnp339Px3wS
sHr/gfu7+jJuEUKotlb+MI2sGg4ePDguLk7zOggAEpq19avDoFR0KBWlkDkK HwA4tqO/Phyx
eeSY0ZV/H1/Rp76AfvPe4W7Pdhx8NnFBV0MAWkKz6/98izj/5h9L3j1kNTs+ 2CT/B4Z8f7YG
AwCU3993NjtqmiPkntvzzGVkD1PJC4Y5qVIe1c5z8GTPweF+PK/3r+ZQwxi3 CCFUW+t/rjAk
JKSsrMzExKT+WRVIpOwVS8YpT1+76Azj/FQ+UxR+JQAA6NkM3XTuz7VvvDmi cv+pFeoD+n9I
+HlP9PXwALddPVwNCgvdtl3eN1DFKopebglov0OfRcDExW/cx+cuftjPhFW8 ZKpwfN18f00G
ADDsYLA/vP/PRsLERIu5xz/00Ddtr9yUtPDk2/0Wv3T2cmBnPcrz23jaw4Cr zzTkgLGKdUZI
V2lZoL/82yY/rBmz4dvtyjOsXDB33poTwBzNr3EUvvqAfgAiKsrI4LFtXJws Gv6h53rz/VXO
IOFlpPONnVysqzNWmeaUVhZmZJYQS2cXG8Oa07/6tgghHaet/y8oFfcKVV0g A0ADovDVB/QD
sAysXdysG7K+CurN91c5A9fC2dWivjnZRjYd3W2UFq1nixDScdpaCmnCZhzG k8PGG2EIoQbT
slIoj+Z/c97vquZJzeUBJtMghBpCy0ohYI1DCLUAvJxECCEshQghhKUQIYRA G+8VNg4OA4AQ
UkMnSqH8g9mazInVECEdhBfIDSTJPPfnuUxJ/TO2XCOUIPvF08SU/OrA1tdg lRDSdrpVCi/8
EMz4BwAWzPtIoyZabgwATbziYQkQ0hk6cYEsJ6TYM9burjPx4eUbsheRb03Y /M1vdZchoqKM
jGKpmb2TrWndvUVoWsricNgARFycmVlqaO/c3ogN1Rn9vSopyojF0eOwAIiY l5VRBNYKX1sm
dHluRqGenYuNoYYjQVUPS3Blkh0HQFqWnQP6AKLWXCWE2gbdOissF9cqZmOj n46NfrrqVOW8
5RsAwM7G6ZOF7ynOQOefmuvT0W/SrDnvjOoTuOquUOFnlc9/n9K914xDqSJh 0q5p3p0DImZM
DnL1fntvipiUnP/0s4Tiq8uG+/sPnX+2uOLpz5O7OfYKnzFzUkDPyadKAKrG AAgKjwh1txuw
4W55nRUl/ITlkYtO5tcZi0R5WAJTxTewRVcJobattQL9XyX5MACr5gVUCp9U Cp8IRTV/4k/v
Ss3lhU98u3/IkDrDACjn47fgGACKpLyLK6KWnMqj62zJKx6WACGdoVsXyOVi PeUQB0M96Uc+
4wHg0MF/ZN9fljOum48PAC02BoCpwiUpyzxo474g5Q14xcMSmOJVMtIVulUK P1p3XNWPvv3h
O+WJSvn4u0fpvbIxAFRozWEJEGqzdOVeYdwTSUBkdEBkdNyTuh8YCYiMzuJx snicgMjoOj+q
zsdfuHnXjki9W1dzJACyMQAu7PY5MGb0xmt8YtFnXNf8S1mO/sHBwcHBwQN9 Xe2M2TUZ/cCq
HgNAdqORltCa1BhhypmDJ5+V15mVyrt1PaVcdgNRaViCll4lhNoyXTkrXLF2 69VDKwAgIDJa
9kLur52rJs5aL3shERYp/IQhH79lxwCQI4Ira2dsnfx4hKeJ4jvUCsMSIKQb tCzQv3ES7qdN
XvAjYylUPhPMjt+s+E/mfHxlLToGQC2vx7AECLUtunJWqMrVQyuyeBwVZ4UA qvLxlbXoGAC1
vB7DEiDUtujKvcLo1Utl9wqjVy+F6pNB2d8TZ63/a+cq+WUyQkgH6cQFMmAy DUJILV25QMYa
hxBSQ1cukBFCSA0shQghhKUQIYS08V4hPgBBCDU7LSuFGM2PEGoJWnyBvP23 xNHhn8j/OTr8
k+2/JaqenUhpiqLoFvi6LSXIep74IqesJu9AVV8qpkuy4/46myqCltXEXoTJ p/fu2vX7X9cL
6891aE7y1W7RvSTJPH84Nqt5xjNQPh5aqKNWoW3HMJV76dDuXbv2nssQq59R W0vh9t8STx7d
deroZllB3P5b4qmjm08e3aWyGpYlTLPh6lvatLe2MLew7Tpk5rcX86kmrwaV sS+yi4Vz/7CJ
I3vYOAzdcJUvVdOXqumiZ7vX/+9eWQtnIjStFynv0rp5X90sLBe94uyGyvtf zll/RUBadi9V
3I6eveluk8czYD4eWqCjZqB+gAdVtO4YJrSwLP/qF7M33qgvjFi7oltlIaxL o6959Z8lS2P1
6j9L9kf+z6XR11JzeXVCWElpXJSt67K7lYQQIi64/ds7XYw8Pr5WSoiUoigp kQiyk1OLRFJC
CJEIsl8mJeeWU9XL0hQllb2SzVz9kiZ0yeMrj4skhBBS8SDa29j3m5cS1X2p XgeaoqU17VOl
OakZxSIpIUQqLslMyeJLFDdFKipKf5maXyHPda1aqiwnJbWgUlozn7Aw7XlS Sm5p1dLyXggh
hCrLSX6p2LCKRuT7IGf3AIdJ5wU1U1S0oLgnpcKCtOQsvqR212q3RTaxJOPF i4wSMSGE8E+N
bh+4L19ady9JJbzMl2lVHTFur8r2FbsSFqYlZ/ElJTGDrUOP8xi3osnHA3NH SmvCtK8Y11/V
e9egw0ZaFDPMKuhgnkQioaS1t5qu2aqqza3pXiuPYf7JUe2D/ypW3umKtLIU KlZD2QtZ+ZO/
qKcUEkKIIP49W/Ow48W8mBCTzm+O8fXyHTD+q8fCyjufB3r2HDhkiL+bTafx O5OEhFDpOwNc
psaWElJ+9UNbsP3wajkhgtgpLgE70ymFHkpOhFl5rn4kUt2Xquny/+28mBBT 18gJ/Xv28XEx
c5q48+gXYb69ene1Nvacd76IJoSQyme/Te3u4OEfEuBp7zVtT7KIEMKLCTF1 i4oY6OvXz93C
3H/9nTJCqLyTc3radvEbMmyQr0f/lXcqFWqKVHBr8wjnDt0GBHrb2wV+FldI q2hEUa1SqKoF
xT1JF8Uv97O29Q4M6tt/zPhO7ZT//zNtC6l48tNbnjYuvYMH+3ft+tbJ4prV VtxLJh3DR/ft
EzjQy6Z90LrrfCnT9jK3r0DKu7o2sH2H7oGBffq9Ma5qDVvieGDsqNbOZdxX TOuv8r1r4GEj
LT77QXcu6Ln06tNn0OzTyUcUtvru3Q09XabHyd5qSeqPAxzC/imoLixaeQy3 6VKYmss7dj5V
fjIoq4PHztf8tL5SKC04MNDIY/2T/JgQPdMx+7KqDmKpuKLqPEP88nv/jlNj SwkRPV7r7bH4
VqXo0RpfjwEevmseiSpvLfLwXvdY4T9X+d31va36b3smUtNXkYrpBQqHEddi 0j+5FJGW/Btp
Ae6fXBVICZX+0wDrwQfzpaqS+hmy+BmGIqg+jERPNvSwHrYrXUIInXckwrbz wpsVpN5Af8VS
qLIFhT0pfLCqm31ETD5NCJW1d5SJQd3//4zbwjDSAGMp5BiG7s6gCKGy9o7u 4LP5mVh5e5n3
lQLRkw3eduGHsilCJGm/DTXUry6FzX08MHekgHFfMa6/mveu4YdNzQAPdbaa Sv95kFP4PwVS
QkSP1/VwmR7Lr/f/0Wt9DGtUCrXsCbLcni9GTPv0zKmjNYFastey6Zq2Isur N+k1JdS+Ku6K
VCbtX7tuV/yLEkpa+jy7Q4pAOtih0/BAavaFlHSzC9wpn0w5+eWl9AhBHBW4 o5N+VTvilD3T
w3/13H5xvoc+c0/VfdU73aRnRLAtB8Cki6+Ls9Eb3mYsAGsvL9OSDD5FWKqS +pWy+JmHIgAA
IPz7p9M9PxztpAcAHQa/00+w8mou1ddK80B/NS3I9yThP4zN6750UHs2ANiH Tull/HvdRhi2
RTjgGdNIA8pMfKaNdOAAgP3Id7rO3/GwdGHPOtvL2L4ozNpQYSvOZHktHGbP AQCnUW/7mlR/
E7+ZjwdSoKoj+Zow7Cvm/ROQqGrPN+qwqbVLa7aa4zRucb/1Xx/LCnsrc8cu UcRfAe1UvA9V
tO8YZqCtpVBCs/747VtQun9K0Rpuedmjsy/0u/W215cAi2ukX7VU5a2V49eU bjkfP97NrOLc
m+4rKSkBMO4W5luw4cQJU8GADYGjSj7//ORxQYHv592MAQBAnLb/3aGf0Wvi 9rzlzJz7J+9L
k+nsqv//bA6bw+VUjW3HZoOUgJqk/rpZ/AxDEdRaN8a91KBAf6YWFPYkm6sH EhFNAFhAKBGl
1BrztjxT36nKFVDa3l19GdtX1QhLcWCZljgemDqqxrivmPdPYt0Nr2mjMYeN 4p6o2Wpg2Qxd
PHLJgv2329+LMX//grchqKTVx3AtWlsKpewVS8YpT1+7SINTQnH+zT+WvHvI anZ8sAWcr9Vs
wQu+TVj/zmYcaUH87wmF9AgAADDzHe/+cG605dgDnlZdx3g/nRxd0mO7jxkA SDIPvz9kWeny
2D/fdTWot6+bKqZf1GyjWRZ9xnXNP5rluGqchwEAUKXFEmM2MD0ErB6KwHNw uB/P6/2rOZJR
LlWNmPuM6pj0+79ZEe84sfPjdt9sF7LaTg/q+aRBrdXQoAWWee9xrk9+PPQ8 bK679NHeHbfK
LQEApLx7x88U950wxJHLtC0cvaqRBiYu6GoIQEtoNvMvl/L7+85mR01zhNxz e565jOxhqrS9
1DDGfaWwAua9hjs82RObFzbRFrJP77nH9ICxOY4HFnNHimvCsK8Y32sOpzHv nYrDprx6gAcr
hnNv037zp4iGTZ9Lua7Z4srh3Ttataq1ZtLiY5iBtn6YRiJlXnNV0wEARC+3 BLRvZ97OrH2v
6YdMPz53cUM/kzqzmAYsmSpc5tc3ZFC/4d9WOFtW/aZgW/uHdeTz3MN7mYJp r3B3Hr/jWH9r
NoDw4TdL9iRnnV7gY2VsbGxs3uPjm5Vq+9JgHdTgus/eu7njjoGuPQMHB/V2 6xwS/VDIOKO0
8OTb7k7dBwwLDezzZqzfx+941NRpfc/5vy2Flb17BAzw7vlh9ozfPuttpPkq aNoC13XWH9FO
OwY6Obn5L0vv72Wmx2YBSNIPL35/y70KVdvCdZ+9J9rxhwA3n6Dg/t16Tj/D Y+geAAw7GOwP
7z8oqFev+SWz//ehh57y9jLvK4UV0Pect3Nm7uyePoMG9R//p4kt06lPsxwP zB0p7gqmfcW4
/o1775h3hUmfOVFkdR8Xl+5RxwqVTp8Mur47xyWpJHBRuCNHYVUB2sgxzEBL H5ssnBlUa0Rj
YdXfC2cGMT820RxVlvPyRQZP3Kwr3qzEvMwXScnZAonaueiKgtSkpJSCSsYP klCl2S9fZGq+
lXTO7gDLfiv3nLpXRDW0BcHF2Z27rrgvZPoZ07ZIhYVpz6s/TKOMFxNiERJT Ii5Jf5FaKJQ/
CmHe3nr2lVRYkFLPm908x4MGHRFClPcV0/o39L1T05Rqwoefe3WckSCof85G eWXHsCT/xvHf
P/Fu12Yfm9CErTyiMQBw2E0+z+WY2HVxbWojLaq+pH4Z9UMRcEztu5g2oE+W Wd+5n4anZqbk
C4lmLfDPTg/7lnh1ZKcnHH3s/+NlL8YbCEzbotFIAyyuhbOr4ncwmbe3nn3F MrDpVM+b3TzH
g/qOVO8rpvVv6HunpilGdEH8N2u//uWw1aLLAWYN76cZV6YZjmFSmZucZRa5 anbPes4btSzF
WvPvIKfm8vA7yK2LLk1/eDcxR2jk4uPn1cGg2YaXp/JvJKR2CvbroK2/xxm0 1L5qFFKe/N/l
ZEOvgX2cjVp3TV4lLSuFgMk0CKEWoH2/WLHGIYSanbY+QUYIoWaEpRAhhLAU IoSQNt4rxMcm
CKFmp2WlEAP9EUItQYsvkLU20J+i6/2aeOPi0TFzX1O6kLnfrIeZxrH42ktb S6E2B/q3b29l
ZmzdI+Kb2wJVx6r64HIVUeyYua8Jncncb9bDTPNYfK2llaVQXgcB4OTRXfK/ 66mGBq5LL+UU
F/P4BY/3T5N8NzLo0+tlAISmaQJUaU5KWrGYAABQpTnJz1PyKuSnDFL5+Z1s 5uqXUmCb+S48
kV6U+fTRi8ybCwu+mLs7lVLTV/V0niDn+Jh7y9/d+aLq3IMuz01JzhbIa7Np yK47f4Vbs6p7
pMtzU9MKq77yRoS5Ny9cz66kKKpuzWOZdHvzg3cG2eoxN8uwsURUmJ6SLaCA SFWcRRBxcUZy
WkGltPZEXubLl5m82udOdVabUPys5PSqjmSLiYrSXzxPzSujFJtiaF+xK1FR ekq2QCHmq2Xe
MoaOlNaEaV8xrr+KPU+X5aZllogJABAJLytVcQ7lpmq/0bW2WkrXuuaQ0nSt 7pv9MOM6hs74
cJxb0zMPXmNaGseg9YH+pXFT2tu+e6mMOZq8Vjx67YzyOlHsRTXJzJi5j5n7 dQ/15jzMNMqC
1l7aWgq1NdC/g8uHp5LSUp5c+HKUpemwPVkUczQ5v1Y8et2McsUodgWYuY+Z +1WHeoscZm28
FGrZE2Q5bQ30l6Tvnxt+ydTQoqP/2n/XTXZgF19kiiZXjGVRzihnjjNVhJn7 up25/4oOszZF
W0uhtgb667t++M+dzT41/9sBQPW4JzKNzijHzH1dzdx/pYdZG6GVj00AQCJl L1sybtnHdf+o
S7GWE+ff/GXOu4esZq8IrvMZRUnBC75Nf4UAd9lkM9/x7g83Rid6j5EFuG+M fuQxvlaA+/l9
qgP9VfQFAArR5BSAVBZNHmBX3+8ndnUUu0qaNCvP3BcCqXi0d8ctedD80UOx WZLq7PVLWY7+
wcHBwcHBA31d7Yw55lWZ+7LoYVqi6ml1+f19Z7NpALpu5v7Czbt2ROrduppD MbXPVlyB6ih8
GoBWm7nfxLdMRUeKa8Kwr1Tsn9mFiigAAAEFSURBVEa8ocxNsdW/0ab95k8R fTV97lnX+VGu
HPmqMrffModZm6LFpbBB0wFej0B/JY2JJlcfxa5xs5i532Yz95W00GHWpmjp Y5M2FujfyIj2
2jBzX80sGmj7mfuNP8w0jsXXXtp6r7CNBfo3MqK9Nszcb5q2n7nf+MNM41h8 7aVlKdYY6N+8
MHNfc5i537ZpWSkETKZBCLUA7futjTUOIdTstPUJMkIINSMshQghhKUQIYSw FCKEEGApRAgh
wFKIEEKApRAhhABLIUIIAZZChBACAPabb4xq7XVACKFWhmeFCCGEpRAhhLAU IoQQYClECCHA
UogQQoClECGEAEshQggBwP8BKVVz1OIDeV8AAAAASUVORK5CYII=
--------------030202040504010408050502--

--------------070109040403070300020209--


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Custom serialization without XSD ? [message #658434 is a reply to message #657912] Tue, 08 March 2011 13:49 Go to previous messageGo to next message
Ugo Sangiorgi is currently offline Ugo SangiorgiFriend
Messages: 59
Registered: January 2010
Member
Hello Ed,

I will do as you said, it seems to be the best way. But how do I define a "derived feature"?


> Perhaps as an alternative, you could make the points multi-valued feature transient and define a non-transient derived single-valued feature that's simply returns the multi-valued feature's list. You
> could define an EDataType for that new feature that's a list of points, and then you can define the string conversion for that point. You could even suppress that new feature from the generated API so
> clients don't see it. Kind of complicated but should do the trick without specializing any serialization code.


Thank you

On 04-03-2011 16:15, Ed Merks wrote:
> Ugo,
>
> Comments below.
>
> Ugo Sangiorgi wrote:
>> Hello everybody,
>>
>> Is it possible to do some sort of customization without needing to create a xml schema?
> Yes, with extended meta data annotations.
>> Here is what I need, I have this output from my ecore model (see the attached image as well):
>>
>> <?xml version="1.0" encoding="ASCII"?>
>> <SketchDatabase xmlns="http://www.eclipse.org/sketch">
>> <sketch word="346754387453974624323422222" gridWidth="3" name="square">
>> <points>Point(10, 10)</points>
>> <points>Point(34, 55)</points>
>> <points>Point(13, 67)</points>
>> ... HUNDREDS OF points
>> </sketch>
>> </SketchDatabase>
>>
>> I would like something as:
>> <?xml version="1.0" encoding="ASCII"?>
>> <SketchDatabase xmlns="http://www.eclipse.org/sketch">
>> <sketch word="346754387453974624323422222" gridWidth="3" name="square">
>> <points>(10,10)(40,56)(100,39)..</points>
> Unfortunately this requires the points feature to be a single-valued feature whose one value is a list of points. And if you do that, you won't get a multi-valued feature that notifies as points are
> added or removed...
>> </sketch>
>> </SketchDatabase>
>>
>> So I would save ~22 characters for each point.
> Perhaps as an alternative, you could make the points multi-valued feature transient and define a non-transient derived single-valued feature that's simply returns the multi-valued feature's list. You
> could define an EDataType for that new feature that's a list of points, and then you can define the string conversion for that point. You could even suppress that new feature from the generated API so
> clients don't see it. Kind of complicated but should do the trick without specializing any serialization code.
>>
>> My Point object is a draw2D object referenced by a DataType.
>>
>> thank you very much!
>> Ugo
>>
>> ------------------------------------------------------------ ------------------------------------------------------------ ------------------------------------------------------------ --------------------
>>
Re: Custom serialization without XSD ? [message #658457 is a reply to message #658434] Tue, 08 March 2011 15:17 Go to previous message
Ed Merks is currently offline Ed MerksFriend
Messages: 33140
Registered: July 2009
Senior Member
Ugo,

Comments below.

Ugo Sangiorgi wrote:
> Hello Ed,
>
> I will do as you said, it seems to be the best way. But how do I
> define a "derived feature"?
EStructuralFeature.derived can be set to true. You could also set
EStructuralFeature.volatile to true so that no field or method bodies
are generated. You can set EStructuralFeature.changeable to false if
you don't want to allow it to be set. In all cases, you'd implement
your derivation logic for the getter.
>
>
> > Perhaps as an alternative, you could make the points multi-valued
> feature transient and define a non-transient derived single-valued
> feature that's simply returns the multi-valued feature's list. You
> > could define an EDataType for that new feature that's a list of
> points, and then you can define the string conversion for that point.
> You could even suppress that new feature from the generated API so
> > clients don't see it. Kind of complicated but should do the trick
> without specializing any serialization code.
>
>
> Thank you
>
> On 04-03-2011 16:15, Ed Merks wrote:
>> Ugo,
>>
>> Comments below.
>>
>> Ugo Sangiorgi wrote:
>>> Hello everybody,
>>>
>>> Is it possible to do some sort of customization without needing to
>>> create a xml schema?
>> Yes, with extended meta data annotations.
>>> Here is what I need, I have this output from my ecore model (see the
>>> attached image as well):
>>>
>>> <?xml version="1.0" encoding="ASCII"?>
>>> <SketchDatabase xmlns="http://www.eclipse.org/sketch">
>>> <sketch word="346754387453974624323422222" gridWidth="3" name="square">
>>> <points>Point(10, 10)</points>
>>> <points>Point(34, 55)</points>
>>> <points>Point(13, 67)</points>
>>> ... HUNDREDS OF points
>>> </sketch>
>>> </SketchDatabase>
>>>
>>> I would like something as:
>>> <?xml version="1.0" encoding="ASCII"?>
>>> <SketchDatabase xmlns="http://www.eclipse.org/sketch">
>>> <sketch word="346754387453974624323422222" gridWidth="3" name="square">
>>> <points>(10,10)(40,56)(100,39)..</points>
>> Unfortunately this requires the points feature to be a single-valued
>> feature whose one value is a list of points. And if you do that, you
>> won't get a multi-valued feature that notifies as points are
>> added or removed...
>>> </sketch>
>>> </SketchDatabase>
>>>
>>> So I would save ~22 characters for each point.
>> Perhaps as an alternative, you could make the points multi-valued
>> feature transient and define a non-transient derived single-valued
>> feature that's simply returns the multi-valued feature's list. You
>> could define an EDataType for that new feature that's a list of
>> points, and then you can define the string conversion for that point.
>> You could even suppress that new feature from the generated API so
>> clients don't see it. Kind of complicated but should do the trick
>> without specializing any serialization code.
>>>
>>> My Point object is a draw2D object referenced by a DataType.
>>>
>>> thank you very much!
>>> Ugo
>>>
>>> ------------------------------------------------------------ ------------------------------------------------------------ ------------------------------------------------------------ --------------------
>>>
>>>
>


Ed Merks
Professional Support: https://www.macromodeling.com/
Previous Topic:[CDO] Is CDO caching a workspace path name for use on Export?
Next Topic:An EMF model based on a super class
Goto Forum:
  


Current Time: Thu Apr 25 06:10:50 GMT 2024

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

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

Back to the top