Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Archived » Test and Performance Tools Platform (TPTP) » Custom log import filter howto
Custom log import filter howto [message #85812] Tue, 24 October 2006 09:43 Go to next message
Holger Machens is currently offline Holger MachensFriend
Messages: 57
Registered: July 2009
Member
Hi,


i would like to develop a log import filter, not filtering on CBE attributes filtering but on attributes of the log file to be imported.


Example:
The log file has a line like this:

12:32:30.872718 open 0C 51 4A 05

Instead of transforming the log entry into a CBE representation (which might be very time consuming) i would like to specify
a filter for the third column of the line.


That means instead of a process like this:
read -> transform -> filter

i would like to have something like this:
read -> filter -> transform


Is there a way to do it, and where can i find appropriate API documentation.


Thanks in advance,
Holger
Re: Custom log import filter howto [message #85828 is a reply to message #85812] Tue, 24 October 2006 13:35 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: cindyjin.ca.ibm.com

Hi Holger:

From TPTP 4.2, there is a new feature in GLA, that you can add a filter
class in Sensor or Extractor to allow you filter the record before you
transform them to CBEs. You can add "filter" and "filterExitClass"
attributes to Sensor or Extractor components in your adapter file.
"filter"is a filter specification string used by the sensor to filter
lines read from the log file. If the filterExitClass sensor property is
included in the adapter the filter specification will be passed to it
and the filter specification must be in a format known to the filter
exit class. If the filterExitClass sensor property is not included in
the adapter the filter specification must be a regular expression.
"filterExitClass" is the name of a java class that implements the
org.eclipse.hyades.logging.adapter.util.IFilterExit interface. Each line
the sensor reads from the log file is passed to the class to be tested
against some filter criteria. If the filter sensor property is included
in the adapter its value is passed to the filter exit class to be used
as the filter criteria.

You can refer to help document to get more details.

Hope this can help you.

Cindy
Holger Machens wrote:
> Hi,
>
>
> i would like to develop a log import filter, not filtering on CBE attributes filtering but on attributes of the log file to be imported.
>
>
> Example:
> The log file has a line like this:
>
> 12:32:30.872718 open 0C 51 4A 05
>
> Instead of transforming the log entry into a CBE representation (which might be very time consuming) i would like to specify
> a filter for the third column of the line.
>
>
> That means instead of a process like this:
> read -> transform -> filter
>
> i would like to have something like this:
> read -> filter -> transform
>
>
> Is there a way to do it, and where can i find appropriate API documentation.
>
>
> Thanks in advance,
> Holger
Re: Custom log import filter howto [message #85889 is a reply to message #85828] Wed, 25 October 2006 13:28 Go to previous messageGo to next message
Holger Machens is currently offline Holger MachensFriend
Messages: 57
Registered: July 2009
Member
This is a multi-part message in MIME format.
--------------010704040602000003080104
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: 7bit

Hi Cindy,


thanks for your reply, this is exactly what I'm searching for.

Can i set the filter attribute of the Sensor component
in the adapter configuration at runtime,
with the input given by the user via the log filter configuration/creation
dialog (see picture in attachment)?

Thanks again


Cindy Jin schrieb:
> Hi Holger:
>
> From TPTP 4.2, there is a new feature in GLA, that you can add a filter
> class in Sensor or Extractor to allow you filter the record before you
> transform them to CBEs. You can add "filter" and "filterExitClass"
> attributes to Sensor or Extractor components in your adapter file.
> "filter"is a filter specification string used by the sensor to filter
> lines read from the log file. If the filterExitClass sensor property is
> included in the adapter the filter specification will be passed to it
> and the filter specification must be in a format known to the filter
> exit class. If the filterExitClass sensor property is not included in
> the adapter the filter specification must be a regular expression.
> "filterExitClass" is the name of a java class that implements the
> org.eclipse.hyades.logging.adapter.util.IFilterExit interface. Each line
> the sensor reads from the log file is passed to the class to be tested
> against some filter criteria. If the filter sensor property is included
> in the adapter its value is passed to the filter exit class to be used
> as the filter criteria.
>
> You can refer to help document to get more details.
>
> Hope this can help you.
>
> Cindy
> Holger Machens wrote:
>> Hi,
>>
>>
>> i would like to develop a log import filter, not filtering on CBE
>> attributes filtering but on attributes of the log file to be imported.
>>
>>
>> Example:
>> The log file has a line like this:
>>
>> 12:32:30.872718 open 0C 51 4A 05
>>
>> Instead of transforming the log entry into a CBE representation (which
>> might be very time consuming) i would like to specify
>> a filter for the third column of the line.
>>
>>
>> That means instead of a process like this:
>> read -> transform -> filter
>>
>> i would like to have something like this:
>> read -> filter -> transform
>>
>>
>> Is there a way to do it, and where can i find appropriate API
>> documentation.
>>
>>
>> Thanks in advance,
>> Holger

--------------010704040602000003080104
Content-Type: image/png;
name="filter_dialog.png"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="filter_dialog.png"

iVBORw0KGgoAAAANSUhEUgAAAg0AAAJYCAYAAADhW9XQAAAgAElEQVR4nOzd d3wU1drA8d9m
N7uphhKa0gNIBxEEFZAqKIjI6/UCoihdKaEpIMVKCQoIih1RLkXF6xVFUQRp 0gRpAZRAQkmA
BEJCCcn2ef/YZJNNNruTZJNQnu/nA5mdcs6zs2WePXPmjOaxeQsVhBBCCCE8 +HFCJDqAS7En
SjsWIYQQQtygkk8cB3AkDQCP3ndPqQUjhBBC3KpiTp3h7InjvDpsOGXCyhAc FIzWT+uyjoKC
orhv+NdoNC7L9Do9ZqsZABsatKg7YZBVToVKFQr8HO79v38BOZKG4wnnClyI EEIIITxQ4MjR
4wRZrpN2LY0yd5RBp9URGBTosprVYkXRuD/467Q6rDaryzyDzpDvsvxo/bTY 7XbWrl2rOvzw
8HDKli2bHUvWhMUCm75arqqQjn0HqK7Q11a8NjXfZU+/NtO5jrtpIYQQokQp oNisGK9f59r1
a5jMJhRFwWqzotfr0eq0oDiShpw0Gg0GvQE/nR8AevT5VuFpmTvbtm1j/fr1 qtYdNWoUXbt2
dT52Jg1mi4lhff9NZGRkvk0kSReSGDF8BGaLqUAB+tq/ps7wuk7OGLOmV898 Q9W2QgghhK/Y
7VbOJ5zl7SVfElyuDAFBIdxdvSovPPkvdP46ov6zgouXUrBYzNjsjm0a167O kCeeICAggEBD
IBo0PosnIyODXr16MX36dOx2u9t1rDYrHyz+gIyMDLTa7FMpzqQhzWRFHxxC hjEDk8l9UhB/
Jp6UlBSCTOqaQopLmpf6H5n4Sr7re9tWCCGE8KUqEXfToUNH5+N/4k4RHX2Q 4/c0I+yOMsTH
n2Hs0KEcPHGa5CuXOXjsMIcPH+Jk8+aUL1+e0NBQ9HpPrQlZCYX6iyH1ej0m k5Gz585x7Ngx
2rRuAxqIi4vDYrZQq3Ytjh8/TpMmTVy2cyYN6cYMIASb1YrFYnFbic1uy7Fu 6fFW/5b3F/DQ
qHEu6295fwEA696Z5Zyfc53mdSN4oXcvIu66k5Sr1/hy3Xp+2rnLpczuEybz 4hO96NCiOXcE
BTm3Dw0KYnDPR3igSSPCw8Iwms38c/oM327ayo7DR3zynIUQQty89sVkX6V4 /uRJwmxGUlNS
8NNoSE/LYOvhw2w/5DhenIuLo6JWw6XLlzAEGAgICHBua7fb8fPzcy1cowGN H2Qeo9Wy2mxM
njSZY8eOERUVRa3atZgwYQJWi5UF7y5wu0120mBKB8BstmAymx0JiwY0macq FI3Gec4la93S
oqb+nOukm9JpNXQ4ez79mFZDh+dZt161arw2aCCz/rOcHdGHqVG5MlEvDOfc pQtsjz7sXG/0
k73ZtG8fUStWYLZmt1hEvTCUY/HxPD9rDpeuXiUkMJBmERE81akjG/7aU8Rn K4QQ4mbnn9nC
b7OB3WbGeD2N5JQUFD8NFksGicnJjuOWAnaLmYx0C6kpqQQHB6PX6wk0BKLV atHqtHmTBkUB
pWAJAzj6UTwz8BkiR0cybNgw/P39MRqNjBs/nrAyZdxu40wabGZHhWaLGZPR 6JipIbu1QwMW
q8Vl3dKy59OP88xrMXCIy+OcMeY3neW57t355Psf2bj7LwD+iTtN1LKVPPPI w2z966BzvUMx
J/j9z315tm9Z/27GLngPc2YLTarRwua9+9m8d38Bn5kQQohbkZJ5BkFRAMVG UnIyn3//A4YA
A5euXcN+7DiXL553JA02K+cvJLHku+8IDg1FHxBK/bq1eLpbd4KCgvLth1BQ ZouZhg0aMGz4
MKLmRAHQvXt3evd+HKvV/al8Z9KAxdHkb7VYMZvNble2WW0u65aWFv2f9r5S zhjzm84q7+66
vLv8Py7L9h85xOwXh7nM2/znLrfbn4iPZ8z/Pc7na9aQcvWquichhBDitmHH 8RtcUeCO8Ao0
ufc+5zIlNoa4PTsJNejx0/iBRsPb7y7iz8PHSLp8iWNHjxATE0viPYlUKBdO SGho3taG/Oj9
wey+y4HVaiUh/iw///Szc150dDS7du2iadOmbrfJbmmw52hpyKcjpLOloYDn TXxNTf0518lv
OkuZkBB+WrQwz3xFUVzWv5ByCbubK0smLljAywMH8vN7i0i4cIEjsbH8vmcP m/buzfdKFCGE
ELcXu4Lz6ohjx4875xsTz1E+OIgurdsQEhzCmh072frXHnYfPATAtcRzBIeW 4fKlFAx6PX5a
Lf56f/w0fvhp/FBQ3B7b/DR++FnzP15aLBZmzJhBTEwMkWMjqV27Nq9MeYU5 s+cwc/Yst9tk
j9OQmRBYzLmShsy+DZB9HWnWuqVFTf0518lvOsuV69d5dPRorl5P81imyeK+ BSbubAIjZs1E
7+9Prbvuolndegx+/HE6tmzJ5PcWeY1VCCHELU7J/OemgcCqKBjsfgQEBBAU FISfVkt8UhIW
s8XRNcBuJ/3aNS5cTMZPr0OrAZtdIcAQgJ9W50gabFbsVis2HAd2O+Cv80dv CECjcX+5psVs
YcLECfz1119079YdRaPw+uuvYTSZCC9f3u02OU5PwJUrVzh58hSpl1Od3Rly dmswZhid65Yq
NfVb8k7b7Ha0Nj9suc4H/XnoMJ1atOT73zcXqV6zxcKx46c4dvwU6zb/wdYv P2fyfEkahBDi
tqUl+9yEH2DLfJyDzQ6XUi+ydusW9HoD19Kvc+Z0PFcvXHIsN9s5l3aBFT// iiHAgD4omPq1
avLYQw+i1en44Jv/kWE0YjGbHdVoNDSuG0GX1i0J1uvRBQQ4rrDI4erVq5w6 dYq0tOvcfffd
nDx5EgWFwKBgAoOCOHXqlNunkyNpMLL0y2UYvv4aWz4dIMCRWNSoVr2Ae83H LMaCrZM5nZCY
yINNG7Et12mD9/+zjM/eepOM9DS27tkLQLP69Xnuid6MePU1r/UumxvFVz/9 xN7Dh7mUepmw
0FD69XyEXQcOqItVCCHErUnFj9wy5cpSvkkD52PzyTNcOHyIIL0/GsWG3t/A S2/N4o8DBzif
coGzx2OJPRnLmdrVCQwK5Hr6Nfr3e5rtBw9yPuUiCTHHORF3gqa1qhMWFkaQ zfUUhV6vZ+3a
tWzatCnfIRYATCYT9957r8u8HH0aoGzzFl6fXCjZ52RKi5r6c66TNf32Z58z Y+RIqlQIR6PR
cHf3HgAcPx3P8FdfZ/zzA5k5dix+Wi3Rx2JY8u1/3ZaT28Jly3nm8V5Mf/FF QoKCSExO5rft
Oxk3O6rU95UQQogbnN1O0uns+z9du5RMaICeNk2bYzAY2BJ9hI17/iQ6s4/D 1UuXCA69g9TU
VMxGM5dTr7Lxz90cyRwX6FrKJa4rkHIpxTFMda6zE2PGjCEqKkp1eGfPnnVO Z/dpuEkObrUf
7lGgdXJO//zHTn7+Y6fbbaJPnOT5qa8Vqt7tB6LZfiDaa1xCCCFuJ3b34ydo Mg+9ihU0WlDs
2X9xdML30/gRYAggJDgEm8aPU+fPYbFltgoodizGNK5euYqiKJjMGZxOSsyz PC0tjeCQ4DxX
Wuzfv5/9+ws3JIAzaTBdTi5UAUIIIYRwJ6v3Y25ZB3E72c0A2T0IFcWO1WbH YrFgs9mwW6yk
nEvAlHlJv91ux2g2c/XaVWw2GxnpRuznzmK65liuWBTncj+NH9fTr7vUPvuz 2QV+JgH1GwI5
koazf+4ucCFCCCGEKF6LvSx/r4DlvTr9VY/LFQWsNgWzxY7JomCxKbTv2wvI 2RFSCCGEELcl
u13BagOTxY7F6kgU3JGkQQghhLgNKQpYrApWu4LVqjinPZGkQQghhLiNWG0K VpuCLbM1wWRx
PFZDkgYhhBDiFqcojlEkLVbF0T3TrmC1g9lid9tVMz+SNAghhBC3MIvV0ZKQ lRwodgWTRcHm
5VSEO5I0CCGEELcgm03BbFPIed9Eq1XBbC38wEySNAghhBC3ELsdzFY7uRsS LFYFSxESBpCk
QQghhLglZF0N4e60g8lix+6DkZ8laRBCCCFKSGzSVa6mm7mnVniBtjt18Rpn rhoJDw0AwD8j
nTo1KjnHk8y6IkLJnS8odkwW8rQ6FJYkDUIIIUQJCQ8NYOX2E5isCm3qVlC9 XfI1Iy99vo2n
HqzLxaNHadWwBnVrVMKe2bpgV5S8I1YrdowW3I9kXUh+3lcRQgghhC9o/DTU CA9h2ZZ/2P7P
hQIdz602O99vOkjCmcTMx46hnu15mhccIzz6OmGAEkgaNBoNGo0m38c3e31C CCFEQdS8qyxW
i4UPf4vm9+hz3jcAtBoNOq3jkG22WDGabfkOyGS3K5itPs4WMqlKGrIOvO7+ FVVByvFFHJJE
CCGEKE16fy3VKpXBaLExb+0B1u0/o247nesh292RTAHMKkd3LIwCtTQoipLn X0EVdju1cfii
fCGEEKI41a9RHpPFitlqY9b3+/how99etzHotIQYdKSbrYCbLgw4Rnj09SmJ nHx6emLBggXU
rFkTvV5Po0aNWLZsWZ51cv7SL47TCJ7K8VSfoijMnz+fOnXqoNfrqV69OlFR US4JSNY277//
PtWrV0enk36kQghxO7mSbubUxWucuniN2KSrzn8x56/wz9nLLv+iz6Q4/p26 RPSpS+w/mUzM
ucsAVKsQisFfh8lqw2y188Gv0byyarfbOrOOQnqdFgCr2YLJYnVpaVCUgg8J XRg+O+otWrSI
8ePH06dPH/bu3QvA8OHDPW6jKIrzwF0SrQOe6nvnnXd4+eWXGTx4MIsWLWLu 3LlMnjwZnU7H
hAkTXNY9cOAAR48eJSQkpNhjFkIIcWNQgKQrGXy9MxaLxYbVbsditWG2OQZN slospGf2JTBa
bACYLFYyzJnTmQlC+8Z30aNlTe6vX4Vvth8nw2zFbLGx8o/jXDdZWfjcg9l1 Kjj7J2j9wIqj
T0NWPFkTZosPBmFQQfPYvIXKpdgTbF+8KP+VPLQAZB18IyIiiIuLIy4ujlq1 agEQFxdHRESE
y3q5D9oFSRrUxOGt/Pzqq1WrFqdOnSI2NpbatWtz+fJlypYtS61atYiLi3PZ 9ty5c1SpUsVr
vEIIIW4tCVcy2H7kHHsPHgfgCnqs6dedy69nmAC4arQ656WZHNNpaekuZXVv FcEve2IBSLmc
5pz//CP38uqzD2G3Z9998mhCCjP/t4/rKSmYTvzDkz3bMuTfnbEpChaL4ryC QnH+52Yacp3O
z3+93Nr37UXM+l8K1tLg6cB+5oyjI0f16tWd83JO+1JxtEokJCQAOJOcLKdP n86zriQMQghx
+8k68pzYH835Y45jQ9av/nSzFavZ4pxnzpw2mhx/TWYLVpsdq9WxfoBBz+7U c1gvXcFqsxME
WK1WwkKDeer+OthsriM7Zl05cUeAjrOZZduV7LtWlhSf9WnIShCykofc0ze6 atWqAZCYmOjS
wdJms5VyZEIIIW4EGuCfv08Te/Isen3e39w6vb9zWp9jOrfqjRtyf5/H0JSr gEHvj07rh07r
R1hoMMvejeTu2ndic3O2IcDf0achKxGxuRsBspj5rE9DZGQkkZGRTJw4kY8/ /hiNRsNLL73k
dbs77riDq1evEhcXR+3atX0VToHri4yMZOzYsUyaNIl3330XnU7Hjh07WLBg AevWrSv2uIQQ
Qtz4urSpT5c29Qu9fcz5K7z70yGsFgumRMcYDQa9PwEGfz6JepG6te4k9z2l NJldHoN0Gq7g
aLUAXNYzpZ3FEHJXoeNSq0AtDZ7GRxgzZgzz5s1j7969VKlShQcffJBevXp5 LXP69OmUKVOG
iIiIEhk/Ib/6IiMj+fjjj9m3bx+VKlXirrvu4t1332XcuHHFHpMQQojby9XM U+IBBn/uCA1i
6duOhMFdy0HWCQidf3brRXq6iaxDWOxv/Yle8zBHf34Sm+maz2K02xWsVscp kCyqOkIKIYQQ
ouiyWhrO7NxB+vUMalatwJQXelOjxp1uOiNmT528cJUPfztCYsJ5Dv2+jcF9 H2bo090B2P1l
AwD8tBqCyjagXuelaPWh6jtCKmCzK9jsjkTBrpAneen+XG9i1v8i954QQggh SpLxymWsZgv1
61Rl4etDqJkjYfBEr9UQqtM4O1PmFH7nPQQEh5Oe+jcxG5/HZvbc4mCzOW50 ZTTbSTfZMVmU
zNtq500YcpKkQQghhChB6SmpNKxXlagpzxBg0Ku6+sHPT4O/TovdX+92eVjl ajzQ501CylV1
Jg72HImDoiiZN7hSMpMEOxabgr2AwztI0iCEEEKUELtd4c4AO29O6I9Bry5h yNpO5+dH+Yrl
nfNytwj46ey06jbcJXEwpl/FbFUwmrNaEop2uYUkDUIIIUQJKR/oz5sT+jsu yVTZ919RwF/n
R50qYURUKcs9jWpTpWIZ3F07oDUE0arbcELL3Ul66t+c2joIc8ZVn8UvN08Q QgghSkh42eB8
b2mdH5tNoWJoME+0jEAB+j9QD5TsbhC2HFc32K+cQRtWnZbdXmDvrx9yLeVv ErYPpuqDS/DT
hxY5fmlpEEIIIUqAolDwhKEgfQ4UI7bLSViTjqM1BHHvwxO5q0570lMdiYPd S+dINaSlQQgh
hChmigLWzP4E6VcSSL+SoGo7q4c+CCarm2VaPcr1ZCzJAfhXqEuDdqNRtMEk nviVkxu6c9cD
S9CH3V2o5wCSNAghhBDFKmscBBRHwrD+g7YA6Pz9sFrs6PzzNvrr9H5YzXZ0 evcnBHQ6N/M1
AY6/Wh0aYzrW5HPowivSoO1oABJP/MrZHYMdicMdhUscJGkQQgghiklWwpB1 pUNWC0PHgR8V
qjw/TRp2JQQ/TZrL/MBgN4dzqwnLlXPoytal4UNTAdfEwb8QiYMkDUIIIUQx sdnd34UyvFpL
FJv6qxo0dsfttxW7JXNORRT7FQDslgw0muvYjClgM7ts52dLw5p63Jk4BIZW 4+T+z7ITh9CC
JQ6SNAghhBDFwJZPp0d7Vj8F62VspkQVBZnBZgSLBUW5jsZmRLGkO+ZbjSh2 k2O5zQb6YDTa
YHDcEBPFng7aEOzXzuIXCrVaPEtASEX+3jaLszsGU73jL2j0IaqfkyQNQggh hI/l18JQUhSM
aGx60Bnws6VhB5QL28F0hUCLo4XCZknDZjqLTq++tUGSBiGEEMKHcvZhKC4a AlC0gNWYq3Ij
+BkyT1OYwWpC0YHm+mnsFjPXjekcOvgLdpudsBq98Q+9u0DJjSQNQgghhI/Y PdzwKedsS/Jf
nDj03+ztbJbs9Sx2NJlXVCgWx0ANZosJAD+LI0lQzBmO7YwZzu0MlWtRr0Y5 FLsJjU2H3W7G
z8+Icv0UKFauXE0n+vAGZ8JQ8Z43VN0oK6ebOmnYvHkzzz77LPHx8S63+wTQ aDR55pUmT7EK
IYS4+SkK2D18v+cc9fm3VZO9lqfzUz+y0131WnB363+hnN2KYrmCAmi0YE+N A+D8pVSOHT+E
n1ZDWI3eVLrnjUKdPrmpk4aXX36ZRYsW0bt3b6DkE4WC1Jc71hvZjZZwCSHE jc45FoMX4dXb
UK/9OFLjdxW4Dq27sRmAq4l/ogsoi59/IDZdABhTACO2y2cASLycRsyZUwCO hKFFwVsYsqhK
GjTu7ooBqg8sxXUQio6OpkePHl7jKa76C1Jm7lhvFO72jSQMQgihnoLnFobc GjwYic02BgC7
ktVCkfndqyH7vhI57i+R83tZybX8z6X1XSvQarFfuwBA4sUL/B2fhFanoUKD F6jQeGSBYs1N
dUvDjXggMRqN+Pv7l3YYqtxMsQohhFDPbldU/3JPTbMSEui4HlKjUfBDg1Uh 846VGop8zYVW
7zZhuLPlm5Sp9USRj+U+uWGVRqPho48+ombNmuj1elq0aMGhQ4ecy7L+5myx sNlsTJkyhYoV
KxIUFETfvn25du2aS5nz58+nWrVq+PnlDdNdue5aRIqr/tz1FXQfGI1Ghg4d SlhYGGFhYYwY
MQKTyeSxfo1Gw4cffkjt2rUxGAw0btyYrVu3smzZMu6++24MBgP33HMP0dHR znLi4uLo1asX
oaGhBAQE0K1bNxITEz3um5zTauLM73kLIcStzq7ilAQ4WiIsNoWU69f58a+T aPwc37Nqb0h1
7Hwq3+45wYkr1zhyMYVD/8S6Ty/M6YDjlMTf8UkAzoTBF3x2l8uNGzfyxx9/ kJqaSu/evRky
ZAiQ3UKhKIpLhjNr1iz++usv9u3bR1JSEoGBgUyaNMmlzL1797J//37s9rx7 Nb9y1a5X1PqL
ug+mTZvGuXPnOH78ODExMcTFxTFjxgyv9W/YsIEtW7aQmppKv3796NGjB2vX rmXDhg2kpqbS
p08fhg4d6ly/V69ejBs3jgsXLpCUlESDBg0YN26c6n2oJs78nrcQQtzK1DQw KDgGecr6Gi8X
GkRM4hW+3X0Cm12jul3BaLHywa/RLFt/hG++/JGkxEvk/plst2SgmC85Eoa4 kwBUa/MWZX2U
MABoHpu3ULkUe4Ltixflv5KXPg0ajYbk5GTKly8PQHp6OmFhYVgsFufy3Ael mjVr8ssvv1C/
vuNcTFJSEs2aNXP5FXzu3DmqVKniMa6c5eZ8nN90cdVf0H1w1113sXnzZurW rQvAsWPH6Ny5
MwkJCfnW766O4OBgj/Xmlp6eTo0aNbh48WK++ybnPDVxFqR+IYS4FeS5UsJN ApH7vhMKkGay
8suBU+yKSaJpzXD6tqlH1iHW0VdBcdun4cDpC7y8YgdBNiNV0pJ4vFsbujx0 H+Do01CvZS9q
R9Tj3NGNHP37IJCZMNR+Ik/fCJeyXZbl/3y7P9ebmPW/qG9pyPo1mvNfTlkH DYCgoCCsVqvH
8s6ePUuDBg2cTeOVK1fmwoULLut4OmAXVXHUX5B9kJSURO3atZ2PIyIiSEpK 8lp/7jq81btr
1y7at29PSEgIGo2G4OBgLl26pPo5qYmzoK+9EELczNR0fLQr+Q/yVPOuslzN MPPH3+dYsvWo
1/qyfrbrtNmHbJPF6tLSYLMrnDi0kUPR+7Fa7VRr8xblavuuhSGLz05PFFSV KlVISEhwSULU
nga4FeqvVKkSJ0+edD6Oi4ujUqVKPq/nX//6FyNHjuTs2bPY7XauXr1aoI4w JRWnEELcLBQv
/RhsdsVjXwe9v5a77yqL0WJj48F4Fv16MM+pBpf6AH8/P/T5XHIJELvvR078 vR+AWm1nUS7C
9wkDlFDSULZsWf755x+XeSNGjGDYsGHExsZitVqJjo6mb9++t2T97vz73/9m /PjxXLx4kQsX
LhAZGUm/fv18Xk9GRgYBAQEEBARw8uTJPP0N3O2b0ohTCCFuBt76MagdQrp+ jfKYLFbMVhvr
D57hnbX7vG5j0GkJMei4mpbhMl+rC3VOF2fCAAW45NJdv4aCDGzUqlUr0tLS nNtMnjyZqKgo
OnfuzLlz56hfvz7Tpk1TG06BlHb97sycOZNRo0YREREBOA7Ob775ps/rWbp0 KePGjePJJ5+k
WrVqvPTSS3zzzTfO5e72TWnEKYQQNzpFgTPJ1zhz4TqWzJZpc47TsUazY9qc eXdLk9XmXGbQ
aalaLhStVgMGLdUqhGLw13E53YzZauf7vSe5kmHm9Sfb5HvZpV6nRcm8eM1o sqDROGKq9/Bi
rp3/k9CqnQkuV79Yb5SlqiOkEEIIcTtTcFxeeeriNVZuP4HFYiPDbgerDbNN wWK1Y7VYSLc6
DtlGiyNhMFmsZJgzp602zFY7bepW4okH6/DX8Qt8s/04GWYrZosNo8XGo/fU YOa/78/TSfGf
cynMWbMX67WrmE78w5M92/Jkj4fydGJ0dnTMub0PO0Le1MNICyGEECXBMVij Br3Bn3qVw/ht
6wGX5WnXrmdPG80AZGRkj2lz8Vr23Sg3nTnJpo276PZAIzLOOPqMZVgdrfk/ bbxAhWuJRA7J
e4rB4K8jZzdzRQGPnSGKgSQNQgghhAeKgktHhqO792FPvoDZbMVscRzG081W rGbHpeZmixVz
5rTR5PirmC1YbXbn1WU6nY6/91pREhOx2uzoM+cHGPQ82vn/XOrPygsC/LVo A3ScNWddyl/o
W0gUmiQNQgghRD4UxfXAnHjmPKHBQUTUugsAs9lC7MlzpJut6PT+zsTBk+qN GxLRpAGx0X8D
jkspdVo9Br0/i2ePpF6tu1zqVMDRFyKT0WQhPd3kvE9FSZKkQQghhMhHrtv5 0aJRLZo3rAVk
j9WgyXHPiNz9ArL7GthRFA1xSZf5cMNRrBYLpsRzGPSOexLVrl6J6ZOeo2p4 mNtEwN/PjyCd
hiv5B1ciJGkQQggh3HCXAOQcfkGTeX7A202m3C29mjmqboDBn5pVKxI1bQjB QQF4Kk2XedND
U2ZrRmncRlKSBiGEECKX3KclFEWhsMP/KXaF3KMWpCWeR6/3p2bVCrw16XmC gwx56szNP3Nw
J6PJ0dGyFM5OSNIghBBCeOJyGWMhaPw0Ls0WxiuXsZot1K9Tlalj+hEcZPBa htbPD71WQ6jO
kX2Yct3fR7Hbsdszr63w88+TpPiKJA1CCCFEDi73oVLUjfDoviD3LQHpKanU rlGZaZH9VSUM
Wfx1Wuz+eudjq+ka100WsFrR+QdgCAxE46cr1tYHSRqEEEKITDnvSKkmYVAU xTG0tOI4eaHY
7c4Okln3n7Dbsk9smE0W7gywM3FoHwL0WmxWq6NvhEbjrMuuAIodxW7Fpjia DGxmEzo/P6pW
rQxA2uUUzsefRW/wJyA4FMWmYExLd9ajybzaQqN19IPQ+Lk53Gu0qvdLFkka hBBCiFw83SbB
blew2e3YbDasFhs2mwmzRcFqUzAZjdhNFqwWG3Y3d/zNSM/g6e73kpqUis7/ Kn4Gf3T+AWi1
oNNqQKMDPx1knmqwWi3YbBDoZ+Oemo47Cmue6EC9WncSoA8CBcxpRsCYpy4/ nQ4/rRY/fw1a
P4ObRCJzxQIkD5I0CCGEELgOxeyJn58GPz8tOp0Wgx4UAtyUkfnXucBxySVk X4GhkPtUSOa1
Ewoo6F1Ob4Qqd1CpouPSzrZ3V8uxft7YCzImkJUAACAASURBVDqMdEGU2q2x hRBCiBtFnoPq
DShnZKUVoyQNQgghhPPXeAnfzOEmI0mDEEKI25rz1hI++Pl+q6cckjQIIYS4 vfmwrf9GPbXh
K5I0CCGEuG0VegyG25QkDUIIIYQv3AYJiFxyKYQQ4raVNdyyxvmfy4TaUlSs c2v8Rr81noUQ
Qgghip0kDUIIIYRQxXl6Ivb40dKMQwghhBA3OGlpEEIIIYQqkjQIIYQQQhVJ GoQQQgihiiQN
QgghhFBFkgYhhBBCqCJJgxBCCCFUkaRBCCGEEKpI0iCEEEIIVSRpEEIIIYQq kjQIIYQQQhVJ
GoQQQgihiiQNQgghhFBFkgYhhBBCqCJJgxBCCCFUkaRBCCGEEKpI0iCEEEII VSRpEEIIIYQq
kjQIIYQQQhVJGoQQQgihiiQNQgghhFBFkgYhhBBCqCJJgxBCCCFUkaRBCCGE EKpI0iCEEEII
VXSlHcDtZuvmDaUdghCilLXv0KW0QxCiUCRpKAWDhkWWdghCiFKiKAqxx4+W dhhCFIokDaVE
UZTSDkEIUcIkWRA3O+nTIIQQQghVJGkQQgghhCqSNAghhBBClWJLGurUa1Rc RYtisnnzZqpX
r45Go8mzzN08IYQQtxefJg2SKNzcXn75ZRYtWuTspCmJghBCiJwKdfWEu+Tg RMwRTsQcyXf9
/JYJx8G5W7durFu3Ls+BWqPRlNiVFtHR0fTo0cP5OL96SzImIYQQN45CX3Ip SYBvhYeHs3jx
YkaNGlVqMRiNRvz9/UutfiGEEDe2Yj89kTWvTr1GLsttNhvvzFvAfW3a0bjp vUSOncj169dd
tvt86Ze0bd+Junc3zre+lau+5qGOXanfsBm9ej/JP8dinMvj4xMYNmIkTZu3 omHje3hu0FAu
Xkx22X7Fyq/o0KkbDRo155Eej7Nnz17+9/0auj7cgwaNmvPY4//HsZjsMr3F nd9+8Gbx4sUs
XryYf/75J991bDYbU6ZMoWLFigQFBdG3b1+uXbvmqLNOHY4cyU7kli1b5pw+ fPgwderU8Vh/
VguHRqNxmVaznrfYstafP38+1apVw89P+t8KIcTNqNi/vbNaJHKfvvjwo085 fPgoP3z/Lbt3
biUgwMDct+e7bBsdfZgf1/yX48cO51v+jp27+HrVcvb/tYuuXTrzyivTncuG jRjJoOcG8ueu
bezeuZU6ERHMnBXluv2Onaxa8SX79u7isZ6PMnjoC/y+aQvLvlzCvr276PZw V16Z+mqB4i6M
sLAwPv74Y5555hksFovbdWbNmsVff/3Fvn37SEpKIjAwkEmTJgHQrVs3tm7d CsCZM2cYPXo0
6enpAGzZsoXu3bt7rD/rdIOiKB5PPeS3nqfYsuzdu5f9+/djt9s9xiKEEOLG VOikIavlIHcL
glqrv/0v06e/QuXKlQgODualieP5df1vLutMmfIyZcuW9VjOW2+8SuXKlQgM DGTI4Oc5cvRv
57J1P62hTZv7CAgIIDQ0lAnjx7J9x06X7We+9TpVqlQmMDCA558bSHp6Om++ PsM5b/Cg5zh8
ODvZURN3YU/dtG/fnk6dOvHqq6+6Xb5kyRIWLVpE1apVCQ0NZc6cOXz33XeA I2nYsmULACtX
rsRgMLB69WrAkTR069atUDGp5Sm2LPPmzSM8PLxY4xBCCFF8Sq1PQ2JiEt26 93SZl7s5vGKF
Cl7LKVOmjHM6MDAAm83mfHzgwEGi5s7j8JGjZGRkuK0j9/beylQTd1G8+eab PPDAAzz66KO0
bdvWZdnZs2dp0KCB27o7derE6NGjAVixYgWff/4577zzDgMHDmTXrl0sXbrU ZzG64ym2LFWq
VCnWGIQQQhSvUju5XLFiBbZv+9152uJEzBGPpyEKY9SYcQwY0I8df2zi+LHD HNz/Z5F7/Rd3
3Hq9nmXLljFs2DCXPgHgOOgmJCQ4Tw0oiuJs6g8JCaF27dqsXr2a0NBQevbs SVpaGmvXrqVO
nToEBwf7LEZ3PMUmhBDi1lAiSUNY2B3Exp10mde/37+ZOu01zpyJx2azcSwm hsixE31ar9Fo
wqA3YDAYSEg4y5SpM4pcppq4izpeRcOGDRkxYoSz5SDLiBEjGDZsGLGxsVit VqKjo+nbt69z
effu3Rk/fjxPP/20I9b+/Rk1apTX/gwFVbZs2TwdNr3FJoQQ4uZXIknD0CGD eaLPUy4H0+HD
htCyZQueGTiIRk1aMH78JLo97Nt7zM+dM5NZc+bSpFlLnhk4mNb3tSpymSUR N8Do0aNJTEx0
mTd58mTatm1L586dCQoK4umnn6ZPnz7O5d26dSMxMZGnnnoKgH79+pGQkODz /gwvv/wyrVq1
cjn94C02IYQQNz/NY/MWKpdiT7Bs7IjSjuW2sHXzBgYNi5TBkYS4DcUeP0pE 3YZyi2xx03l0
1ARi1v8iN6wSQgghhDqFvnpC3Hw8XeUhLR9CCCG8kaThNiKJgRBCiKKQ0xNC CCGEUEWSBiGE
EEKoIqcnSon0nhZCCHGzkaShFEjfAiGEEDcjSRpKWPsOXaSVQQghxE1J+jQI IYQQQhVJGoQQ
QgihiiQNQgghhFBFkgYhhBBCqCJJgxBCCCFUkaRBCCGEEKpI0iCEEEIIVSRp EEIIIYQqkjQI
IYQQQhVJGoQQQgihiiQNQgghhFBFkgYhhBBCqCJJgxBCCCFUkaRBCCGEEKpI 0iCEEEIIVSRp
EEIIIYQqkjQIIYQQQhVJGoQQQgihiiQNQgghhFBFkgYhhBBCqCJJgxBCCCFU kaRBCCGEEKpI
0iCEEEIIVSRpEEIIIYQqutIO4HYUUbdhaYdwy4s9frS0QxBCiFuOJA0lLKJu QzmglYA69Rpx
IuZIaYchhBC3FK9JQ41adUsiDiF8ZuvmDaUdghBC3JI8Jg01atVl985tJRXL beHBdp1KOwQh
hBCiUKQj5A2gTr1G8tcHf4UQQhQvzWPzFiqXYk+wbOyIPAulpcH3HmzXyaVP g5x7942c+3Hr
5g0MGhYp+1UIIXzk0VETiFn/i7Q0lDY5sPmG7EchhCh+kjSUsvya1t/77H8u jz/9ZntJhHPT
klMUQghR/HySNKxeu9Pl8Y9bY31R7G3B0y/kca/NKZEYbtYDbs64paVBCCGK n89aGqI++sJX
RZW4tu07l1qZWQe+yWvieG31AaL+s8nZylC76t0lljjc7G7WxEcIIW4mhRrc 6d3d6QSYrxJo
TCXIdBlwHOCiPvqCSSOe82V8t7ysX8hzHq/tMv+9z/5HXMIxFrw2GYBTp84A D6oq89PPPued
ee8yccJYhg4Z5NN4b1TS0iCEEMWvUC0NY1sHMaJdZQZ2bcC/et4PQFzCMWfC 4DjAeZZ2/ToL
Fy3mX089zUMdH+bRnr2ZOu019u0/4FynOFoAbjSefiFnJQwAp0+ddvz9piOn v+mY7zZ2u50V
K79m2tTJrFz1NXa73XfB3sCkpUEIIYqfz05P5GxhyDrAmbb2w7S1n9v1X331 Taw2G4sWzmPT
xl9YufwLunTuyOdLl/kqpJtCfr+QRw95wuXx8g+yE4iOU47lmzhs2bqNcmXL 8MyA/pQJC2Pr
tj9clpvNZiZNnkqTZvfS5oH2fPrZ5wBcvnKFVq3bcuXKVZf1L1+5Quv723Hl ylXi4xMYNmIk
TZu3omHje3hu0FAuXkx2rlunXiNWrvqahzp2pX7DZvTq/ST/HItxLrdarcyc HUWr1m1p0bIN
ny/90rnMZrPxzrwF3NemHY2b3kvk2Ilcv37da9ze9qMQQgjf8UnSkNXakOWd Gc85pztOOeY2
cdi3fz8vjhhKlSqV8fPzo0yZMnTs+BDvL5oPZLcytG3f2aXF4dy580yaMo2u 3XrSsXN3xk+Y
REpKinN52/ad+X7Njzz5VH86dOrGoMHDiY2Ncy63WCzMmj2XLg8/Sq/Hn2Tl qq9d4lJT/ldf
f0uf/+tLu4e6qCrTk/x+Iceu7EDsyo7EruxA3MoOjr+rOmC1Ks79GreyQ57t Vqz4igED+gMw
YEB/li9f5bL83YXvk5KSypZNv/HTj9+ze/ceAMqEhdG9W1e+Wf2ty/pfffUN vR7rSVjYHQwb
MZJBzw3kz13b2L1zK3UiIpg5K8pl/R07d/H1quXs/2sXXbt05pVXpjuXLVy0 mJhjx/nh+2/Z
tHE9Z8+ecy778KNPOXz4KD98/y27d24lIMDA3Lfne43b234UQgjhOz4Z3On6 730BDaBk/g8a
DSgKdJ3u+KW54c16BHX6yrnNmMgJlCtXlv/r05s6dSIIDAzMU27b9p35Y+tG l3nPDBzMuLGj
adSwARarlSVLviA1NZXXXp3m3KZjh/aMHv0id4SGsuqr1ezYsZNPP/kAgA8/ +oSTJ0/zypSX
UBSYNXsuO3ftdtajpvwuXToxLnIUYWFhqsrMKffgTu788+VDPDLph8xHmTuS zJ2KAkrWXoZ1
Ub2o/9wWAOLjE/i/f/Vj25YNGAwGTCYT7R7qwnffrqJq1arO+lcu/4IaNaoD cOrUabo8/Cgn
Yo4QGxvH4CEj2LhhHVqtFpvNRucuj7ByxZfceWeVPHFmZBhp36ELe3Y7WjPq 1GvE3j+3U6ZM
Gefy5i3u49jfhzL3XSeWfbmE2rVq5SnroY5d+XzJJ0TUdixLTr5Ez15PsGvH Vq9x5yaDOwkh
hG9lDe5U5LtcXv713x4PcEraP4BC53FrWBfVizLdHb/CZ818nVVffcP8d9/j zJl4ypQJo8ND
7Xn++WcJCQ7Ot77/fLnEOW0wGBg+bAj/9y/XloyJE8cRdscdAPTr+xRffPkf 57L1v23kvUXz
nQe2yDEj2blrd4HKHz1yhDNhUFOmJ+5GhKw/cAtr3myXmX2BRtGgZCZkAI+N fweAHxZMpOnQ
7KRuxcqvSElJoVGTFi7lrVj5NZNengBAcnIyVave5VxWrVpV53RERG1q1a7J bxt+p3u3rvy8
7ldatGjuTBgOHDhI1Nx5HD5ylIyMDAA0Gg05Ze0DgMDAAGw2m/PxxYvJ1Khe 3e1+SExMolv3
ni7zcpbtKW6QkTWFEKIkFDlpKNPta9a82VPVAa7iY6ud24WEhDB0yCCGDhmE oiicPn2Glau+
Zvr011kwf26+9R05cpQPPvyEYzHHMRqNQN4DV1bCABAQYHA5cF26lMKdVbJ/ NVepUrnA5Zcv
X97lsbcyPcnvQJczGcjpr8VtAfguagItRmb3VzCZTHz3vzVs/v1XZ6sCQEJC An2e7MfYyFEY
DAbCw8NJSDjr/MWekHDWpfznBz7Lhx99QvduXfniy//w5usznMtGjRnHlMkv 0b5dW0JCQkhP
T6fZPfepfq4VKoRzJj6eWjVr5llWsWIFvv1mJZUqVXK7rbe4JWEQQoji55M+ DRUfW03FXqup
+NhqKvT6hoq9VlOh12rMFkerw3dRE1wShtw0Gg01a9Zg/LhIDhw86LGu6TPe oE+f3nz/v2/Y
tmUD63/5ESWrdUOF8uXLce78eefj84mJRS7fW5meqB0RcsCLjvEabFaFb2aO d0kYANb+tI6m
TRq7JAwAVatWpUnjRvz08y8APN6rJzNnR5GamkpKSgozZ7mOA9Gu3YOkpKay YsUqQoKDadiw
gXOZ0WjCoDdgMBhISDjLlKkzKIg+T/Tm9TdmkpiYxLVr15g9523nsv79/s3U aa9x5kw8NpuN
YzExRI6d6FzuLW7p0yCEEMWvWEaEnPjGF0D2Ae7O//s2zzajxozn902bSUlN xW63c/FiMp9+
9jkNG2QfpEJDQzl9xvXyTZPJhF7vj0Gv5/z5ROZEzStQrA937cx773/IlStX uHz5Move+6DI
5Xsr0xO1I0LWqFkDgPsit3NfZN4hpZcvX0n//n3dlvN0/74sX74ScJw6KVum DO0e6sKjPXvT
qlVLl3U1Gg0Dnx3AG2/NzjPGw9w5M5k1Zy5NmrXkmYGDaX1fK3VPMtOY0S9S JyKCno89QYdO
D1O5cnarwvBhQ2jZsgXPDBxEoyYtGD9+Et0e7uJc7i1uaWkQQoji55OOkKvX 7nQZp+G9ZZsY
/Wz+YwkA7N9/kNX//Y79+w+Snp5OuXJlua9VS4YPG0y5cuUAWL5iFV8uW0FG RoazU+H27TtZ
9P4HJCYmUbFiBfr3+zfz5i90LnfXeTLnPLPZzDvz3mXj75sJDgqib99/8cGH nxSpfG9l5pTf
XS4nr4nLM2AW4Bzg6dNvtjP0KXWDO92O5C6XQghRfLI6QhYqaXA3IiRkD/D0 49ZYHmsfUaxP
4Gal5uoJyDsipCQN6knSIIQQvlWkqyfGtg4CggBHh7/cLQ1CPU+9/nOOCCk8 k6snhBCi+BXL
iJBCPbUjQkorg2eSMAghRPErlhEh5dSEetLr3zdkPwohRPHzWUuDKJwTMUec Bzz5W/i/0tIg
hBDFzydXTwj11HaEFIUnHSGFEMK3sjpCSkuDEEIIIVTxePWETufPg+06lVQs twVpZSh+7Tt0
4UTMESLqNiztUIQQ4oah0WiK3ALr9ZJLOciJm5W8d4UQwrfk9IQQQghxi9u6 eYNPypGkQQgh
hBCqSNIghBBCCFUkaRBCCCGEKpI0CCGEEEIVSRqEEEIIoYokDUIIIYRQpVSS hpv15kKe4t69
ew/tHursdp2b9fmK4nUrvGd8EeeN8Fy9xeBp+Y0Qf2F99PGnvPDimNIO47Yy 4sXRfPTxZ6Ud
RqFJS4OPRM19hxnTX3GOtlXcXyQ38xeVcCjp90xh3IgxCd/IyDCy9ItlTJn8 UmmHcsPz5edg
yqSXWPrFlxiNRp+VWZJ8kjR8+tnn3N2gKZ9+9rkvirspHYs5TscODzkf5zdU p6/efLfyzZhu
lwNVSb9nCiNnTDdbq8LN8r1UWi1Nv/66nlatWlK9erVSqf9GoPZ5+vL7tkaN 6rS45x7W/7bR
Z2WWpCInDXa7nRUrv2ba1MmsXPU1drvdF3HddEwmEzqd11G5hXCS90zxke8l 7zZu2kzXLp2d
j8eOe4nlK1ZhtVoBsFqt/Gf5SsaOk5YIX3vkkW78/vvm0g6jUIqcNGzZuo1y ZcvwzID+lAkL
Y+u2P1yWm81mJk2eSpNm99LmgfbOrP/ylSu0at2WK1euuqx/+coVWt/fjitX rhIfn8CwESNp
2rwVDRvfw3ODhnLxYrJz3Tr1GrFy1dc81LEr9Rs2o1fvJ/nnWIxzudVqZebs KFq1bkuLlm34
fOmXzmU2m4135i3gvjbtaNz0XiLHTuT69ete43YnK1utU6+Ry7Sa9dTEUqde Iz5f+iVt23ei
7t2N85TvbT8YjUYmvjzF5bnkjs9Txu1pP7qLzdvz8fS6FnYf5ebtvZObt33o qf5OXbpz/PgJ
57r/+36Nczom5jidunR3W1/u51nc75mc1MacO7bccQAe95ua5+KtjIK+9uD5 e8nbZ7sgn/0s
H3+yhNb3t6NJs3uZPGUaZrM5z/POb1/k3if57SeTycQrU1+leYvWNG/Rmukz Xs9Tj9rXAiD6
0GHuad7M+fjtubPQarUMGfoCAEOGvoBOp+PtubO8Pv+CKsp3e7/+z7L2p59d yjt/PpEHHuzA
tWvX8tS1Zes2HunxOPUbNuOhjl356uvVzjqy/ub+Pi3u79t7mjfj4KFDhdp3 pa3IScOKFV8x
YEB/AAYM6M/y5atclr+78H1SUlLZsuk3fvrxe3bv3gNAmbAwunfryjerv3VZ /6uvvqHXYz0J
C7uDYSNGMui5gfy5axu7d26lTkQEM2dFuay/Y+cuvl61nP1/7aJrl8688sp0 57KFixYTc+w4
P3z/LZs2rufs2XPOZR9+9CmHDx/lh++/ZffOrQQEGJj79nyvcbuT1XR1IuaI x2as/NbzFgtA
dPRhflzzX44fO+y2bE/7YcG775GWlsbWzRv46cfv2bNnb74xuuNpP7qLzdvz 8fS6FmUf5aTm
vZObp33oqf527dryZ+Y+PXfuPK+/MYuMDMf5yj/37KV9u7Z56irt90xBY/YU r6f95osyCvra
g+fvJW+f7YJ89rPs2bOXn9euYdPG9Vy4eJGFi973ug243yf57af5CxZx4cIF Nv62jg3rfyY+
PoF3F7rWo/a1ALiYnEzFihVc5mk0GmerjN1uR6PR5Lt91sE2v3+eFOW7/cUX hvP+4o9cWo/e
e/9DBg58htDQ0Dx1TXxpCpFjRnHowB5WrVjGoUOOz4On92Nxf99WqVLZ44+Y G1mRkob4+AQO
RR+mx6OOXyU9ezzCoejDJCQkONdZ88Napk2dTLly5ShfvhzTpk52Lntu4DOs WPEVNpsNcPyi
+Oqr1Tz/3LMArPtpDW3a3EdAQAChoaFMGD+W7Tt2usTw1huvUrlyJQIDAxky +HmOHP3buex/
36/h1VenUqVKZcLC7mD6tCnOZau//S/Tp79C5cqVCA4O5qWJ4/l1/W+q4vY1 b7EATJnyMmXL
ls23DE/7Ye1P65g6ZRJly5alfPlyTH0l73PxdODytB/dxebt+ah5XXNTs49y Kkwdnvahp/rb
t32QP/90fDH88ONP6PV61v3yKwC7/9zjNmkoqqK+Z3wZs6f95osyCvrae/te 8vbZLsxnf/q0
KZQvX47w8PJMnzaFNT+sLfA+8ObHtT8zbepkZz0zZrySp56CvBYajQZFyX48 8aUpmEwmlnz2
EQBLPvsIk8nExJemuN0+62Cb3z9PivLd3q7dgwQFBvLTz78AcPr0GbZu28az zzzttq6AAAMX
LlwgOfkSd95ZhVkzX/cYGxT/962iKHjIx25oRTqhumLlV6SkpNCoSYtc879m 0ssTAEhOTqZq
1bucy6pVq+qcjoioTa3aNfltw+9079aVn9f9SosWzbnzzioAHDhwkKi58zh8 5CgZGRkAeTLf
MmXKOKcDAwOcCQjAxYvJ1Khe3W3siYlJdOve02VezrI9xe1r3mIBqFjB9RdB bp72Q3JysnOf
Ai7PSw1P+9FdbN6ej5rXNTc1+yinwtThaR96qv/++1vz+pszAfjhx7XMmf0W ny1ZSp8nHufA
gYPMnTPTY72FUdT3jC9j9rTffFFGQV97b99L3j7bhfns51y/erVqxfIr8tKl Sy6x1KheneRk
13oK8lqEh4dz8eJFZ0fIhe++47Lc39+fgc8OYOCzA3wRvouifre/+MJw3n5n Pj0e7c7CRe8z
bOhgAgMD3Na1+P2FvL/4Q957/0MCAgzMmP6KS18Od4r7+zYxMYkKXuq4URU6 aTCZTHz3vzVs
/v1XqlbNfiMnJCTQ58l+jI0chcFgIDw8nISEs9SoUT1z+VmXcp4f+CwffvQJ 3bt15Ysv/8Ob
r89wLhs1ZhxTJr9E+3ZtCQkJIT09nWb33Kc6xgoVwjkTH0+tmjXzLKtYsQLf frOSSpUqud3W
W9y+5C2Woipfvjznzp13fuEU9Ll42o/ueHs+hXldC7qPivreKUj9QUFBVKtW lXXrfiU4OJhO
HR9i0XuL+X3TFmrUqE5gYGCh6y1MPGqURsyFVZDnquZ7ydtnuzCf/Zzrx8cn UKFCuHOZVqsl
I8PoPKhdvnzZa3nulC9f3qWeM/HxhIeHe9kqf02aNGL//gNur55Qc7WAt1MQ nsoo6uezc+eO
LHj3PeYvWMi+fQeI8pDkNm3SmE8+Wgw4+jdMnjLNa9JQFGq+b/cfOEjTJk2K LYbiVOjTE2t/
WkfTJo1dPpgAVatWpUnjRs6mo8d79WTm7ChSU1NJSUlh5qw5Luu3a/cgKamp rFixipDgYBo2
bOBcZjSaMOgNGAwGEhLOMmXqDAqizxO9ef2NmSQmJnHt2jVmz3nbuax/v38z ddprnDkTj81m
41hMDJFjJzqXe4u7sMLC7iA27qTLPG+xFFXPHo8wa/bc7OcyO++5fU9fAJ72 ozveno+319UX
+6io752CPqf27doxc3YUj/dy/CLu9VgPXn/jLZ+cmiiu90xBY3YXR0EVpoyC PFc130vePtuF
+ezPnDWHlJQULl1K4a2Zc5z7FKBhg/p8tmQpGRlGkpKSmDbDtXnc3T5xN69H j+7MnB3lrOfN
t2bzWM9HvcaWn84dO/Dbxt8LvX1RTk8U9fOp0Wh48cVhfPTxZ4x8cTj+/v75 rjt+wsvEnTyJ
xWLBbrdjtWa3CvjiPZ2bmu/bX35ZT6dOHXxab0kpdNKwfPlK+vfv63bZ0/37 snz5SgAix4yk
bJkytHuoC4/27E2rVi1d1tVoNAx8dgBvvDWboUMGuSybO2cms+bMpUmzljwz cDCt72tVoBjH
jH6ROhER9HzsCTp0epjKlbN/qQwfNoSWLVvwzMBBNGrSgvHjJ9Ht4S7O5d7i LqyhQwbzRJ+n
XA7S3mIpqnFjxxAUFOh8Li3uaV6gS/087Ud3vD0fb6+rL/ZRUd87BX1O7ds9 yMWLyTz6SDcA
evZ8lMTEJNr5IGkorvdMQWN2F4cvnos3BXmuar6XvH22C/PZb9nyXh7p8Tgd OnWlfPlyjBk9
0rls5luv89uGjTRvcR9PPtWfNq1df1G72yfu5k0YF0n5cuXo2Lk7nbp0p3Kl yowbO9prbPnp
1u1h9uzZS3x8gveVfcwXn0+tn5aaNWvQp09vj+t16PAQw4aPpHHTe5n79nzm v5N9EPfFezo3
b9+3p0+f4a99+3i4a/G1dhQnzWPzFiqXYk+wbOyIPAsj6jYk9vjRUghLFKfY uJMMHjKCzb//
WtqhCCFK0Ucff8qhQ4f5YPHC0g6lwIaNGMljPXsUqbWlJOT+vn3hxTE0a9aU EcOHlGgcWzdv
YNCwyEIPVPXoqAnErP+laB0hxc1j5qwoRo18AYvFQlTU23Tv1rW0QxJClLIR w4eWdggFZrfb
+Wb1f4mPT3BeIXOj8fR9++EHi0oxsqKTpOE2UaNGdR7u3oOMDCNdu3YmcsxI 7xsJIcQNpl79
JlS96y4WLZqPn9+NefukW/n7VpKG28SAp/sx4Ol+pR2GEEIUyc1w351b+fv2 xkzThBBCCHHD
kaRBCCGEEKpI0iCEEEIIVSRpEEIIWRhHMQAAIABJREFUIYQqkjQIIYQQQhWf Xj2xdfMGXxYn
hBDiJvb80DEyQOAtxueXXD4/dIyvixRCCHGTWfrpzT2IkXBPTk+IAvF2e+nb lewXIbLJ5+HW
VWyDO0mT1K0n5+kneX2zyX4RIpucpr61SUuDEEIIIVSRYaSFEELcNCLqNizt EEqFRqO5IYbQ
lqRBCCHETeV2Ow14I53ykdMTQgghhFBFkgYhhBBCqHLLJg116jUq7RCE8Al5 LwshbhS3VNIg
X65CCCFE8SmVpOHTzz7n7gZN+fSzz/Msc3fgV5sM+LJnqSQghRMTc5zBQ0bQ tHkrmjZvxeAh
I4iJOV7aYZXa63n/gw9hMpncLrt69Ro9ej7BlStXSzgqIYQonBJPGux2OytW fs20qZNZuepr
7HZ7SYcgisnp02d4ZuAgunTpxI4/NrHjj0106dKJZwYO4vTpM6UdXqm4994W fPvf/7ldtnLV
1zRr1pSwsDtKOCohhCicEk8atmzdRrmyZXhmQH/KhIWxddsfzmVZvwbr1Gvk Mp17Xtbjz5d+
Sdv2nah7d2OXdbN8/MkSWt/fjibN7mXylGmYzeY8deXkrU6bzcY78xZwX5t2 NG56L5FjJ3L9
+vXC74xbzKL3FjN40HP06/sUISEhhISE0K/vUwwe9ByL3v/AuV6deo08vjbe 9rO71z4+PoFh
I0bStHkrGja+h+cGDeXixWTn+ll/c76eJpOJV6a+SvMWrWneojXTZ7ye5z2S u56CemH4UD5f
+mWe5NhisbB8xUqGDn3eY+y5eWuJk/eoEL7lrZXydmuVLvGkYcWKrxgwoD8A Awb0Z/nyVc5l
WacXTsQccZnOPS9LdPRhflzzX44fO+y2rj179vLz2jVs2rieCxcvsnDR+6pi zK/ODz/6lMOH
j/LD99+ye+dWAgIMzH17vqoybwfbd+zk8V4988x/vFdPduzY6TLP02ujZj/n fu2HjRjJoOcG
8ueubezeuZU6ERHMnBUF5P96zl+wiAsXLrDxt3VsWP8z8fEJvLvwfY/1FFSj Rg2pVq0qv/76
m8v8H9f+TLOmTahVs6bH2AtK3qNCiOJUoklDfHwCh6IP0+PR7gD07PEIh6IP k5CQUKjypkx5
mbJly+a7fPq0KZQvX47w8PJMnzaFNT+sLVQ9WVZ/+1+mT3+FypUrERwczEsT x/Pr+t+8b3ib
SE29THh4eJ754eHhpKSkuszz9Nqo2c+5X/t1P62hTZv7CAgIIDQ0lAnjx7I9 V6KS249rf2ba
1MnOOGbMeCXPe8Tbe0yNF4YPy9N/Z8mSLxg2bEihY8+PvEeF8MxTnzrhXYmO CLli5VekpKTQ
qEmLXPO/ZtLLEwpcXsUKFTwur1r1Lud09WrV8m3yVSsxMYlu3V1/Scvd3LKV KRNGcnIylSpV
cpmfnJxMuXKuB15Pr42a/Zz7tT9w4CBRc+dx+MhRMjIy3G6T26VLl6hWrarz cY3q1UlOdn2P
eHuPqdG6dSv8tFp27fqTNm3uY9u27ZQpG0azpk0KHXt+5D0qRP5y9qn7fOmX DB70HH5+t9RF
hMWuxPaWyWTiu/+tYfPvvzqbiU/EHGHz77/y3+++z7eHeVEkJJx1TsfHJ1Ch QvavYK1WS0aG
0fn48uXLXsurWLEC27f97hJ/YZutb0UP3N/GbWvOmh/Wcn+b1i7zPL02hdnP o8aMY8CAfuz4
YxPHjx3m4P4/URTF4zbly5d3ieNMfLzblhJfeGH4UD75bAkAny1ZyvChQwoV u7f3rbxHhcif
pz51AGazmUmTp9Kk2b20eaB9ntYIb8tvByWWNKz9aR1NmzSmatWqLvOrVq1K k8aN+OnnXwAI
C7uD2LiTLuu4m6fGzFlzSElJ4dKlFN6aOcflfHvDBvX5bMlSMjKMJCUlMW3G 617r7N/v30yd
9hpnzsRjs9k4FhND5NiJBY7rVjV69It8tuQLVn31DWlpaaSlpbHqq2/4bMkX jB79osu6nl6b
wuxno9GEQW/AYDCQkHCWKVNnuCx393r26NGdmbOjnHG8+dZsHuv5aBH3wv+3 d9/hUVQNG4ef
lRIiLSQhCdKrkAChJPTekSbYQEWQLl3wVarYUIqiIIhIE15Fmp+AHYIiYhBB RDoBQgkgkBBE
eiDZ7w/erCmb7Alsyia/+7q4yM6ZU2Zmk3129uyMfS1aNNPZs+e0Zs06RUdH q0mTRsZjT8jR
85bnKJCy1ObUSdJ7M2crOvqifvpxg77+co22bduepvKcIMNCwyefLNOTT3a3 W/bUk931ySfL
JEn9+/VV126PJ5qRam+ZiaCg2mrfoYuatWgtLy9PDR82xFY2+Y1XtSFko2rU qqNHH39S9erW
SVTXXp8DB/RTUFAt9ezVRwHVamnUqJfUtk2rNI0pOytXtqyWLlmoDSEbVb9h M9Vv2EwbQjZq
6ZKFKlumTKJ1Uzs2d7Ofp02ZrDenTFO1wCD17NVXdesEJyq3dzxHPz9CXp6e at6ynVq0aic/
Xz89P3LYve8IOywWiwb276uXxk5Qv3590jT2hBw9b3mOAvaZzKlbu+4rTRg/ Rp6envLy8tSE
8WMSteGoPCewdHpnpvXC0SNaOnJQssLyFf3TdDexzZtC9Gz/4ZJy3l3IcoLN m0LUZ8AIWa3W
ezq+FSoFZIlbvDqLs/YLkB3E/z4s+mimnu0/3Om/E2l9XYo3ZerbWrBwcbLl /fv1sc2pe7BK
de3f+4dy5col6c5XmB+sUt3298pReXqJ36f30s+9tvHQ0NEKW/9d9rqMNAAA SZnOqfP29k40
zynhzyblOQGhAQCQrZnOqevSuaMmvzVVFy9eVHR0tCa/OSXR+o7KpeQXe3L0 2NUQGpDhstNH
EwCyPtM5dSOGD1ERDw81btpKD3V8WMHBQYnWdVSeE2TodRoAAMhoX/zfyhTL WrRophYtmkmS
3NzcNHXKZE2dMtlW3j/BxGVH5VLyN0WOHrsaQgMAIFsz+UjA1V/MMwqhAQCQ rREInCfdQsPm
TSHp1TSyAI6vfewXANlZuoQGrnWfvXF87WO/AMju0iU0OLrmPwAge1s8f1Zm DwHpgK9cAgAA
I4QGAABghG9PAABcChOOMw+hAQDgMphwnLkIDQAAl8E1FzIXcxoAAIARQgMA ADBCaAAAAEYI
DQAAwAgTIQEALqN8Rf/MHkKmsFgsWWISKKEBAOBSjh7en9lDyFBZ6boUfDwB AACMEBoAAIAR
QgMAADBCaAAAAEYIDQAAwAihAQAAGCE0AABgx7z5H2f2ELIcQgMAACmIv5gU AeIOLu4EAMj2
UnrRH9i/t1H9gf17q3xFfx09vF/z5n9sXC+7ITQAAHKEadOm2V1ueoXJhOvF B4ichtAAAMgx
Unqhj42N1c9btupo+DHlyZNHgdWrJiqPP7sQf8bixRdflGR+piK7IDQAAHK8 Hb/v0o0bNzVi
+DDdn7+AVq5clWyd8hX9bcEh4VmLnHTGgdAAAMgR4s8OJBR/puDwkXA90/Np FSxYSOfPnVZQ
rUAdOnQo1fZyUliIR2gAAOQIqc1puH79uoqXKKmzZ04qNjZW+fO7Z/DoXAOh AQCQY6R0dsDd
3V2XL1/WrVsxkqTLl69k5LBcBtdpAADkeBUrlNO6det0OzZON27cUOjWbSmu 6+aWV+fPn0+2
POnXOh09dkWcaQAA5AipzWkIql1Dv+3YpaX//Uy5c+dSzRrVdeLkKbvtBFav plmzZikmJibZ
tyeSfhXT0WNXQ2gAAGR78Rdnsufo4f3KlSuXGtQLUpfOnVSgYGHFxcWqcePG ierHq1mjmpo3
b64int667777bCEgaYBw9NgVERoAANmeyRUhrVarzp87o/PnztiW/X3xgu3n hGcI/r4Ypb8v
RiVrL+lZBEePXQ2hAQCQ7Tk60wAzhAYAQI5AOLh3fHsCAAAYITQAAAAjhAYA AGCE0AAAAIww
ERIA4FI2bwrJ7CHkWIQGAIDLsFgsmT2EHI3QAABwGUfC9mX2EHI05jQAAAAj hAYAAGCE0AAA
AIwQGgAAgBEmQgIAXEZKN53K7iwWS5aYBEpoAAC4lJx246msdF0KPp4AAABG CA0AAMAIoQEA
ABghNAAAACOEBgAAYITQAAAAjBAaAACAEUIDAAAwwsWdAADZwrz5H9t+zp07 t3x9iqphg7oq
UsQj8waVzRAaAADZxrRp0yRJN27c0JYtW7R5y6967JEuiom5mckjyx4IDQCA bCX+MtNlShXT
xo0h8vErrpPHj2jH73/owMHDun37tkqXKqmmTRooT548ku6cpWjUsJ7+3L1P V69eVeHChdS4
YT1dvnJFf/yxR/9cvqwiRTzUonljeRYpIkmKjY3Vll+2KfzYcUlShfJl1aB+ Hd26fVsrVn6h
7o93k5tbXtu4bty8qZWrvtATj3VTnjy5Ux1PVkVoAABkOzExMdqz94C8PD2V N6+b/ti1R5GR
F9S/37Py8vbVV199pd17Dyq4dqDi4uIkSX9fuqInn3xCxYqVUGhoqL5b/4NK ly6pJ554RMWK
ldQvoaHa+uvv6vpwB8XcvKnftu/UtevXNGTwc8pfoKCWL1+u/QcOq3q1Kipf rozORV5UmVIP
KC4uVpJ08GCYKlWsoAerVNX/fb7a4XiyIiZCAgCyjRdffFHz5n+sxUuW6cCB Q3rkkUcUc/OG
DoUdVvv27eTt7aPIc6dV1b+SDhw4KC9vX1vdRx99VH6+foo8d1qlShRTTEyM evR4Sr5+Dyjy
/BmVLvmAzpw5o6I+D0iSjhw9pofaP6TChQsrOuqs6gTV1N59++Xp5aOqAVUU GhqqAgULSZKs
Vqv27z+khg0b6srlf3TwUJjD8WRFnGkAAGQb06ZNk9VqVXR0tFatWqXLV67q 7NlTunLlquYv
WJRoXYvFovwFCiry/F+SpPvvv1/Hww8pNjZWuXJZJEkFChRItCwuLk5ubvkk 3Zk3UaJkKZ09
c1KxsbdVoMD9unLlsgoULCwPj8IqXKigTp85p4L58+po+HH5+fmqRIlSOn3q uNF4siJCAwAg
Wwk/ckCS1KRRfa36/Av17vW08ue/X8OHj5CHR+rfpIiNjXW4zGK5Eyjy5cun y5cv69atGEnS
pX/+kbv7/cqVK5ckqWpAFf3yyxY90u1h7dm7X23atNKNG9d0+/Yt4/FkNYQG AEC25OaWR36+
RXXq9FkF+FfW559/ruCgQN3v7q6Lf/+tnTt3q1XLpnfdfvnyZbRu3To1qB+s WzExCt36mypV
qmALGSVKPKBff9uhsMNHlTdPHlWqVFlR/zuL4F/lQaePJyMQGgAA2VblByvp t9+26aknu2vH
jt/11dfr9c8//8jDo7DqBNeWr18JnTt76q7arhNUSzt27tZ/P1kuq9WqChXK qUOHDrpy+ZKk
O2ckAvwr65tvvtUj3R6WNS5ON2/ekCTVCKymsMPhTh1PRiA0AACyhYH9eydb VqLEA6pUqZIK
e3jqwUrlVa9eXRUqXES5cuXWrZgYXYyOTLGuo2W5c+dW/bq11blTR+UvcGfC 45XL/yj6wnnb
Ov5VHlS9evVU1KeY/jp90rbcYrGkOp6sitAAAMgWEl4RMqn4F/uL0VG6GB1l d5346zukZZnV
atX5c2ekc2dS7PufSxf1z6WLdstSG09WRGgAAGQLA/v3VvmK/imW2wsASBtC AwAg2yAYpC8u
7gQAAIwQGgAAgBFCAwAAMEJoAAAARpgICQBwKZs3hWT2EHIsQgMAwGXE3/cB mYPQAABwGUfC
9mX2EHI05jQAAAAjhAYAAGCE0AAAAIwQGgAAgBFCAwAAMEJoAAAARggNAADA CKEBAAAYITQA
AAAjhAYAAGCE0AAAAIwQGgAAgBFCAwAAMEJoAAAARggNAADACKEBAAAYITQA AAAjhAYAAGCE
0AAAAIwQGgAAgBFCAwAAMEJoAAAARggNAADACKEBAAAYITQAAAAjhAYAAGCE 0AAAAIwQGgAA
gBFCAwAAMEJoAAAARggNAADACKEBAAAYITQAAAAjhAYAAGCE0AAAAIwQGgAA gBFCAwAAMEJo
AAAARggNAADACKEBAAAYITQAAAAjhAYAAGCE0AAAAIwQGgAAgBFCAwAAMEJo AAAARggNAADA
CKEBAAAYITQAAAAjhAYAAGCE0AAAAIwQGgAAgBFCAwAAMEJoAAAARggNAADA CKEBAAAYITQA
AAAjhAYAAGCE0AAAAIwQGgAAgBFCAwAAMEJoAAAARggNAADACKEBAAAYITQA AAAjhAYAAGCE
0AAAAIwQGgAAgBFCAwAAMEJoAAAARggNAADACKEBAAAYITQAAAAjhAYAAGCE 0AAAAIwQGgAA
gBFCAwAAMEJoAAAARggNAADACKEBAAAYITQAAAAjhAYAAGCE0AAAAIwQGgAA gBFCAwAAMEJo
AAAARggNAADACKEBAAAYITQAAAAjhAYAAGCE0AAAAIwQGgAAgBFCAwAAMEJo AAAARggNAADA
CKEBAAAYITQAAAAjhAYAAGCE0AAAAIwQGgAAgBFCAwAAMEJoAAAARggNAADA CKEBAAAYITQA
AAAjhAYAAGCE0AAAAIwQGgAAgBFCAwAAMEJoAAAARggNAADACKEBAAAYITQA AAAjhAYAAGCE
0AAAAIwQGgAAgBFCAwAAMEJoAAAARggNAADACKEBAAAYITQAAAAjhAYAAGCE 0AAAAIwQGgAA
gBFCAwAAMEJoAAAARggNAADACKEBAAAYITQAAAAjhAYAAGCE0AAAAIwQGgAA gBFCAwAAMEJo
AAAARggNAADASG5nN7h4/ixnNwkAALIAp4aGZ/sPd2ZzAAAgC3FqaDh6eL8z mwMAAFkIcxoA
AIARQgMAADBCaAAAAEYIDQAAwAihAQAAGCE0AAAAI4QGAABghNAAAACMEBoA AIARp997AkDG
27wpJLOHYCy9LzdvsVh0JGxfuvYB5FSEBiCb6DNgRGYPwSGr1Sop/S4570rh CXBFhAYgG4l/
Uc6KuDcN4PqY0wAAAIwQGgAAgBFCAwAAMEJoQDIfzpuv5wabzXAfNHiYPpy3 INV1KlQKcMaw
MoUrjx0AnI3QkA0484Xt+vUbWvzxUo0d8x+j9ce+9B8t/niJbty44bQxZFWO 9jMBA0B2ly6h
ITIySpNefUPNmrdRZf9ABQU3UP8Bg7V585b06C7Hc+Z30r//fr2Cg4NUqlRJ o/VLly6lWjVr
av2GjU4bQ1aVcD/bCwhZ9doA06dPV+7cuTV9+vRkZRaLRe3atbP7rQuLxZLo Z4vFovvuu0+F
CxdWzZo1NWbMGEVGRqbr2AFkLU4PDefOndNjjz8pn6Le+vSTj7Vvz06FbPhG PXo8ocVLljq7
OzjZxh83qXWrlmmq0759W/3ww6b0GRDuSVxcnObOnav33ntPH374oeLi4pKt 4+3trTlz5jhs
y2q1Ki4uTmfOnNHChQt17do11ahRQ8ePH3fKWN9+511VqBRg/O/td951Sr8A zDk9NLw3c7a6
d39cQwYPUvHiDyhXrlzy8PBQi+ZNtXjhR7b1KlQK0KLFS9SoSQtVfLCqJOnm zZsaN36SatSq
qxq16mriy68qJiYmUZ2kEi6rUClA8z5aqLr1G6taYG2NGTshUf2kYmNj9fY7 76pOvcaqWr22
Rox8QVevXpUkTXrlda1a/X+J1l+16nNNeuV1o77sbV9q/UnST5t/VvsOXVTZ P1BNm7fW8hWr
jMoS7gOTfbjssxVq2ry1KvsHqvPDj+rgoTBb+Z7de1WzRmCi7U6tb0mqWSNQ f+7eneJ+lpTi
vurx5DP66utvEq37119n1aBhM12+fDlZO7dv39bkt6YquG4j1Qqqp0WLlzht 22NiYvTSmPGq
Flhb9Ro00fwFixL1Hb+fE/6f9PnnrLHYczcff3z77bfy9vbW0KFD5enpqe++ +y7ZOnPmzNGc
OXN08OBBozbz58+vWrVqadasWerXr58mTpyY5nHZM3rUSHV/4jGjdbs/8ZhG jxrplH4BmHN6
aPjpp5/V9eFORuvu2bNXX679XIcP7ZUkzXh3ls6fP6+NG75VyPpvFBFxSu/N nJ2m/rdv36Fv
vlqrHzeu1/nISM2clXL9uR/O1969+7VuzWpt27pZ+fK5adr0GZKkiRPG6os1 62wvaF9+9Y2+
WPulJk4Ya9xX0u1LrT9JeuE/YzVi+FDt3rVdn326VLt37zUqS8hkH4Zu/VUr PvtEf/z+q1q3
aqlx4/79ox8ZFSUfn6KJ1nfUd7FifoqMjEpxP6e2rwY/N1Cz5yR+B/z+7Lnq 1aunChYsmKyd
mbPmKOzQYa1bs1o/blyv06fPOG3b35s5W9HRF/XTjxv09ZdrtG3bdrvbEv8x xJGwfSl+JHGv
Y3GWDz74QEOGDJEkDRkyxO4ZhcKFC2vevHnq2bOnbt26lab2+/Xrp5AQ51yF 0WKx6NVXJqp9
+7aprte+fVu9+srERB+fAMgYTg8NF6Kj5e3tnWhZwlOKCY0d+6KKFClie/zl V99owvgx8vLy
lLe3l15+eZzWrvsqTf1PnDDWVn/ihLGp1l+1+nNNnDhOfn6+yp8/v/7zwih9 v36DJCl37tx6
f+YMvTNjpqZOe0cz3p2p92fOUO7c/15E01FfSbcvtf4kKV8+N50/f15RURf0 wAPF9ObkV43K
EjLZh2+8Nkl+fr5yd3dXv77Pat/+A7Yyi8WipB9vO+rbarXK0d/vlPZV48YN db+7u77+5s47
4BMnTmrzzz/rmZ5P2W3nizVrNWnSeBUr5qfChQslCnH3uu1r132lCePHyNPT U15enpowfkzq
G5WKex2LPWmdMxEeHq7t27friSeekCR1795d27dv17Fjx5Kt26RJE7Vo0UKT Jk1KUx9+fn66
cOFCmuqkJleuXJrx9lQ1atjAbnmjhg004+2pypUrl9P6BGDO6aHB07OIoqIS v+tM6R2ZT9HE
72gvXLigkiVL2B6XLlUqWVuOlChR3PZzqZIlU30HfPbsObVt19EWaOo1aKIL F6Jt5V5ennqk
W1fNX7BIvZ55Wl5enmnqK+n2OepvzuyZ2vJLqLp0fUyNm7bUhpCNRmUJmexD Dw8P28/u7vkU
Gxtre+zt7Z1scpujvs+ePaeiSbY1qdT21eDnBmr27A8UFxenmbNma0D/vnJ3 z2e3ncjIKJUu
Vcpu2b1ue1RUVKJxJmwrre51LM4wd+5cRUZGyt3dXRaLRe7u7oqMjNTcuXPt rv/6669r/fr1
2rLFfMLyX3/9JS8vL2cNWZKUJ08ezf3gfQUGVk+0PDCwuuZ+8L7y5Mnj1P4A mHN6aGjcqKG+
WLPurup6eXnp1KnTtscnIyISnbXIlSuXrl//96t9f//9d7I2EtaPiDilokW9 k60Tz8enqH75
+QdbqDkSts/2UYIkHQoL0/IVKzV71ruav2CxIiJO3XVfJv1Vr1ZVH304R9u3 bdEbr7+ilye9
ZlSWkKN96Ei1agH6449diZY56vuPXX+qerVqqbab2r5q2bK5cufOoxnvztTO nbvUo/vjKbZT
tKi3TkZE2C2712339vZOVD/hz2l1r2O5Vzdu3NCSJUsUHh4uq9Vq+xceHq6P P/7Y7ldk8+bN
q6VLl2rAgAF255PYs2DBArVsmbaJsybc3fNp8cKP9GClSpKkBytV0uKFH6UY JgFkDKeHhhHD
h2rpf5dp1vsf6NSpU4qNjdW1a9f088+/OKzboUM7TX5rqqKjo3XhQrRef+Mt der4kK3cv0pl
LVi4WNev39C5c+c04eXkp+gnvznFVv+NyVPUpXPHFPt7sscTGj/hFZ08GaHY 2FgdCgvTiJEv
SJKuX7+u0aNf0jvTp6pduzZ67ZWJGjZilG7evHlXfTnqT5JGjX5R4ceO6dat W4qLi9Pt27FG
ZWnZh460bN5MGzb+kGiZo76/+269WrRolmq7qe0ri8WiwYMH6MN5CzRk8MBU 30l26/qwXn1t
ss6ePafLly/rrSn/fo3wXre9S+eOmvzWVF28eFHR0dGa/OaUFNctXLiQjoYn P83vrLHYk5aJ
kMuXL1dwcLDKli2baHnZsmUVFBSkFStW2K3n7++vQYMGadiwYSm2fe3aNe3c uVMjRozQ/Pnz
9dpr9gPsvSpUqKAWL5qnJk0aafGieSpUKPkcFwAZy+mhoXjxB7R65TKdOXNG j3fvKf+qNdWk
WWst/e+nWrRgXqp1Rz8/Ql6enmresp1atGonP18/PT/y3z9ek994VRtCNqpG rTp69PEnVa9u
nWRtBAXVVvsOXdSsRWt5eXlq+LAhKfY3cEA/BQXVUs9efRRQrZZGjXpJbdu0 knTn2xNPP/2k
6tYNlnTn3XCXTh31yqtv3FVfjvqTpGbNmmrAwCGqWr22pk2foRlvTzUqS8s+ dKRt2zbavn1H
orMqqfV94sRJ/b5zp9q0Tv3dpqN9leu+XCpTprS6dXs41XaGDxusCuXLq2On rmrWoo38/Hyd
tu0jhg9REQ8PNW7aSg91fFjBwUEprtu/X1917fZ4ii/k9zqWezVnzhw999xz dsuee+65VL9i
OWzYMJ09ezbZ8vjrNPj6+qpPnz5yc3PTrl27VK5cOaeNOykfHx8tWjBPPj4+ 6dYHAHOWTu/M
tF44ekRLRw5KVli+or9L3c62QqWADLvATkb2ldE+nDdfu3fv1QdzZjpc97nB wxUYWF2DBva7
pz4HDBqiTh073PO78Zxq86YQ9RkwIsvfGrt8RX/bz+khfj9k199N4G7d6+/G Q0NHK2z9d8rt
eFXkNIMG9jded+4Hs+6pr7i4OK1c9bkiIk6pw0Pt7qktAED6IjQgU1WqXE0l ihfXrFkzdN99
3AoFALKybBUaMvKUJKc/nYP9CACug7d2AADACKEBAAAYyVYfTwA5nat822nz JufcrwJAxiI0
ANlEVv66ZULcaApwXYQGIBto0qyVy5xlYPIr4LqY0wAAAIwQGgAAgBFCAwAA MEJoAAAARggN
AADACKEBAAAYybahoUKlAKcLZ/JfAAASb0lEQVS0s23bdjVu2tJp7eGO1PYr +zr7S8sxdrTu
vTxfKvTYctd1gZwoW4UG0z8eafkjM3Xa23p54jiX+G65K73YJt2vrjR2Z0nP bc6K+zMrjglA
2jg9NFSoFKAKlQJU8cGqqlGrrjp1eUTT356h6OjoNLeTVqYv7GkJAIfCDqt5 s6ZpHkt6s7d/
XCHYxEu6X1Mae3Z5ocno45UVnwtZcUwA0iZdrggZ/8fh+vXrCg8/ps//b406 dn5EK1d8ohLF
i6dHl+nm5s2byp2bC2c6G/sVAFxPun484e7uroAAf708cZyeePwRvfve+7ay 2NhYvf3Ou6pT
r7GqVq+tESNf0NWrVyX9+64s/qxFvIiIUxowaIiq1wiWf9Wa6t2nvyIjo2zl d/PxRIVKAVr2
2Qo1bd5alf0D1fnhR3XwUFiK47h586bGjZ+kGrXqqkatupr48quKiYlJ1N6i xUvUqEkLVXyw
qm3Zp8uWq1mLtqoSUEPtO3TR9u079MWatWrdpoOqBNRQpy6P6FBYmNG2prR/ Ev5sMs6Uttse
Z7Znb/ypzW1Iup2pPXdSOgZJ3b59W5Pfmqrguo1UK6ieFi1ekmp9R31mteOV sO2fNv+s9h26
qLJ/oJo2b63lK1alWC+l7fj70iUF122kS5f+SbT+35cuqW79xrp06Z+7/v10 VE+S5n20UHXr
N1a1wNoaM3ZCon2TkKPjZM+ykL/UdPh2VX76F3Ueu0sHT177t704q95eflx1 Bm5T1V5bNWLW
IV29EfvvNvXYokXfnFajIb+p4pNbjOoArizD5jQ8/tijCg3dans898P52rt3 v9atWa1tWzcr
Xz43TZs+Q9K/ZyqOhO1LdEpzwKAh6tO7l3779Wdt27pZFcqX1+Q3p97z2EK3 /qoVn32iP37/
Va1btdS4cRNTHMeMd2fp/Pnz2rjhW4Ws/0YREaf03szZidrbs2evvlz7uQ4f 2vtvH6Fb9dmn
S7Rzx6/q1PEh9e3/nH748SctXbJQO3f8qrZtWmvc+ElG25rS/knIZJwpbXd6 t2cy/tTWS+25
E8/eMUho5qw5Cjt0WOvWrNaPG9fr9OkzqdZ31GdWO14JvfCfsRoxfKh279qu zz5dqt277e+T
1LbDo3BhtWvbWitXrU60/vLlK9W5U0cVLlzorn8/Tept375D33y1Vj9uXK/z kZGaOWu23bZM
nhtJhe69pBWvBOqPhfXVOshL4+b9G8bmrjmlveFXte6tmto2r47y5bVo2rLj iervOXpFX06p
qcPLGhnXAVyVpdM7M60Xjh7R0pGDkhWWr+if5pvgVKgUYPcP4+3bt1W1em0d 3P+nJKlp89Za
tPAjlS9XVpIUFXVBHTt31a+hm1NtJ6Hr12+oSbNW2r5tS7I6qdVPut6O336R h4eHrc0atero
0IHddttp0Ki5ln3yscqUKS1JCj92TD2f6atffv7Btn7oL5vkU7Roov6S9lEt sHaq/aZlW+1t
l8k409K/s9tLOv6Ujp297TR57iQ9Bkk1atJCS5csVLmyZe2OLWl9R30mldnH K2HbjZu2VP9+
fdSqZQs98ECxFPeJo+04ejRcffsN0saQb5UrVy7FxsaqZav2WvbpErvt3u3v p716Gzd8q9Kl
S0mSjh0/rp7P9NGWzT8kayutx6lCjy3aMb+uPArkudP3zTjV6LNVhz5teKe9 4du1aExVlX/A
/U57l26p40s79euHdW31Q+fWkY9HXlubjuoAmWHzphD1GTDirucWPTR0tMLW f5dxd7k8fz5S
RYp42B6fPXtObdt1TLSOo1vm7tr1p6ZOe0d79+3X9evXjeqYiP9DLEnu7vkU G5vyqcQLFy6o
ZMkStselS5VSVFTiU6n2XqyS9uGo33vdVpNxOnu709LevTB57qQWGCQpMjJK pUuVSrE8aX1H
fWa145XQnNkzNXvOXL0/e67y5XPTyxPHqXWrlnbXTW07ypcvp7LlymhDyA9q 17a1vvn2e9Wq
VcMWGO52H5jUK1Hi37lQpUqWTPbxRby7+bsSHxgkyd3tPsXG/XuL8bMXYtR2 9O9J2ktcP2Fg
MK0DuKoMCw0rV61Wg/r1bI99fIpq9cpl8vX1NW5j6PDnNXbMf9SkcSMVKFBA 165dU2DNOukx
3BR5eXnp1KnTtnc9JyMi5O3t7fR+7nVbnT3OjNpuE3fz3EmqaFFvnYyIUNky ZZzSZ1Y7XglV
r1ZVH304R9Kd+Q1jxk5IMTQ42o5nez2juR9+pHZtW+vjJf/V66++bFw3JSb1 Eu6biIhTKlrU
/r5xxnMjUXtF8mr1a9Xl6+mWrnUAV5GucxquX7+hffv26/U33tKKlas1csQw W9mTPZ7Q+Amv
6OTJCMXGxupQWJhGjHzBVl64cCEdDT+WqL0bN27KLa+b3NzcdOrUaY0d/7Iy WocO7TT5ramK
jo7WhQvRev2Nt9Sp40NO78fRttrbP+k5zoza7qTsbaej546Jbl0f1quvTdbZ s+d0+fJlvTVl
eqrrO+ozqx2vhEaNflHhx47p1q1biouL0+3bKZ+hcLQdjRs3VPTFi/r0089U IH9++ftXMa57
t31K0uQ3p9j2zRuTp6hL5452WnLOcyNRe638NH7+UZ08d0OxcVYdiriqEbMO 3XOd7PJVYuQ8
6RIa4q/TULd+Y40ZO0F58+bVl2v/L9Hp14ED+ikoqJZ69uqjgGq1NGrUS2rb ppWtvH+/vura
7fFEv1zTpkzWm1OmqVpgkHr26qu6dYLTY/ipGv38CHl5eqp5y3Zq0aqd/Hz9 9PzIYY4rppGj
bbW3f9JznBm13UnZ205Hzx0Tw4cNVoXy5dWxU1c1a9FGfn6pvzN11GdWO14J NWvWVAMGDlHV
6rU1bfoMzXg75cmJjrbDYrGo1zNP67U33lL/fn3SVPdu+5SkoKDaat+hi5q1 aC0vL08NHzbE
blvOeG4kaq9zCQVVLqSek/co4JlQjXo/TG2DvZxeB3AVTp8ICQCu4Mc/otV/ Wsb9fWte01Pz
X/TPsP6AhFxuIiQAZCXNa3rqyGeNMnsYgEvJVveeAAAA6YfQAAAAjBAaAACA EUIDAAAwQmgA
AABGCA0AAMAIoQEAABghNAAAACOEBgAAYITQAAAAjBAaAACAEUIDAAAw4vCG VZs3hWTEOAAA
QBaXamiwWCwZNQ4AAJDFpRoa7va+2wAAIPthTgMAADBCaAAAAEYIDQAAwAih AQAAGEl1IiRf
twQAIOd4tv9wHT28P8Vyh9dpeLb/cKcOCAAAuKZUQ0OTZq1STRwAACDnYE4D AAAwQmgAAABG
CA0AAMAIoQEAABghNAAAACOEBgAAYITQAAAAjBAaAACAEUIDAAAwQmgAAABG CA0AAMAIoQEA
ABghNAAAACOEBgAAYITQAAAAjBAaAACAEUIDAAAwQmgAAABGCA0AAMBI7swe AABktAqVAjJ7
CDnSkbB9dpeXr+ifwSOBxWJJ8XikhtAAIEeyWq2ZPYQcw2KxOFzn6OH9GTAS SNLmTSF3XZfQ
ACDH4oUq/d3LCxSyHuY0AAAAI4QGAABghNAAAACMEBoAAICRdJsIGf3PRR06 cV1/HgjX8Yhz
kqQyJX0VWKWcHiztLs9CRdKrawAAkA7SJTQcjLis737cpbo1K6tnt9YqW9JX Vqt0/NQ57T4Q
rv+u2aV2zYL0YKmC6dE9AAAup0KlgLu6dkJGcnpoOHDyssJP/KUXBj6mksV9 tOdguNau3ypJ
atW4lp7q2lKN61TT2vWhskqqTHAAAMAlOHVOQ/Q/F/X9ph3q3KaBShb30YyP VuulyfO1YfPv
2rD5d/V+fprW//y7Shb3Uec2DfTdph2K/ueiM4cAAC4vLOyw+vYbpOo1glW9 RrD69huksLDD
idZJelXLw4ePqGHjFlq46OMMHKnrCT92TEOHjVRQcANVCaihrt0e17fffp/Z w3IZTg0NB45f
V52alVWyuI+OnvhLIT//rmpVymnRuy9q0YwX5etdRB998pWskkoW91Fwzco6 cPy6M4cAAC7t
xImT6tmrj1q1aqHQLT8qdMuPatWqhXr26qMTJ07arfPnn7v1TO++eunF0erb p3fGDtiFnDwZ
oaee7q169eoqZMM3+vOP3/TKpAn6+ptvM3toLsOpoWH3gXBVq1JOcVapbOli WjjjRY3s/6ji
JF25dkNWSQXud5dVklVS9crltPtAuDOHAAAubdb7c9S3T2/16P64ChQooAIF CqhH98fVt09v
zZr9QbL1fwndqucGD9fb06eoc6cOmTBi1zFz1mz179dHTz/VQx4eHsqbN68C A6tr9vvv2daJ
iDilAYOGqHqNYPlXranefforMjLKVl6hUoCWfbZCTZu3VmX/QHV++FEdPBRm K799+7YmvzVV
wXUbqVZQPS1avMRWFhsbq7ffeVd16jVW1eq1NWLkC7p69WrGbLyTODU0nDh1 TiVL+MoqKc4q
+XgXkY93ER098Zf6jJqqq9euq+9THWW1SlarVKqkr07875sVAIA7IaBL547J lnfp3FGhoVsT
Lft+fYjGjpuo+R99oIYN6mfUEF3WL6Fb1bFD+1TXGTBoiPr07qXffv1Z27Zu VoXy5TX5zamJ
1gnd+qtWfPaJ/vj9V7Vu1VLjxk20lc2cNUdhhw5r3ZrV+nHjep0+fcZWNvfD +dq7d7/WrVmt
bVs3K18+N02bPsO5G5nOnBoa4u//En8mIf4Mw/g3P5IkTR43QPVq+yvuf2Xc LgYAErt48W95
e3snW+7t7a3o6MRzwIaPGKXx48YoIIC7RJq4ePFveXl5pbrOt1+vVb16dZQv Xz4VLFhQo0eN
1C9Jwtobr02Sn5+v3N3d1a/vs9q3/4Ct7Is1azVp0ngVK+anwoULaeKEsbay Vas/18SJ4+Tn
56v8+fPrPy+M0vfrNzh3I9OZU789Ubqkr46fPKeAymXvLLBIR0+c0dVrN9Sj ayuVKVVMcdKd
tGCRjp88p1IlfZ05BABwaR4ehRUVFSVf38R/G6OiouTpmfj6Nm+8/orGj39Z nkU8FBwclJHD
dElFinjoQnS0fIoWTXGdXbv+1NRp72jvvv26fv3OnLukd+n08PCw/ezunk+x sbG2x5GRUSpd
qpTdts+ePae27RKfRTK5A2hW4tQzDVUrl9OegwnmKFilot5F1L1rK/lXLnvn Ywn97wyDVdpz
MFxVK5dz5hAAwKU1qF9Pa9d9lWz52nVfqX69uomWPfZoN02dMlmDBg/Txo0/ ZtQQXVbDBvX1
9depT3ocOvx5Pf10D4Vu+VGHD+3Vn3/8lqbbqBct6q2TERF2y3x8iuqXn3/Q kbB9tn+HD+1N
0zZkNueGhrLu2rHroE6cPm/7CGLTlp1a/kWI9h44ZgsLVkknTp/X9l0HVbWs uzOHAAAubdiw
wVqw8GN9tnylrly5oitXruiz5Su1YOHHGjZscLL1W7Zsrg/nztZLYyfo8/9b kwkjdh3Dhg7W
R/MXatlnK/T3pUuKiYnRn7v3aOiwkbZ1bty4Kbe8bnJzc9OpU6c1dvzLaeqj W9eH9eprk3X2
7DldvnxZb02Zbit7sscTGj/hFZ08GaHY2FgdCgvTiJEvOG37MoJTQ4NnoSJq ElRSX28IVcTp
85JVat+moSSpWeNakvXOBMmI0+f19YZQNQ0qyeWkASCBcmXLaumShdoQslH1 GzZT/YbNtCFk
o5YuWaiyZcrYrRMcVFuf/Hex3pkxU/MXLMrYAbuQMmVK65Oli7VlS6hatGyr wJp1NPHlV9W+
fVvbOtOmTNabU6apWmCQevbqq7p1gtPUx/Bhg1WhfHl17NRVzVq0kZ/fvx8z DRzQT0FBtdSz
Vx8FVKulUaNeUts2rZy2fRnB0umdmdYLR49o6chBTmv09/1H9NOOCNWuUVlV Hyyn0v+bt3Ai
4pz2HgrX77sOqmlQSdX2r+C0PgHAVIVKAbJarTp6eH9mDyXb27wpRH0GjJCk FC+RXL6iP8ci
A8Ufk7RcsvqhoaMVtv679Ln3RG3/Cipbwkt7jl3X8jUbdPJ/X6ssVdJXVSuX U++Ha3CGAQAA
F5Nud7n0LFRETQOLqGngA+nVBQAAyEBOndMAAACyL0IDAAAwQmgAAABGCA0A AMBIuk2EBICs
bvOmkMweAuBSCA0AciRXu+Z/dkeAcw2EBgBApiLAuQ5CA4AcJy1XwkP643i4 DiZCAgAAI4QG
AABghNAAAACMEBoAAIARQgMAADBCaAAAAEYIDQAAwAihAQAAGCE0AAAAI4QG AABghNAAAACM
EBoAAIARQgMAADBCaAAAAEZyS1LUkcN6aOjozB4LAADIwiySrJk9CAAAkPX9 P9BuKKqgtJMM
AAAAAElFTkSuQmCC
--------------010704040602000003080104--
Re: Custom log import filter howto [message #85934 is a reply to message #85889] Wed, 25 October 2006 14:27 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: cindyjin.ca.ibm.com

Hi Holger:

Yes, you can set this attribute of the Sensor component at run time. A
code example is :

IContext[] contexts = adapter.getConfiguration();
if(contexts != null)
{
IComponent[] components = contexts[0].getComponents();
if(component.equals("Sensor"))
{
for(int i=0;i<components.length;i++)
{
if(components[i] instanceof Sensor)
{
if(components[i] instanceof Sensor)
{
Hashtable t = ((Sensor)components[i]).getProperties();
t.put(AdapterXMLConstants.HyadesGAFilterAttributeName,
filterSpec);

t.put(AdapterXMLConstants.HyadesGAFilterExitClassAttributeNa me,
filterClass);
((Sensor)components[i]).setProperties(t);
}
}
}
}

But right now, the above code will throw a java.lang.ClassCastException
if your sensor extends the
org.eclipse.hyades.logging.parsers.adapter.sensors.StaticPar serSensor
class because of there is a
https://bugs.eclipse.org/bugs/show_bug.cgi?id=160528. It will be fixed
in TPTP 4.3.

Another way to modify the adapter configuration at runtime is using the DOM:
Element configuration = components[i].getConfiguration();
Document doc = configuration.getOwnerDocument();
Element puNode =
doc.createElement(AdapterXMLConstants.HyadesGAPropertyElemen tTagName);
puNode.setAttribute(AdapterXMLConstants.HyadesGAPropertyName AttributeName,
AdapterXMLConstants.HyadesGAFilterAttributeName);

puNode.setAttribute(AdapterXMLConstants.HyadesGAPropertyValu eAttributeName,
filterSpec);
configuration.appendChild(puNode);
puNode =
doc.createElement(AdapterXMLConstants.HyadesGAPropertyElemen tTagName);

puNode.setAttribute(AdapterXMLConstants.HyadesGAPropertyName AttributeName,
AdapterXMLConstants.HyadesGAFilterExitClassAttributeName);

puNode.setAttribute(AdapterXMLConstants.HyadesGAPropertyValu eAttributeName,
filterClass);
configuration.appendChild(puNode);
((Sensor)components[i]).update();

All the bests
Cindy

Holger Machens wrote:
> Hi Cindy,
>
>
> thanks for your reply, this is exactly what I'm searching for.
>
> Can i set the filter attribute of the Sensor component
> in the adapter configuration at runtime,
> with the input given by the user via the log filter configuration/creation
> dialog (see picture in attachment)?
>
> Thanks again
>
>
> Cindy Jin schrieb:
>> Hi Holger:
>>
>> From TPTP 4.2, there is a new feature in GLA, that you can add a filter
>> class in Sensor or Extractor to allow you filter the record before you
>> transform them to CBEs. You can add "filter" and "filterExitClass"
>> attributes to Sensor or Extractor components in your adapter file.
>> "filter"is a filter specification string used by the sensor to filter
>> lines read from the log file. If the filterExitClass sensor property is
>> included in the adapter the filter specification will be passed to it
>> and the filter specification must be in a format known to the filter
>> exit class. If the filterExitClass sensor property is not included in
>> the adapter the filter specification must be a regular expression.
>> "filterExitClass" is the name of a java class that implements the
>> org.eclipse.hyades.logging.adapter.util.IFilterExit interface. Each line
>> the sensor reads from the log file is passed to the class to be tested
>> against some filter criteria. If the filter sensor property is included
>> in the adapter its value is passed to the filter exit class to be used
>> as the filter criteria.
>>
>> You can refer to help document to get more details.
>>
>> Hope this can help you.
>>
>> Cindy
>> Holger Machens wrote:
>>> Hi,
>>>
>>>
>>> i would like to develop a log import filter, not filtering on CBE
>>> attributes filtering but on attributes of the log file to be imported.
>>>
>>>
>>> Example:
>>> The log file has a line like this:
>>>
>>> 12:32:30.872718 open 0C 51 4A 05
>>>
>>> Instead of transforming the log entry into a CBE representation (which
>>> might be very time consuming) i would like to specify
>>> a filter for the third column of the line.
>>>
>>>
>>> That means instead of a process like this:
>>> read -> transform -> filter
>>>
>>> i would like to have something like this:
>>> read -> filter -> transform
>>>
>>>
>>> Is there a way to do it, and where can i find appropriate API
>>> documentation.
>>>
>>>
>>> Thanks in advance,
>>> Holger
>>>
>>> ------------------------------------------------------------ ------------
>>>
Re: Custom log import filter howto [message #86012 is a reply to message #85934] Thu, 26 October 2006 09:27 Go to previous messageGo to next message
Holger Machens is currently offline Holger MachensFriend
Messages: 57
Registered: July 2009
Member
Hi Cindy,



thank you for your great support.

I think, you meant me to use this code in the StaticParserWrapper, right?

That looks fine, but the filters specified with classes implementing
FiltersStandardTabUI and IAdvancedTabAttributeSet in the import log
wizard, are always used as post transformation filters, right?

Or is there a way to tell the framework, that my filter rules should be used
as IFilterExit input?
I think this is a feature request for a filter scope like ImportLogExitFilterScope?
What do you think?

There are a lot of workarounds for this problem, but my intention was, to use
the standard filter dialog for this purpose in the standard way.



Holger


Cindy Jin schrieb:
> Hi Holger:
>
> Yes, you can set this attribute of the Sensor component at run time. A
> code example is :
>
> IContext[] contexts = adapter.getConfiguration();
> if(contexts != null)
> {
> IComponent[] components = contexts[0].getComponents();
> if(component.equals("Sensor"))
> {
> for(int i=0;i<components.length;i++)
> {
> if(components[i] instanceof Sensor)
> {
> if(components[i] instanceof Sensor)
> {
> Hashtable t = ((Sensor)components[i]).getProperties();
> t.put(AdapterXMLConstants.HyadesGAFilterAttributeName,
> filterSpec);
>
> t.put(AdapterXMLConstants.HyadesGAFilterExitClassAttributeNa me,
> filterClass);
> ((Sensor)components[i]).setProperties(t);
> }
> }
> }
> }
>
> But right now, the above code will throw a java.lang.ClassCastException
> if your sensor extends the
> org.eclipse.hyades.logging.parsers.adapter.sensors.StaticPar serSensor
> class because of there is a
> https://bugs.eclipse.org/bugs/show_bug.cgi?id=160528. It will be fixed
> in TPTP 4.3.
>
> Another way to modify the adapter configuration at runtime is using the
> DOM:
> Element configuration = components[i].getConfiguration();
> Document doc = configuration.getOwnerDocument();
> Element puNode =
> doc.createElement(AdapterXMLConstants.HyadesGAPropertyElemen tTagName);
> puNode.setAttribute(AdapterXMLConstants.HyadesGAPropertyName AttributeName,
> AdapterXMLConstants.HyadesGAFilterAttributeName);
>
> puNode.setAttribute(AdapterXMLConstants.HyadesGAPropertyValu eAttributeName,
> filterSpec);
> configuration.appendChild(puNode);
> puNode =
> doc.createElement(AdapterXMLConstants.HyadesGAPropertyElemen tTagName);
>
> puNode.setAttribute(AdapterXMLConstants.HyadesGAPropertyName AttributeName,
> AdapterXMLConstants.HyadesGAFilterExitClassAttributeName);
>
> puNode.setAttribute(AdapterXMLConstants.HyadesGAPropertyValu eAttributeName,
> filterClass);
> configuration.appendChild(puNode);
> ((Sensor)components[i]).update();
>
> All the bests
> Cindy
>
> Holger Machens wrote:
>> Hi Cindy,
>>
>>
>> thanks for your reply, this is exactly what I'm searching for.
>>
>> Can i set the filter attribute of the Sensor component
>> in the adapter configuration at runtime,
>> with the input given by the user via the log filter
>> configuration/creation
>> dialog (see picture in attachment)?
>>
>> Thanks again
>>
>>
>> Cindy Jin schrieb:
>>> Hi Holger:
>>>
>>> From TPTP 4.2, there is a new feature in GLA, that you can add a filter
>>> class in Sensor or Extractor to allow you filter the record before you
>>> transform them to CBEs. You can add "filter" and "filterExitClass"
>>> attributes to Sensor or Extractor components in your adapter file.
>>> "filter"is a filter specification string used by the sensor to filter
>>> lines read from the log file. If the filterExitClass sensor property is
>>> included in the adapter the filter specification will be passed to it
>>> and the filter specification must be in a format known to the filter
>>> exit class. If the filterExitClass sensor property is not included in
>>> the adapter the filter specification must be a regular expression.
>>> "filterExitClass" is the name of a java class that implements the
>>> org.eclipse.hyades.logging.adapter.util.IFilterExit interface. Each line
>>> the sensor reads from the log file is passed to the class to be tested
>>> against some filter criteria. If the filter sensor property is included
>>> in the adapter its value is passed to the filter exit class to be used
>>> as the filter criteria.
>>>
>>> You can refer to help document to get more details.
>>>
>>> Hope this can help you.
>>>
>>> Cindy
>>> Holger Machens wrote:
>>>> Hi,
>>>>
>>>>
>>>> i would like to develop a log import filter, not filtering on CBE
>>>> attributes filtering but on attributes of the log file to be imported.
>>>>
>>>>
>>>> Example:
>>>> The log file has a line like this:
>>>>
>>>> 12:32:30.872718 open 0C 51 4A 05
>>>>
>>>> Instead of transforming the log entry into a CBE representation (which
>>>> might be very time consuming) i would like to specify
>>>> a filter for the third column of the line.
>>>>
>>>>
>>>> That means instead of a process like this:
>>>> read -> transform -> filter
>>>>
>>>> i would like to have something like this:
>>>> read -> filter -> transform
>>>>
>>>>
>>>> Is there a way to do it, and where can i find appropriate API
>>>> documentation.
>>>>
>>>>
>>>> Thanks in advance,
>>>> Holger
>>>>
>>>> ------------------------------------------------------------ ------------
>>>>
>>>>
Re: Custom log import filter howto [message #86056 is a reply to message #86012] Thu, 26 October 2006 15:07 Go to previous message
Eclipse UserFriend
Originally posted by: cindyjin.ca.ibm.com

Hi Holger:

I agree we need to support the function that allow user to specify these
two attributes during the log import wizard. Unfortunately right now in
the log import wizard doesn't support to set the the filterExit and
filter values. There is an enhancement request for it.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=161233.

Thanks

Holger Machens wrote:
> Hi Cindy,
>
>
>
> thank you for your great support.
>
> I think, you meant me to use this code in the StaticParserWrapper, right?
>
> That looks fine, but the filters specified with classes implementing
> FiltersStandardTabUI and IAdvancedTabAttributeSet in the import log
> wizard, are always used as post transformation filters, right?
>
> Or is there a way to tell the framework, that my filter rules should be used
> as IFilterExit input?
> I think this is a feature request for a filter scope like ImportLogExitFilterScope?
> What do you think?
>
> There are a lot of workarounds for this problem, but my intention was, to use
> the standard filter dialog for this purpose in the standard way.
>
>
>
> Holger
>
>
> Cindy Jin schrieb:
>> Hi Holger:
>>
>> Yes, you can set this attribute of the Sensor component at run time. A
>> code example is :
>>
>> IContext[] contexts = adapter.getConfiguration();
>> if(contexts != null)
>> {
>> IComponent[] components = contexts[0].getComponents();
>> if(component.equals("Sensor"))
>> {
>> for(int i=0;i<components.length;i++)
>> {
>> if(components[i] instanceof Sensor)
>> {
>> if(components[i] instanceof Sensor)
>> {
>> Hashtable t = ((Sensor)components[i]).getProperties();
>> t.put(AdapterXMLConstants.HyadesGAFilterAttributeName,
>> filterSpec);
>>
>> t.put(AdapterXMLConstants.HyadesGAFilterExitClassAttributeNa me,
>> filterClass);
>> ((Sensor)components[i]).setProperties(t);
>> }
>> }
>> }
>> }
>>
>> But right now, the above code will throw a java.lang.ClassCastException
>> if your sensor extends the
>> org.eclipse.hyades.logging.parsers.adapter.sensors.StaticPar serSensor
>> class because of there is a
>> https://bugs.eclipse.org/bugs/show_bug.cgi?id=160528. It will be fixed
>> in TPTP 4.3.
>>
>> Another way to modify the adapter configuration at runtime is using the
>> DOM:
>> Element configuration = components[i].getConfiguration();
>> Document doc = configuration.getOwnerDocument();
>> Element puNode =
>> doc.createElement(AdapterXMLConstants.HyadesGAPropertyElemen tTagName);
>> puNode.setAttribute(AdapterXMLConstants.HyadesGAPropertyName AttributeName,
>> AdapterXMLConstants.HyadesGAFilterAttributeName);
>>
>> puNode.setAttribute(AdapterXMLConstants.HyadesGAPropertyValu eAttributeName,
>> filterSpec);
>> configuration.appendChild(puNode);
>> puNode =
>> doc.createElement(AdapterXMLConstants.HyadesGAPropertyElemen tTagName);
>>
>> puNode.setAttribute(AdapterXMLConstants.HyadesGAPropertyName AttributeName,
>> AdapterXMLConstants.HyadesGAFilterExitClassAttributeName);
>>
>> puNode.setAttribute(AdapterXMLConstants.HyadesGAPropertyValu eAttributeName,
>> filterClass);
>> configuration.appendChild(puNode);
>> ((Sensor)components[i]).update();
>>
>> All the bests
>> Cindy
>>
>> Holger Machens wrote:
>>> Hi Cindy,
>>>
>>>
>>> thanks for your reply, this is exactly what I'm searching for.
>>>
>>> Can i set the filter attribute of the Sensor component
>>> in the adapter configuration at runtime,
>>> with the input given by the user via the log filter
>>> configuration/creation
>>> dialog (see picture in attachment)?
>>>
>>> Thanks again
>>>
>>>
>>> Cindy Jin schrieb:
>>>> Hi Holger:
>>>>
>>>> From TPTP 4.2, there is a new feature in GLA, that you can add a filter
>>>> class in Sensor or Extractor to allow you filter the record before you
>>>> transform them to CBEs. You can add "filter" and "filterExitClass"
>>>> attributes to Sensor or Extractor components in your adapter file.
>>>> "filter"is a filter specification string used by the sensor to filter
>>>> lines read from the log file. If the filterExitClass sensor property is
>>>> included in the adapter the filter specification will be passed to it
>>>> and the filter specification must be in a format known to the filter
>>>> exit class. If the filterExitClass sensor property is not included in
>>>> the adapter the filter specification must be a regular expression.
>>>> "filterExitClass" is the name of a java class that implements the
>>>> org.eclipse.hyades.logging.adapter.util.IFilterExit interface. Each line
>>>> the sensor reads from the log file is passed to the class to be tested
>>>> against some filter criteria. If the filter sensor property is included
>>>> in the adapter its value is passed to the filter exit class to be used
>>>> as the filter criteria.
>>>>
>>>> You can refer to help document to get more details.
>>>>
>>>> Hope this can help you.
>>>>
>>>> Cindy
>>>> Holger Machens wrote:
>>>>> Hi,
>>>>>
>>>>>
>>>>> i would like to develop a log import filter, not filtering on CBE
>>>>> attributes filtering but on attributes of the log file to be imported.
>>>>>
>>>>>
>>>>> Example:
>>>>> The log file has a line like this:
>>>>>
>>>>> 12:32:30.872718 open 0C 51 4A 05
>>>>>
>>>>> Instead of transforming the log entry into a CBE representation (which
>>>>> might be very time consuming) i would like to specify
>>>>> a filter for the third column of the line.
>>>>>
>>>>>
>>>>> That means instead of a process like this:
>>>>> read -> transform -> filter
>>>>>
>>>>> i would like to have something like this:
>>>>> read -> filter -> transform
>>>>>
>>>>>
>>>>> Is there a way to do it, and where can i find appropriate API
>>>>> documentation.
>>>>>
>>>>>
>>>>> Thanks in advance,
>>>>> Holger
>>>>>
>>>>> ------------------------------------------------------------ ------------
>>>>>
>>>>>
Previous Topic:HP Itanium (HPIA64) Agent controller
Next Topic:RAD6 (Eclipse 3.0.2) code review customization
Goto Forum:
  


Current Time: Sun May 05 11:42:35 GMT 2024

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

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

Back to the top