Re[2]: [XviD-devel] SAD of last visited neighbour positions

Radek 'sysKin' Czyz xvid-devel@xvid.org
Tue, 22 Oct 2002 14:54:38 +0930


------------10F5A86D55CD1C
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit


> From my
> understanding it should be sufficient to modify the DiamondSearch functions
> to store the SADs of already visited positions, right? Or is the
> modification much more complex? (please excuse my ignorance in this area...)

I have had an idea how to do it for a long time and - here it is :)

It currenty only works for square search, but it shouldn't be
difficult to add it to diamond and advdiamond.
The code is included. A few comments:
- there is a debug output turned on. The format of a file 'xvid.log'
is as follows:
501     246     549 --->  501  246   549
523     231     521 --->  523  231   521
567     277     505 --->  567  277   505
repeated for every macroblock. On the left there are neighbouring SADs
computed by my squaresearch, on the right - the same neighbours
computed by brute force. Just to make sure it works ;)

- this code shouldn't be any slower (well ok, a bit) BUT: I had a
smart function called make_mask which prevented the mainsearch from
checking positions which were already checked as predictions. I never
liked this function (one loop with lots of IFs) but it improved speed.
To make this code work, I had to disable it - initial 'iDirection' is
always 255, which means that it is a bit slower.
There are two ways out of this:
 1 get rid of make_mask (well in fact modify it to only check two
 identical predictions) and always have all 8 neighbours available
 2 leave make_mask is is, but allow that some neighbouring SADs will
 not be available (we could mark them with -1)

- square and advdiamond will always return all 8 sads (if initial
direction is 255) but 'simple' diamond only guarantees us with four
neighbours (not diagonals). What do we do about it?

- don't try to use this code for encoding ;) it forces squaresearch for
p-frames search, and will always crash if tried with bframes +
squaresearch ;)

- only CheckCandidate16, CheckCandidate16Q and CheckCandidate16no4v
give us recently-checked SAD so only those functions will work with
it - but it's easy to implement the same code for b-frame search


Radek
------------10F5A86D55CD1C
Content-Type: application/x-zip-compressed; name="motion.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="motion.zip"

UEsDBBQAAgAIAGpyVi2Oyvb4BzcAAHgyAQAMAAAAbW90aW9uX2VzdC5j7D1tc9pI0p+dqvyHSZ6q
LBgwCIiXNYm3sI1jav2KHW9S+6QogUZGZUBYEhhdLv/9umdG0ugNhGNns3feuovRTE93T3dPd09r
JJU3H+2/ly8I+//Gp+vOATk5b38o1Qn8bJ+R/bOD9j7rG5uOYU4ItR1jrLKf/rCroWGTqWXeWOqY
wE91QozxdETHdOJwUFMnKpmqloO/zAklpkXGpkUFMYbl2tCoSRzTHAEGm9hTOjB0g2rEmJDO5Vm5
094nSr3+23apSmxHnWiqpW0RcjU0bQowDp1oxuSGoXJMMoNGB/myTd25V4HU2NRmI4QkQxjJmoAL
vxv412YDB2hblCFRtblhA3lnqDrEgA5EOVZdwKBbQIkSujBAGpMbmBlQBwjANzCnrmXcDB27CHLQ
OKaJS+zZYMgw3JuzkUb6lABW1ohicX+BwfcTYhn2LZsT8mbcGBN1xDBodE5H5pRaKL/EaQEtAu3l
IUUexlOgyRgAGn2b3s2AP4aJaoZjWjbrcobU8KANCgzfG6MRSGdOycQkI0PtGyPDcYkO80LWBW2G
x6fPNKmBpgZM1UwIGrWMOVzOqY1ELGrqW6nWoluU+tNpEteckQFYkAWc2o5l9GcOKM1BhsseLZch
gsbZBEghCeJQa2xzDin5cPqRfKATaqkjcj7rj4wBOTYGdAJzAMuaYos9BNX2OSIccohcXHqTOjQB
M5tPk1ADp0Dm1LLRlKseEYGxCBNmWHKgUGAeVDTFgXmCah+BZfhj02UQTJWZO6Ifgro92+OKAZsB
LeizUZHhAGjyZ+fq6OzjFWmdfiZ/trrd1unV5yZAO0MTesFoOC5cjbiSYG6WOgGNmjpDcdLu7h/B
mNZe57hz9RlVd9i5Om1fXpLDsy5pkfNW96qz//G41SXnH7vnZ5dtsM5LiozxRbJE0rq3xjXqqMbI
Dmb/GVRsD9k6YMZm0QEFW9HAR+DyWa1FvqpGJiw9nCtfEUKcTWLoYL4OWLNlgOmAL4jpl40PdFwk
nclgq0i2f31LTlTbJq05qHVfHfctQ7uBnyctUqkqtd+K5ONly5/HY/1Xfvni5Yv/MyaD0Uyj5B0w
QC1na7grN9qOZpjxtpHRZ41S8+utrTKdDExYGFvD15GOmQOKKI/7+mwyYKs1DjLFhcc6AS64iAPe
jMy+OkqjAVEiiQGIHTe0jN7ampq4OBqLRgSKB5oeBJrEjkijrWppLNDxmM8PejWqGxB2Oqedq07r
uHf5R+e8d3XUbV8ebeSUSj6AOOycRvvfyv0nrU+9y9ZBpdKDFcLgNnLVKMD+UffspIVwMlRVgpII
9PZIrvo2L7O5f9Te/6O33zo96By0rtq5T8XPxYM8+Ur+/+WL3Ob+kA5u98EfGmC+NJ/LDUCRDobA
fO5Tvihffs4XSe4A/nljHBiwzLi1wzCV5Jvkm0zzQ/uq120ftrvt032kSD4XCVwLqhs2LDQIVjmS
ywGRN0r+3TslTwpw+RmvSJ5BcdiNgQrrv0J2EAF5T3IzYKbRc8hmHkmXdrtUx6Gf8uWqQFGu5jdz
vNNow5rT/jQ0Zwg89i2q3jYltMpStNchvIC4pKyBu7oU9xHD+YmjXIdvkLA6GznLkV/HsGfn/hv+
G9ImqFsdmxPt0vgXTAt7bEzFBqTXMyYjBoEJgdYbz3t9SG5ycEkWRWwlkDhwE0I2a1Xg0zhEfwIm
+hWIMch+kbj9Jlxhg05yC/L+PankoQPmp2AHHYFAEV70v2Pd0FtaYPfGghRAEgp5947kOH5SIko+
j/8KgN3d96G+ZoBtl9SqHF2tyqGR8HjuqP2/Fl9AfHwYdjG5sGGuYNJNYdLlTLrIpMuwuquYdNOZ
dAWTbsCkGzDpxpjcsKgzsyYowgIXLuP85YvypuwQwB+Qw4+n+1eds9NLcnkFEZrwECI0PDcNDXLz
sJdQtgO3gHoOLlz5QnISeLkpujTD8qAuqWoNhgfoQfxeuJBsw8H5BAbE7JyAhUMaOBngZIU2cgTV
yC17rC562iJP/v1vgs3vvGZjgs0oOtbjhge4fIAbhndBPVyUnJbkuRaS33K51/oa9lcem6An2VUt
+JJ0VyzGsJNKwnUdIMu5q1d32DMlIWROaeE7jSwcSu4oEeN1GGVGPr9xZ8BhHDqe/lX5AmghPivb
czF0fwZ25BMtkhhCrwnHA222mgCpg/z5rmoB64yDYXpycr0F9uxG21wfO/ddzRhvBW/OI0j0NFXZ
BjN1ImBKDKwhoIQRh1F6dmicGBMI/tAkDCza7MtbjGwGQIOZBdJxTq6heQsd3KJJEnrQq3AftQmr
Ey78pSviepQ9Jc6eksyeEmFP+RLnQEnlTfF4QzaiTFTjTFSTmahGmKgmMFFNZaK6jIlanIlaMhO1
CBO1BCZqqUzUljFRjzNRT2aiHmGinsBEPZWJusyECCnLA8XFD4kU5TLbtHkbEUIXU4rVl0+sMvGZ
l2lG+pSOyNS0DbZZKRLc88L+aDZmhQXYG9+FAAgrSMAW/MbEwslzOHoOR08fjqpgT+GQdMFjEna4
sY7nwPQcmJ4D00MC08Ssz39IbPqnRAssuDzHi0eLFwnhIuaHn2IXwmJS9pB0ct3DGmO72z3r5tMd
vj9fvlrzYglHm5/c4WdY2D3M4p58Zb98US6TKGkyVy1DBVT3QwPWmZeFLlgWirf6yN1MtfAeztRY
QKppUdsczZADhq4znpqWA+N3CLulA/+bmORG3LSY2Wp/RIllwoAJfeVjHc+Aqz4lhXJJITmWwgZ4
X+UZZtXC2xPEl/SrSIElwTulVBYvEhJgi+pKkf2p8j81/qeOsNft/auzrpd+n1wDXs9qfHY8w/MK
hIGB+gYltXkMM1g2Mbxr6gF6DT/eu4Zr3v6EcSkHF2CAKC5wFqAWtmmBSzrhIjfYbWF2004djQg6
O9t320u9NnfaO4h0OoNtS3S3A66E3yOb/OJA53RKJ0Sb4Y1noiIHYFF4f53YDp2iFLLOxTcXmBCO
8zygx5LCWFp4g9CpMQstEcec4h3Cvuk45tjjRVivx84KTtBBRiVbFSXT0D2hnjq/qeYkR8gtlhts
yB161pMBS6HB8Yi/Vfz7cFyb4aEMb6ytGm17HHrBTBJaq/HWJVSj+q8K/d8J5Xt2WSIjqjtoAOx4
Q2b9L0IqT1hZz/r/WfQvMithAEEEDAco9ARDSl4PTAvCnP2a5NAxoHGUuWWwYy8bGxuIRjiLoDf/
6I5jTXOrZRqVRK8ugl6CoupppspDKw5eU/X15WaLeMXf+tpmXP9+M+b0Y2317zL3+mOZe5y7QFYP
WBqPX0wqZLmzcZG0qfhvKCFdpG8pLiJ7ivJmfFexWX7yQtJFeiXp4geWki7Sa0kXP7CYdJFeTbr4
geWki/R60kW0oJSxnNT5UXfF2c4H/MXfUEFSNZJQY1ijPFRk0dxXl+zRqm+3N+uV37alOgTSW6f6
wIXyBDWH5frvTBxZ93pI+frTaX9DItr3DT5cvw6DuSlgbsK+3o8/h0XpYi9kdXqK2enpdqcnG56e
vXapy9tgfem9rsNo8VIX5qk/qHx5GKtf6l5hUH9oBfMwXsLUgxqm/rAi5mFCFVOXypj6GnVMWfR9
WfT9paLf81noC9n3xZz6D5J9GN+1hBAwPlT4YaRc+v1A+v2HST+C9TqCNiu/3ySfG83AmBvNyeme
nlRD1lcVkYEfvr+SUfX9UX0JV7w1hiwfhAmvFt03EnPaQ+n3XkKC+/hBoLTLQoAeiwGlXRYB9O8o
O3PwvyH+sxru7VLnvaxzTyrRjud4JgKMwI7mFTVFyiZKeAzRzyC8Llf0JKULy+57FFE43v4FD/nn
bmFEpUluAWEd/hQKQtHAF4vhHJvGpDieH/51i6EdfAHfZPU8sJx/ivR3Zt/hYXtsGOvYIXyIZ9uW
J5vxnAF5+3SEcpPpu3jGUqLvMvruKvquRN9No+/y3aN3DjQnuA1HXSI0wvvCkZfViEXs5ZTC4Vce
G83+5LGeaJMpe73ptD3RJFP3eqP0w/YkhyJGT4pGbLwUkDIkAwwFd8lsdAZnnyUnkNByvNmCU6bU
gOH2A0lmrrNlCGHk6/D+LaYeYRCSgoSKl6soljQIPJwlgeJheornDyHcHvIHKyshlRAEfJGuwX/G
rCJKYb1ZiFKUFK8bcrgGhI3N3O0bpj/8tburLN3UbUjW9fCxe+uPTUwfNvzsYTche/D9inSm/3Ez
jbRE47vzjB92diVxt/kTpRi+8a6RZKTlERUpj0hNI6JRvCKyiGVJRCVIItJyiIqUQ6SmEAm03YC2
m0Y7SCC+J3/4jvThO7OHR0se1sgdniR1eLrM4ekShyfOG2L1hSxZw9MlDU+cMzxxyvAjMgaRMPzM
+/vvj7rRoNv4CWLt87HR/5ljo/49lkbWm8Eswos1Gb0F+/1nTP8pq/TieZk+L9N//jL9/ieA/ikL
9sec1E44p43753/SWe1EzxPfaYePbJPnM9uPfWb7+Sz2+kcqH+807s9xtvhJ5vN8VvbvOiv7t+Te
65zFfMxgfpEWzS+yhvNlb49pnx6Id8cA1Emrc3rZbnX3j1a/X+bli5Y2914xxOJ44guEUkI8h+r7
zPI8nTGheW32DuSpwi+wfK8J2VRJ+IfcoqDki6QODbMpYTlgkzRQN/gSxZwLvYJnZoAkePmVsErN
FLezgh52D5u3gfIC5sgbAtiib+RC65DfsRTUq5MQVJMQFOIIqmkI6gkIuDWGcdTTEDRSEESZaHjr
dgOUMTHvyT39BV/hZ6Ib0gz1xpxAsjTA7AzSJ1Ave93CwEvUfKkzDgLhgtUDxjIbh5igV524zhB/
67i6+V2hvqyNkNI2UnS1sYgfjoMF0yRuUrvrYYqKp4YMlsvhuUCCGApL4s5Vdjmmg6fpbeMb4a+k
QgWUIdFVIfeiY9WY2ATfo8meN2ORHy09jcIy00oCTzZlccg6SZcCkyTCQoK+1tUNOz4cEgHIQO3j
mywdE3J7wykSOvwdX+5IbJPoqu1swX+cmLeV7sf5FKlHdmnFBIJbzfoSAcYxFBIwBDYh3TT2Er3s
yom1KCu4K63kTlnOHZv+U3L4E2ig/pT2sa6EYtw1dh5t5k9gH8q69rEc/89gYYlroPEzrdLHWwPl
zZAmGz+Tp3wsa8W8ZCM4o7ODoUUpVAv1QgNv2N9DimOw3T3ssbQgN4Hwq45Gj6V1ScS438OA/juG
trF6y96oTNhLJO2hyYpYJfa2Kwh2jJPBUJ3csGfLf5z5/Egn/C1INV7JuQaHQXWZt0UmJDrRtiAp
Ar24WbLGhySI37yTVhv3Q2NESQ7SIZ6O6KZF59RKKpVeYvWRPtZuKL5v8Qt3wC/uFcGEBiNzcHtv
4EvIgRXLESarVIn5C+vjpQqx2eHjglqf/8QeosKePsXp4WJg2Ni77+E3Y5ttpeIJeNJe6WvG3VJB
2S5sgz0JfoAD+6/t+OODPC1M2lN9zbirKtSqBaXaCFOqZqZUT6SUmMbjlGrVMKFKZkKNVEKx7QUI
Lj6lemZKynZGNcUdWkFMMqa6XzNTr2XVXdwD+dRjk1cyk9+uZ518zIUWGtxo4+TfZpd9tZF1+jH3
CfSZ5OP0a8n05SO+sS0cj0d8RjvSkfeoPIUZN6MgtQhIPQ5SiYD8GgepR0DexkHYWhVuL1QCFLmZ
MIjYHH5dPYe3689BWT2HWhxke/kchF3vrOJve7UaqinEl6uhmnGW6VPwnNJKNSTMQVl/Dm9Xz6GW
fQ7lslfdsnn0kxZI4PF2VlGsrLaNNA0us2/J6+2skksGFqop6yCdhZDn21m1QrZXq6aeYgPLpCA5
v5UsZDCgBBZ+TWXB2ziEW5mHX5Z/rp99fiMi55TcdTMp33wuvz+X35/L7/8D5fcVZfZH2eAmOJu0
W4Khm4ZHrePD8/Zxt33YOW2T/bOPxwdkr01aSUOLZO/jFbk6anfbpHNJTs/Iabt9wL401Um8x3jE
byp32Y3vXIajfsDQgUlUdje6FL5nTnJoRyr7lJdKXttjdTSiMHhq2raBJ39AAbOJ81oa4jsxcbim
rw5uZ9P0szVRXwe7arxVMaFUoxpDFNW9h5E9hqIUfQrs0RC4rjC0S0YVHjQqSqvwIFrBqLWorU8p
C5X155Mit/irQ16+uODHytY1xXNq6aY1jp1K8+wrq3VdPJvXf415hRO58MeYLm+N6QEdGPipwHNh
Y52T1oc2mhc3BS+z85r9B8f8xyo3Ug9nRiBmCecA4x9+AtMHRyjOM5Y3N24pnQLVKVUdXpVmmQi+
BQBff9ov6ZaK32YQlUT2ttRzwhqRvlfrtmeW+LYhfgcNo6rvhnOOqZl4Lm9o3u9gomKDVPhZTclZ
25QdqqxUsHyu4vcVXTKEJIHM1dHMT4Nm0vnLfe+QkJBkaXeGp503G/gQ32ZOEgKeJm540vIFvAqe
hFuawSGgfbIr5Eg2074O5x1x5HkVG1SI8jtnJ5+TyCfzuxz+EfkNPl2lNFPsW1TIQZUn6sAy+1ib
Ps+dtPa7Z3vHZ/t/kM3pyZ5krp7WRC0cOku7Y7w58p6cnB20e6dnVz38NO1B0++d294ro/xrJXJd
jVyLd5pVokjcCBI3gsSNIHEFEg/NXZSZuyg3d1F27hL5uYsydBfl6C7K0l0KT+zBLw8IDYvvmINL
JXxZDV/Wvvgn1JiC+6Y5evnihH2Rse1/Ejh3sneu4idNvXg4ZZfCOMlht3XS7pwenvn9nltLBYg6
uIj/E1TwwYBVANcrMUQgAid4bIwNR5iibLNi7MmezasGfJ2O+3ZweluQEZD7HAag3/jg7IuYaQPw
AQ8Alla1B+4PEOnDv6hlsuThK6lArCHfmmEXiPue0JFuozNxLNUzN6+1g8c19wzVLmLawlj1OWUN
oXPsdxI3sF+yzTF+R5mWjInhGOoIdjN4CwkChUF5kOAp07lEkBWreSlPzCR4yVlS84Xf7k9E3Md6
+6VIWBGnwbql7Az/wSb8uxU+9s4NtLRLsbF37x18Z5A+I4EQTq6jvRdy94XUL9jCnTT/1WR8bCGL
fC3ZPiz7vsx7JotgPP+koCR/3ftYIOuXjuR7kxj3vMae407955lyOa6nyMMGuAMyB7kaPqSSIIZ8
Hm+Mn348PmYH9n0Pj3eu2UjcozONj+mYKZedUpbO+2qE+Xlxz5oQYSEQ2HliwL57bDkusQ18FKLD
TOWW3X70D9vzb24jOWLOHNvQqIRNfOa2N7AgHaE5/CqjbZLpiGK5UDcWwNkr+ThuB8wyT3KbwU/5
LUbcYxJ8/MAXaL83pFh7gOZCIc+fx2LA3E+zZxskYG4/ZCFgGauRIIfLGT3GXywyS6L3houipBQE
Ict5T4jkxbkI/PfPem4FzwN7IT9Fp9CsbAeZIPqXB4yKgxSDUEH8Eha7lx/kL/x7wT19pN7Y5A3B
b833jj+egMODjOL0Q94/r8dQaZ77OT2DBKR1+qHdlHpTfBMJHSAMik0yxlcSyuAoI++DnOvgAr/O
KQ344hVuEBEH4y+48HioKR4EIxuAvSMSlBI+5xCahe9YxVt5ymXhQHnyq4k9gSTWkIikCZE3b4TF
vCMSic2kDx/nA/mEdx6ePRVZ/Cmy0FEk6VpnNAL1bUTTPJbaMa78IhiELtg/zGggFPZDhIecsEvO
wJH/6zpo4z+5XyuSgOOFb6ZYBfdDMv+kNDM9mWkf+M0Bq4uLdIWF9CKRoi7EdB92qUF3Tq/a3fo1
Q8EXQnkTzxRFdVkk6tbtlrpFXuMRizls6cGruOaMl2OL4nwL3yPdmKb2+2sijjA9SP3xr1bz2QB8
LqdUKpuBd8mXcwwFFvF345/D5g9N/Tx2sxFIeOSyOxuQ1HhSDurhfl6DO4hrZZsrqrfXaV02w2L1
lngjT4JsCD3D2woIUoYpYZmZfRREbGvZDpT12eTetG59xC56nYokOEQD46O+P+/tcsQ2hzFJ8hIf
JeQj4HiRgljJjsnHFXS9k4INSME7Rh3anGl0bqj8ZoD3emA6V7YfHoxIIkxTPoMe0HwnFMHjYSmY
lmROOKJQEGnu7nsvjYcEWbcoFTkRKDDIbIRvjm83QXrdVjPUO7elDRTflYV3ib5cpBFsF8Uz9RC2
uzC6uzC+u2SEd8swPmS756GP7Poqocjl3znA/4cEGZQB/tPekza3cRz7Ga/q/YeRXllekKAIgJQe
I5ByiSYVsmJdlMy4ylGxsARgQSIOAyDFje3329909xw9xx4gIUtJlFQiYmemt+fYnr67afWouh75
y2enZ8pWIPFK2M+D4yfPXjw/aD38nT0ke4I8fbnKMvjgzkbd+YfEEYOMQDe64tqvIXOqg0FyWu0H
DxrifUdzf++JoXsvj9ZQ/mNyWMIpenbal1/1RSKB/jyUUgb8+/5tnSlBkLftjgwlf9cFHVh/TAoy
yQl3LyRF72UaIkECaX9PQbt/rU8ua89Yu2/kgoOMU7m3J/5vuyMMaVTHOBfMRj6YnQCM4qUKIdYd
VisysyLMWyHm+XAKUG+HcP5w66pD1yL9lJzky1l/2p315T+9IZnBXyaxgxUztuMx+/s5GJGIprHH
R/RY9eQSgYY6619JhkEb4r3auL3+tD+WUqP885f+4kyiAPYBFQY/6nfHqhjuUIoLl1Lgui+OF0qG
ggHoxTm1cxJpJrvO+xcDIxyZKwo4CLpVEjWZDSh3rwzIAtxEFpPpBvkBjEE2SieXM5gvbNIDUmAd
nh4+xw3cUnnUTGvmtWYU+KxOGQPB+jdtSKW67uS+a+gcXgvfppsyrwle9QcEeGOzsS7zORgktiwS
WwESmYPEtodE2yKx7SHRtkiARw5EArO3C/kfg8C2RWDbQQDGStI9kpvZHbNNBTWfWgL+yqbFpuVh
o/PMqZFN+8amfiNQNbg35FrBFdNBHbwudwaH6mIi55BoGkdK/zq5raNViozmQF8NuTYvbHNU8fhb
JS6xVXApwTZ15QeCJgQ7MssZmbH4Wzot9hTj0cbNU98jnuzf9Ol8yPBRYNdb62p43cMNfInwG9hA
lxezjbAwDr4adFYBdPgxPLSb8tAeg4jruZKb/NQ2VouIJCm/+aik/bRsfFmHV6zdU71CvLZtJNLq
/s484MiAku75KYp0kWayYGBLxE6L4p4dVaC2zifZICMW98Cdpk54DQCTun2Fv+MA9QVA3RvCcblB
hgU+IQiDmPXn754w7SgcEXLqfHr8Ayxur59equwc7M5oJyTa+oJHA5TGJK81G3THHRhfYnks5ZEH
lkYKOmlfhaL04JcCnbTrSV29aQaNyb0DlvGjIfRPzAtif2J+D7c103gY0UDjqkVH9ZMUcxpP0pay
iZ39aoz2iiYcsKRZhtLxJkifu4fn0RNeDoIMAii6dMxIUtOjtl4NC4asZfU1b8iRGnNUNCh806ka
drrcsCM97mjJga/UuFd8rUzW1j1Bf55Jzrf18Gf67N52vI47Tr8d1k0R6zsJ+57FPVde0GSanylN
T/kzYjX4UfN6UVqajgcri8DKAlhZBFZGblo6U2u+mlF9+vYel3diMqRLVgylzPGgI4ZS5rDvtFYQ
4oJF5LHHmETPPl85lbNCjoIP9Vf5BVShByovs1Oo7MBPjHHgJ8U48AuUqWstD44PJg7FHCun3BiT
eNejx1Ee6mEnGOuJwFA2LXZI44PbvjgddtnyReywy7ZvZXXYlz3DkauswnVN+eWoB612R/OsuMe2
6cANA8Gytd3Ft3MpMUiR9GNfoBcHyhhgoeouRlou1TB2AXzkbU6nx6LVbG/zXvBbOy7GZCm8WFy1
oD1xgdFFq4bUPQruFzk2k3rZR+CmE5OY+vnFXpm11LNUn2yFsbgwOLa0K6Qx01phcCtFDvq+MI65
4ETDJTWlv0QNxRCtCEgt/peohdVQ3EmUVsOqRUhQRdnN0Zomay5SdSNqk2ID6IrmM+5ZBoS+RZuj
PfgMd/f0Qaj7effwOBcO+P13Ko6jNS0+sWu+bQjFOc/Xr9eztZjmFLlo+F4IVvjCUhCk8dTXjUu0
mVkJGTi5e8RYPpViOqjYzYOXi5mKqkblUXCv/fj68PWrH5+cHL6WL1vbdEfKt/FAUgXIWJZCaE8O
Tp88//7wwOjR6gFAP1cPKfQQpt/V7afV58ma06/u78/GY0O7ua8xPWuIzTV7jtY2JR9L36uKBQBG
Vb55MJn2x8nd66th7/7F5Je7jbvdu1r9O5jO5GYMEuzbuPuP8Tc9EJeF+eeufr2K4nB+Nt2frbca
bPgphPPaaMdmBk+bud+Hi664KzY2Nh4TtncbLnWud6oicns0bvf+9VUsBNsphsANtvih2VP7gTsd
2ivY5S9ijz/3Dn+e/X3g7ua2+3NrBZu7/mV8wuuf/RNeX/YT/sc4d5PPLybzPvW1NB65nf71oj8G
lSClE2hANBPcNDZxgeSGmo0mplIcctUmJHgaTxbKYRi5VoIhhvPNESqiUwiRQstQkLoT1S9KUy55
ozkoyUfgm9wbDtC8DyC7pM7UKHXTyZWNpYpfu4c/vaHwFgyld1x2UnD2widKOYNTRLmLyzcN7vIf
Mjwd5kOTKxsbO1ldYLzSRDL5v0zG4y46Tsk1VysFizqe6MX5TqXMIrSs2tM8kGKt/jvzG7O6g5li
2FSrnVPdWmJTcoPzyXVHREQ5OTXwVTg8OXlxYmy/4dk2mDYsog3SkOWc4wgTEwdCLItiUky0Gkxh
N0DYGpvD/ZOT0WvRcTo588WzYu1V+G/FY1F+KATfYb6hLcYB5vVpft3mT7bNxjaphKMKW+nGwukJ
u5okpkjiah/mOat0SW2j1HTVTKgrsM675NFJJu15HrwsH17GRcAkRzQH9UY4f5CP3hyeuCROiV6l
UjZmKcfd+PwKaR1bVAuCyMyhtefA6Bx+8+wW8H87RiO5Y52D+ctYu9W6OlpYDsFxgz6IZf9WPZUK
+MDJTa6Q20nUd7QG2e7X5Cpxswz3p9NOdU21uipCNwBD0VWVQLVKQCEYglcGql0Vq2rgthxwfzAt
t9lh0njElBSBknJdBKpHVQE40Df6Xbfh0TE4vP2EFdYSxaPUVYAPfVSQHB/9w8DZCY2WEQeow5OO
bYp4PyFCngeUcD2foreZARp3guJgf3Xh/hoH/CqAXMkZCl9UHP8S3m2aQyzSvRPQKYsJiqCLzi2e
Vr0Tjs5yRmfB6Mzmp2De0MWoxDCpikgMDwcNqz7Tx237FA9XB7WeE4zMxmCRuehK/lx5TGGon+Tr
1Scp8o/n9mkn2PFP+S3RJ6Q+8Dyb/E5+rPCLi55nhs4J2qxk+C4wYcdtzUtZtzFhCHjlFhnUlY+d
s2pyD9Q87aN1TEWI4KxFhAfbmBH2YdGYV9FBr4JRxIas3Eq22RaSP9iUVwi+yKrI8Sc5C9XWXEpf
x1ADN/e88e6s1ayBLJgpZIMPKEVDsMG1WmRQhEA0YmOYwa6Mz9p55WrFa76FXTkHfDGrFy5e6dqF
S7eSlesUcP+Jo13YCb1idywnzL0PzPknLwQoZpDQIlJR3oh39Rq1Q6lebu5Wrgkc4NGtIZ56EE9v
j6MP8uiGMC1U8gAxMFU95ZtguWrhY6ea7GFpbbk/TJlia8fXa4Gy74wyiPofJDlAL0Cvpr4cQS0I
gOLgPIOZby+rlZvLdupltjInCqvUVrZT1VRWyVim1Bi3tJUZ6xiuRxJQvl2zDTlaCVMxJCKUY14g
uVOXU6RL4LDIRPxcaFkeNC+bUP6h8gjYSg4WgoipRbCMk8q9otXBlHVFTAYGTArZf/TEqy036lih
OtRVn+K0RFeCWUBul1F3QTlyV7wbt92MQsEElDJ3khi+kHSNVDOx9sy0K5Vbuf5mx+gJy+5Gq7z5
oglorUijE1HyFW2ElazwFokLiVHGrxMdnkWH58iIfzhOROWoxLmoiojE+SnLDhl9AQFgBMHNtGXl
/7yOr0y9OyvEm75iG+70NY/U2Lxn+zqPDSVkB62xSgDnZCkz4SNk54FqiZPJHF2ekiLJKkizA7Ks
SRuFObcXl9NhbwgkykSBQN5xCgIFGutE9z19cfL3JycHJiCJKWmMXxNvwvrR1OgLrmZSsWiY/adJ
cZxV1ZRDPE7GthcIqjEosARnsN3GbdrGKwSREc38yIhmcWREyzrht5zIiJaJjGBBDUjQzCnAzbZ4
dmKxD27QSDsaNGLdqFT0yb17OkpnvKjrUJ31FppjKHkhqDAKQnW2QkzXWxt6Yzyca7Fwm638cJto
ZE+1oBr9tu0Qv0Ls/Dic7fw4nG21pBy53IAbJ+zIRjKFyLWiaPkRUQ8sWn441IMIWoXRUBoveRbU
8jnhLBEUC1fw4e1QjceqoLYP7O3fmZBQSeKUVRoMZx+7sx4k1JTcGvzZwGghk0cMyF1EqybpUK0k
1qU02KU02qU83KU4nqUkE1uJVi8gmcSPsKaiXEtFlDQeL0suCQ5brtuAUwYO2JuVS4NNFqdC5aDJ
WhQvQpuTjScWENPQ8ZxhBEyppLnmqyg9c7Sj0YEEPtq8VhDwAW7JxREiQbhH+ZAg1KPCW8Iwj7xB
YUzMGv1lw4b+bNtpBbUF3dCeL00n6nAuyUSxx7lzO0PGV74qXjntCB9rqPESft+bVfy+ucu3suvv
3MLlO4bN0l7fRd4Kjkez6x0dV9Ms5c8cAxjV01RV0qxMRZPnlIERF7N+X4AWGq1ZKh52MSGRwtx8
cPrugzIBb0B9CyKEj32xgMRWKBAgoPdQi/xiSMWiMtlhphMOfDtnYoE+zaF44BG+dSUJeSFda8JG
lkRGbOWNUCh4Q3bFmr5AdO1b/RsojtO541v3+HQ8EbNZIJsSUQD9SjAmVyTVYzJjgSheS9cQHoip
6+26nZ6TPU6FmXM5LAqgFQUgJQ+sz6Q1YqMrPDgs7Zot2EShaVzCU9eu5qPoO09ibMzgzHBSOYwQ
9jgq73JaAYrbx8UkLcUkLcckLcckLcXEsnZlWXbLmDuPC3pzEiQ/fXNy4HQtzKxZKDjnytby9KWq
TzHLV8DTmbQqlKzuwxB1pTpbtbK6ljFkMZas/eDh2nbzL4y5Mem4RhCSA8jj9xeyZXikWAhvxfhY
PfIG4bh0zm8Qj6tO/xIjU5pjuvwcUzXJdNlJpmqW6bKzTPU00+rTNINNAC/PT4mMmyTW8Cy59t9n
4nT5EGIt9ZgARxNNvJG0sUnix6HXva5ZpGtmu2rO7QNxbh/k9bct/zGcm7k1HNUqlV0ZXT3Vj5NE
kgRzz7KTjx3qYhPoQ93ebnSRRGHuuzA3cGQZ6I6PaxbHNSvDNSvANYvjmlXENbO46htb/tdfjsfC
OU7geBfppb3u1GmghGqRnpkLL4vDy1x4mbAWe4f5MTSO3G4pwAFqHTWA+fs40QlQaXmQGbKeWNz/
6eD4RArBCAZ5RCfP+nAhepP+HIDNu5m4y0acPX/x/PDs2eldC1azJDY1tXnCvMJ5tvKaLXNHNBkQ
u+N6ZjmucPFsaZ6voKfCdrCzg+l32/u99dbHvcNcvOwBbr2NnOp27OFW7GEc7H4M7H4M7H4M7L4B
61aZsuIXW+U9f5UrOJ8Qz2cY/Eq9jfga8dFvoh8P+eR/sPIiijBe+tKYeLDBjJlGntilRMXoqerk
sWSJKM/21aHa3LRlAeB9G1asPn83m4y699F0osodnU+mQymIDWSDePY9jdfZiCG90eBSiuI0TvYd
TfvjeZck4cn4AvJmfTvHPmCo7U6ns8m1yn1+X2fcgsyP8lOeXP7yTmd+mV+OGgJ0JaARSVFrIv8/
U5RLtroHHjOmuVns170s9utuFnsqUYZUHqHJD1V8J//3SLw+/utzeAZkNMH00JDf9sn+a3r4jby3
wK8xMU82sTiolOiMb0yIX+bhl3n4ZR5+JFPh3flp8WPUa104FMN/0g6emHVMz/6ElWRU1cc0CzDN
AkwzjeknXVOwmqbDhFLiQP2LHXSF31nLjKOEU0VCm+oUBw4jkgxLZvQy2QzoxIaZwhq96822hpEG
MGC2VaDA/lk4sa4dPcV1b45XS8/xagVzvPpEc9T3Msx0N6+UB7DKNhuvc08HHIbmFxwmwFPhCPfG
0iJhTNeDd4Qg0PgacXD4w5sn2jZBbmj3oVftDZBom4Jq1JWoYRhnfzAAVeWV5Jkg75xSl40mWPPr
+FvwAJpOFd2eXY7HvKp7NX1muc/ZZ8rOENdl0n1cVVNZiyj4WnEFH3CXEGSbSoYSLktXo+nyqIUq
vop8TB6XaxI15p7RbVSToT61OwfvLH6RW5+QqeEVI2q6lQhy6zGXr7jQliQxq4NN7iz/811UsjPN
j4SL00aeiBcV7pKodBeZQJYnykVmkFWZQZYzgyxvBhlzEq8ucWwVSBytMoljq0TiaOVIHAEPr4km
05S5Fef8kkn4YR9b7W5SoEb9TOraqCL1X1thO7DGdr8pzW/KU/MW6m6j5vjBGTfIx/ukbp9CHfDy
+t0BV/DeyGwfVCxsgAX/vVebJ1XFeeDSSFKvcs7A88bdE6AuWWs/QAUe9Saf/YHx2MeM3gFDBErI
SPkfL+I1Der+DCKBSLYny4I4cG9MjoV2I6Axqf5J5Xz0wNTtZQdZ1wM1Xim5A413qY+AHX/kAAg1
3xVAnDogQiV4FSxcGDGFeAkUZym4Zrz6+CMXQKggLwdx6oIIVeUVsPBgxLTmBW4cak2NH8fA9+vQ
9IQdS9ubRtvO6Rl3AxlEcx4ET7feKp4LzdrKwQvNlD1ivnVmfHmT37f2b9NDp5SeXnTP+zRCVzbl
nigDzxVl4PmiDDxnlEGON4oocUQZlHh/M5Ro+QxG6qdGiLVmbusy6KSlbjHADQ2i0byPhbNIdRHv
tud26xTC3BXORpTDxPkXwcw8PLM4zGwZPDlMSupaClPjmQe1RSvKNzkCVLkM816dQoi7gp+iUojF
q9mimfOjFoeYLYEjg5i3lC5EtpKuylgys/FT1YjvTizhy4CrmVXapvviWHwczt+B7eQcNbFgOxlP
ZqPuBTpdKaKkHernIpmjJN8Q3d6VAoIcT603UX5WXv7tDumLtZuOkPRyNLnqz3WC3Oi0oKhIvEkr
gMP1GVKeifdhZq6BDTKJDJNDVHnipYZRgeIbvW2j8G1qvQy5L12wVv6CtbTWM2hpv40v8A2Wlwj0
8utbMi53gSu8b6P4feiF/fHdEGon30lsn7p1Rfs4yXVE435D5Iu2tNvZ2iBUIYFNZxDTIVkvscFS
bmKDPD8x7T8V337PqBk/Vp38nBIvX/zw5M0hzyUyjRUWVlkzNJcVOp75RYRVqgw7IIt7t/lGjQ0j
9eU6t/nWBT4k49kq/vu/SMXgF/HdP33xsriQb6xQr6nxzSromvjO4ah/lk6LWqe2ldHXZNqdL+q2
EJ8LICLxDs5YpT4R92ubGeVEQY+j8i6nFaCc8lkZKpgMLheXUCml+sTS0omlpRNLyyeWlk+MoJyq
ZB82PkGJ9kZNojUMgVPY4AxjUECvCmZQ9mPIf/T4j7H9gQXSSVcWKYC891uz0VS1j1WD0aWYD6FT
ozA7cI4Aqy9zvUZnSqbLVkkgA3c9qNZL51Z+YOp8dyIdD2xHYxRnVZLHpkwyVnSClwPZnUHg32RA
oYDKmzNe0tgrghwto7z1duXFj62K5h57s68TcVLxI4FQZqa3ppgRJPZ8JIZ7e+8ms+E/J+NF90Ie
pL29q/5M7nD3wiriWYG2SHleXbAN+YMzK9raP1WRPNh6tt1y/+Vi99FwhPWgUjCXdmeZSf/pO+KH
5X6tX36OEg6uHZq9/IihGJr83/tIGvsOj+6J0wDl+VgChYKspv1zqCFLDkXyzj2fqLLNqjAzTB4s
gP3eIyqljFlY55b6yk+p3hDn03SvKTlrcGkA/4gZZmrqSh6ZVSSNGHOev3hz9r3848At7MvvWNOl
Y/ScrLynzofJ1Xy0jFhxEM0TyXtlrHKOtlwcq2Txiu3yc4jZ1fXnrsSD8wkEng2GsznI3f3zLkgR
w4VIWnVyLFGVzOXCbShrF2RXTdp1SFUFeg55eKBkq5PInzn3YzJWqwCht5pCpcxe6vho072lrhUM
RqBLyP5JNXFZahq6ERTBxn6pHZJGh9zjC8wbgLzz3/o888K6rBkdmq0LMysb7TyB+BvmhUwoeLpp
W5/XKSzNzlLURA3pGtStsb7u1QZEi7Jcn7gnnhQPJyM0H0smuTecd8GziHaBNktZpG1jd5yp/GUj
VNMgw2yASBpuYrjPtd3ZESONw77WxO8/pf1mm1thy93NE86WFe2XanNUXg1WDBTUaOYODbeHh0Wo
8C+zU5zric0yNbOsfEpvOcu0YJZp2Sz3n3z/t5xphgEYipJAOTiHkMh/5uq6Bye0KFXouhHsbNG4
KfAGZ+TWC66fxtZdnSBnpatsjbcZzmlzjVxmp/ztcfdjLm8ruQGWSJgrCC5DJ5DnkXHn0bTCPLCl
wnzLMDfscpj6fDwy/j0e0NQD6lqL88AyUVRDHi6J7o3eSxT1Ufwx+llodHrBRBnAXn/QvbxYPAqb
3Cwpkqh6VQL2N15LTv+RePpIfNPchkoB++avY/3XAf3REM/pD0hPryi83tWG2oiGWraGwrehbgg6
ODr7xxF8yz3x7DA/84eT4vEd9q+W6HElQeG3i/wuyvYYTfdYku/Rz+JUKQT7i00Suaokhl+TTX7i
ZJP/OTkiV5zlceVJHlee4/GTpHj8BBkev/AEjzdJq6eSNVbwjN1ZqWPszif3i71pjH+lJIwrzPm3
bMa/ylUkdNrFm2dbXGGyxdXkWlxlqsWlMy1Wze63oiyLSyVZ/AyUKVL2YrlsjwXpFP8Qjs/2TbIk
3jJJomI8xNccibnV50kMEuWZucpTc5Xn5qqQnGsZj2D/yZJ5HGJV55dw/i2UyILS8SWuvqvPvyVs
/q1FTLgTkXwON5GiWLnpf4FC8rnV4peqE79khfila8PfoCp84ZCvdd913XdDj3MKcLnFQ4bxqmdL
Vo3PZTSq17f+c8pb11zXGJ06kj+0dxRzXgm60X5Yg4+G6KZ1qAv/fY6LKFVApxjv4RgNoirTnDh/
B1SmF32HmxQi9x3YGsPSTxZRF/50eWscgptIIhcCc7aM1PfmeDdcEORZtuBx+znmNR1X5djEVT3y
bW0Eh5WGXHaY0EwVjhMfh/JJ2gfDB1o2sNE3jrYeXkuqwmxEBs1h7AQNTSCb0zGLdXQrVrJ0eaoP
5syri7wihM472fINY8tX+5onLypDf61xWL3G4RdTtnCpUov/nvUNlW1nNVUOfWC3rnUYxe42FQ9z
Mfxi6h5GyrQZTfvX2odfax/+G9c+pI/zUxRADD4q/UktVQNR6YbiXuVkVE9qxY7ltdCx3EkuHu1h
vKhNn6jmh6mX8nuclsPQrs9cC2OVNtZdFr09rU+wgmTVUJRWVtwz3dHBJm8AqQ7umbna7twLG678
jnpAerFfDVRup//5wduG0B6RBgHtE+l7FcveUcdiAMK+ReoVcVJeqeuxY8+3PyKuyb5nMkwc3LHl
P7a3ZjTMIgw0q4HtmD0J/GL3mEZIPzxbZNO+kcwTWmrIhGGWvy5GXXC6TbZ4Sko2aXkJSQHr+Y8/
/IDsO2WH6CgxCp11yV981EdPMeJWma+ZcuWd06kVQvmXv5t8NBJvbzhbSFIylIdGHCOV+QCWFcpW
plMMEppicrmYD1WWQYKGjsH92dk5xAT1k7okcvOJmF70QYgeDK8lZneMVkzzUr+ys4kJiLq9Y8lx
10WyZv/k6TJVVZUs7tydSWa/9psRPK+p83XUGfta9Q2cYcgP+x58oz9rVZ0//K3y0ZcLPOuiMycs
IE8Zh96c4Bsspt35/L54Am7jXYj3UK774OwvhV15OrTMKZK4NH3yhJJHho3Mc9rJ5M7cX+8k5sD+
cjFJuxfkUicli59Ojw/OfvjxmSQfr/92/Pyvddf9uqe/eqNn6rDWHJKgKtezy7REc6Ur01EbeGK8
ghRkbIBxPQNA1O2x2GrVDVXaajm192y3XcF66U5/RCZhyJl1JXdMFcn0RPlCIl03f53aZ+pPRa0b
xlIg/5M1GKHnXo0snZbtzZjlORsY2zt1lzfc2keOg6NOJjOY9fuK7PimGZNHRk5V3saH3XH3Ivtn
X34ENzfQ3MR2cmvzx62MHWi2oNjdaMGQLcXGBrbovJog/xkWDW7OiF1apWaN0oFVi2YcB3W48jTJ
tjxXjhLZrwLm8vm8Sxbtkvnlu1i5rmgdEDUDU26sYaqNmZB2pjgsqukBdb3yCnkQ/JaB33IqeVR8
QbvwBZRSLgQJB4BrDZfUDw7rga0gNxebzjWYxO3R/9MjlxO8VlWC2Fpr60HTaTo80U1/aTZhGKeN
8+E8yWX6G7XCek9WQFneNbeo3JMfZEmfP3EnKhQS08sSv9t0wh4dzjkSJrhaPv3eUjGC0cpKlRnF
Vg6juNEiVlG4rGIrzipC72sbuYfrCOGqvf5V5xbMI0QfoG8Vu3IZo/G9vvk1Mbduoi6LQHEOrKKo
Yf0A/GPnpBt+S+Iu3yz/v/UwYa+qRJUtJiLaqWP5PnjNuoOBXF9028KjCfFWtjOd1sciCferXV9L
gm1p1yHPqfre2x0UQo4ppoSzenOVakA5nBuWCJ9v7i3xOk0bceRjh04Ig0gLZLKXBo3+aDTHc2kz
oQOe+7qDIktIX54Oxz085kkFloie5GpBYgRBUwHJI1CwtOQdVDz1UhKWWELCor55nwlXgBR+LrWa
b9rJNzyK78T2o1bdCbd1DaZDMgzLdairxXCaOvEhWf4QnZ8l9p5dWOa6Wutq78kdkkVrBlO/DfkP
NAN260reweJEstVBXPXD10YVstBtbU9XauIm3ASapPTVFru7gpKV1NVCsyM+pMv2/wFQSwMEFAAC
AAgA+mxWLa06h6r4CQAA1yAAAAwAAABtb3Rpb25fZXN0LmjlWVtz2sgSfsZV/g+9m606mMUCXQ3x
ngeMcUKdYBwgTlJbpyghDTBlIbG6YLOp/e/bMyNxkQbLD/u2VHCk7p6ve7p7PmmGRu0f+5yfAf8C
fHvs38Lgoffh0gC87A2hO7ztdYXyEmAQxDTwgUQxXdn8cklsl4So3INMljSCdRgsQnsFeGn7QFdr
j6yIH4tBwRxsWNthzK4Cn0AQwioISepawDxSlwQQB4GHEBFEa+LQOSUuUB/642Gj3+uCahht61KD
KLZ91w5dhXkPIoI2MfFd6i8EVhxAgtKYRRYF8/jZRmerwE08ZgpLHMpFGMdOjTNwEydG5yERKLa7
oREGEC/tGChqGObK3iLEPERfBMgLxdT4C5wc+kcLBHSC9Taki2Uc1TEVbgrlbyFKnCWHeA4Sz4UZ
AYTlQpaa7X9w9LMPIY2e+LRYdHRBfdsTEC7ZEC9YY/IxidKZoTdAeWNJWBSrNTrlIaCTWUT+SDBC
AUVcGgdhxHXxktDMnBKM+Zl6HmZoQ8APwKP2jHo03sIcp8aCT50LoF0EvKAu1svhFeeJwD6hG7zd
kIh5CUkwV053zTwkZId3DdsgAQc7KcRYoziksyTG0sUs5EbmbCuQUJr4rCnRCcQkXEUiSAIf7r/A
B+KT0PbgIZl51IFP1CE+TgM7bM0k0RILPEuR2Jg7Fsc4m9ddgNB8StdAKJsFbEgYsabWMi8pZB3n
LGCqWFeMHwu1ZiMvePU97JDd4FfysJ8u73zmYIlVz5pQlAd7B2sxT7y6AEFz+NqffBx+mUDn/jt8
7YxGnfvJ92s0j5cBarF5BBhbmmxV4fRC28fCBnOBMeiNuh9xUOem/6k/+c4qeNef3PfGY7gbjqAD
D53RpN/98qkzgocvo4fhuId9OiYstHTBvJLvebbkXRLb1IsOMvAdSx0t+ZrgbRcSh2DTuMgZbC2V
FzNdYl6AC5HNV6yONKfXQOfYyTE2dkixh5AaCmUWAPta16HvO0odzDZMCKMyePBsBys8ThiErjfr
cBNEMbMcdACamqqql6revIIv485+Zr/03fc4awY5RQ5VlvUNqIqqaIoFWrOpNdRmQ70CVX9vNt9r
OkTb6Alr3ntZwy8Zyj/3aZyfnZ+9o3NcK3OYDoaT/vB+2htPph+nKEchRWbOy9kI3/ESl8DPitJY
B2Fsz5Tlzzn5wgtmtsfl52eNGmdYrJ6LVRTzh4jYoaA6e0VwKURpS2TJEUS1Wk8PRCLkRoMtG7aC
QqTcje0lZB/v4HE66Hyb9kaj4ahSNZptCxOvmdZFGkj/ftIbwYzawh+/beDfUQc70aERX9mrNVkY
/ImDVLlYoOsItJo/4wHsPanWlI+f3vQ744qpaqmPh/2cnpcUJ+kEfhwGHn8qhQ3+19js/B2h9hns
N9WqVCoZ3IY4MUuNvYbqxnNwnBfbENE/yQUmKAg4Cx3k8SeYewGSw0+HuPe9/oeP00nv/nYq8A2l
KdW2vrUqFYspz88i9rx2WPiYfAwbU76aufYUI1Kt33Xt//Df87PKD2CfJvtTr6LVRVVVsJl1EzOf
dwu/QlMxL5CmKpmpapotrXbKEDIzXW1fWbU34Blts62W41ktq6m+Ba/VVltXZXiaoqqmoZXjaYpu
tq5a5XiWZmjtt+C1VcM0y/B0RdM1Uy/H0xWzpZqtcry2Zb7idodnKHqrVZ4/Q2mZ1tUb4jMV/cpU
22V4ptI28eWwHM9SzLbRLJ3vFfafbryhHi1F1TSjtJ/bSlO3rDfgqU2leWXppf2MD5G34WFnGZpV
imcomtF+Qz1UCxewWr5+W4rxpuXB5mGWhqexfmk134DXxunqpXi6hbRxuryVv65L6LAl2BDeTofI
s6fIEOVyw9NkKEcrUKEMq0CEcqwCDRaxJCQow5JQoAyrQIByrAL9FbEk5CfDklCfDKtAfDIsCe0V
sSSkJ8OSUF4RS0J4MiwJ3RWxJGQnw5JQXRFLQnTS/irSnKRXiyQnxSpSnASrSHBSrCK9SbAK5CZt
1SK1Sdq+SGxSrCKtSVq1SGp7o5TS8F16tVE84i/YNsmeeSRHcwlC6do0RjNU/67rjOV+YCBqHbQ6
6HUw6mDV4Sr9h5p2HcQ/tVn4soFNqSZvoZ74aux7fnaCkW8/syiNLMhLHHHJRmCw2Zjzs3i7JmzP
gxvrxIkZZfNELNLN5JwSz41QXGGIK/tl6r7UYUV98T+736b322tmtstRyHaM1F9w6WOvO8F98jok
7uAxL/l8LKo5SRgSP5ZLM+PMTY0OqD/u3HLhvkwtpoIRmZ+SfzyleDw54qTms1TRTcLjjIgnpGpd
Q6PxTPgpGNu/p3tAsbOJJCNaxzC05y6I+5W68TKnuGObyiw7GEGM+/PjZEW2GzH34DP/syBhR3XA
pKzqoth8L8j3ZeuAHczwzadLQ4yPHS0RyVxnJxI9O5Xo2alEz/aJTgs/O2ia3VRn2VRxKgdR56JM
EYR0tbnDtXAtkd9kchFL1nAQkjnBlnPIasPUf+F3zDfqt3Zs55bPJqButbskztNd4jsX1f0qxGWy
v9myJc0/B8uUh8FPVkTZhAqjyxnvne+M2M3F4erfhSCuulg76mIRVaSlvMQPjE1e2vdj4fVYLGLM
Gwsph5GMYW27D6d2rBSEK46CurbnJLzT2OETckkDeQVCmx0iV/mJtDdf0xfiRRfcPiQePznNjqum
g053NLz5NOz+bwrrIKIsmcyysUsLKw9Mp9T3cId/frYg8ZTjV3crI01oymxsOgAFpaC/E0rOga+N
zJS5h8mLXHzCeuYFztM0+rNeadTEDXbKivgRb6AWO5nEV3U2dcngZ0YactwlJyS5bs4Wm1z1R2KH
jCmIh7X5wYrKueeJLZh9i4vzLZFyfBrpGvz2G1Q5LFyCit8DnOOhSwwLhxwh4JBjIy94RpvLQyPe
YJUnFGtYBfESwKePo19qWRa5s5qoK5oO+vdV5rAOT1xzPFykiP30s5UBbCUAKcblHqT68qt6ATXI
AfC2YwCdb1WczWEAh4O3JwdvC4PxGV/kKBjY+LjkeWLLspoylOAmeJVnhNVsR1dHvHMMi5xmrwLf
FZI6dNxNTjJmBSfi7hCHxyjErerJcIaeyyPirPM61eb6Vfxod+fZi+hQP7jh55Q7B2t+Kyz27LJX
D26ORkstonx4vGpC+CqVz4LAOz8TkfZ2vy5WX4uxAnejzqDXv78b7vTpC9Npg93zLTMR4v6g86G3
98IeyGUGj6UIOYv9O8snuqLxRb4Fzs9Ehh6q+beqPWZd9tKVD/q0/rFsfJnB5wN9bsb46negFK15
fL/NgUubM5+rz4md1vPUEt2PeqVbypv2tEVINpkRm0Z6fM/v5YAX6YvSOzrnP62MBw9Zh+Pl9N/W
5e/YL/FznhB+Jd7v2LP8+Mcl/gT/G1BLAQIUABQAAgAIAGpyVi2Oyvb4BzcAAHgyAQAMAAAAAAAA
AAEAIACAgQAAAABtb3Rpb25fZXN0LmNQSwECFAAUAAIACAD6bFYtrTqHqvgJAADXIAAADAAAAAAA
AAABACAAgIExNwAAbW90aW9uX2VzdC5oUEsFBgAAAAACAAIAdAAAAFNBAAAAAA==

------------10F5A86D55CD1C--