ࡱ> >H=KM &bjbj== (iWW"lBBBBBBBV DV/2F\\\\e4/Q/S/S/S/S/S/S/$1 $3\w/BKC"eKKw/!#BB\\/!#!#!#KB\B\Q/!#KQ/!#!#):.,BBQ/\: PRuvV. Q//0/.R3{"3Q/!#VVBBBB eHealth Advanced Logging i.e. How to debug eHealth Collected and documented by Joe Kuefler, Oct 2002 thru Jan 2003  Basic Concept The basic concept of advanced logging or advanced debugging is that eHealth code is peppered with printf-style debug statements that are part of the product and get enabled under certain circumstances (which I explain here). The debug/log output can be sent to stdout (i.e the screen) or to a log file. Each eHealth nhi server supports this standard debugging mechanism and it can be enabled and disabled for each server individually. When debugging problems in the field, advanced logging is the Swiss Army Knife of analysis and an indispensable component of Concord eHealth. Developers should take this to heart when writing new code (or debugging old code) and add appropriate instrumentation. Three Elements to Advanced Logging There are three elements to advanced logging that work together to achieve a lot of flexibility. DEBUG MODULE LIST Knowledge of which modules you are interested in debugging requires some knowledge of the Concord codebase. Each area of code in the vobs is more-or-less designated one of the module pnemonics in this table: MODULE Explanation Relevant Directories in the VOBS cba C++ Base Application Library ccm C++ Communications Library cdb Concord Database Library cdm C++ Data Model Library cdt C++ Data Types Library cos C++ OS Library csm C++ System Messages Library cst C++ Util Library cu C++ Util Library dbg Debug Utility (the debug mechanism itself) dci Database Interchange Tools ddi Ddi Library ddt CDF Data Types Library dsvr Database Server du CDF Utility Library, including dynamic SQL statements esd Element Service Data Library lcn Licensing support lmgr License Manager ndm Networking Data Types Library ndt Networking Data Types Library om Object Model Library omd Object Model DB IF Library ru Rpt Utils Library sa Database Code in ConvertDb land sps Startup Server tb Trace Utility wsc WS Core Library DEBUG FLAGS DEBUG OUTPUT LOCATION Three Ways to Specify the Three Elements ENVIRONMENT VARIABLES COMMAND LINE OPTIONS Through the nhiConsole GUI From $TOP/frameworks/ccf/cuLib/CuDebug.C: const char* CuDbgModulesEnvVar = "NH_DBG_MODULES"; const char* CuDbgFlagsEnvVar = "NH_DBG_FLAGS"; const char* CuDbgOutPathEnvVar = "NH_DBG_OUTPATH"; const char* CuDbgAllArg = "-Dall"; const char* CuDbgMostArg = "-Dmost"; const char* CuDbgAllDbgFlagsArg = "-Dfall"; const char* CuDbgAllModulesArg = "-Dmall"; const char* CuDbgFlagsArg = "-Df"; const char* CuDbgHelpArg = "-Dh"; const char* CuDbgHelpArg2 = "-dbg"; const char* CuDbgModuleArg = "-Dm"; const char* CuDbgShowArg = "-Ds"; const char* CuDbgTimestampArg = "-Dt"; const char* CuDbgAdvLog = "-Dlog"; const char* CuDbgAdvLogPath = "-DlogPath"; const char* CuDbgDebugEnvVar = "NH_DBG_DEBUG"; // for debugging the debug class itself Enabling Advanced Logging from the Console  EMBED Word.Picture.8  What this effectively does is The Debug Environment Variables The Debug Command Line Options NHI Servers As you know, eHealth is a collection of nhi processes that talk to each other and to a database: % ps ef | grep nhi jkuefler 7338 0.0 5.59988027192 pts/16 S Oct 31 0:33 /export/tacks1/oct28/bin/sys/nhiConsole jkuefler 21088 0.0 5.04876825032 pts/16 S Nov 03 0:03 /export/tacks1/oct28/bin/sys/nhiServer start jkuefler 21092 0.1 4.84912023808 pts/16 S Nov 03 0:05 /export/tacks1/oct28/bin/sys/nhiMsgServer jkuefler 21093 0.0 5.75161628264 pts/16 S Nov 03 0:10 /export/tacks1/oct28/bin/sys/nhiDbServer jkuefler 21095 0.0 6.06253629608 pts/16 S Nov 03 0:16 /export/tacks1/oct28/bin/sys/nhiCfgServer jkuefler 21097 0.0 4.64802422640 pts/16 S Nov 03 0:02 /export/tacks1/oct28/bin/sys/nhiRmtOut jkuefler 21098 0.0 5.24875225608 pts/16 S Nov 03 0:02 /export/tacks1/oct28/bin/sys/nhiRmtIn jkuefler 21099 0.0 5.24890425616 pts/16 S Nov 03 0:02 /export/tacks1/oct28/bin/sys/nhiRftOut jkuefler 21100 0.0 5.24882425744 pts/16 S Nov 03 0:02 /export/tacks1/oct28/bin/sys/nhiRftIn jkuefler 21105 0.3 7.97560839104 pts/16 S Nov 03 1:37 /export/tacks1/oct28/bin/sys/nhiLiveExSvr jkuefler 21107 0.0 5.64932027896 pts/16 S Nov 03 0:02 /export/tacks1/oct28/bin/sys/nhiRespServer jkuefler 21108 0.0 5.24900025872 pts/16 S Nov 03 0:02 /export/tacks1/oct28/bin/sys/nhiReplServer jkuefler 21110 0.0 5.35020026440 pts/16 S Nov 03 0:03 /export/tacks1/oct28/bin/sys/nhiNotifierSvr root 21101 0.5 6.86641633632 pts/16 S Nov 03 0:52 /export/tacks1/oct28/bin/sys/nhiPoller -remote No root 21102 0.0 5.26119225800 pts/16 S Nov 03 0:03 /export/tacks1/oct28/bin/sys/nhiPoller -dlg root 21103 0.0 5.46771226728 pts/16 S Nov 03 0:04 /export/tacks1/oct28/bin/sys/nhiPoller -import -remote No root 21104 0.0 6.06498429616 pts/16 S Nov 03 0:13 /export/tacks1/oct28/bin/sys/nhiPoller -live root 21106 0.0 5.47808026608 pts/16 S Nov 03 0:30 /export/tacks1/oct28/bin/sys/nhiTrapServerCmu -port 7001 Many of these (not just the nhiDbServer) connect to the database, as evidenced by the Oracle shadow processes shown below: % /bin/ps -ef | grep oracleOCT28 UID PID PPID C STIME TTY TIME CMD oracle 21096 21093 0 Nov 03 ? 0:06 oracleOCT28 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 21112 21098 0 Nov 03 ? 0:00 oracleOCT28 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 21113 21099 0 Nov 03 ? 0:00 oracleOCT28 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 21121 21103 0 Nov 03 ? 0:01 oracleOCT28 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 21117 21108 0 Nov 03 ? 0:00 oracleOCT28 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 21120 21102 0 Nov 03 ? 0:00 oracleOCT28 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 21118 21107 0 Nov 03 ? 0:04 oracleOCT28 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 21090 21088 0 Nov 03 ? 0:00 oracleOCT28 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 21115 21105 0 Nov 03 ? 0:11 oracleOCT28 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 21114 21100 0 Nov 03 ? 0:00 oracleOCT28 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 21122 21101 0 Nov 03 ? 0:56 oracleOCT28 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 21111 21095 0 Nov 03 ? 0:01 oracleOCT28 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 21116 21110 0 Nov 03 ? 0:00 oracleOCT28 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 21119 21106 0 Nov 03 ? 0:02 oracleOCT28 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 21123 21104 0 Nov 03 ? 0:02 oracleOCT28 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 10757 7338 0 12:58:41 ? 0:00 oracleOCT28 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) Three ways to enable it: Through the Console Through startup.cfg Through environment variables Lots of goop to see: Database goop Timing goop Goopy goop Analyzing Core Files Example Instrumentation (for Programmers) When writing code, the debug APIs resemble the age-old printf mechanism. Some programmers claim that the best debugger every written was printf(). Regardless of whether this is true or not, there is no question that the advanced debugging features of eHealth give us the indispensable ability to debug the application in the field: dynamically and easily. Excerpt from /vobs/frameworks/cdf/duLib/duDatabaseSql.pc: #include "duDbg.H" DuDatabase* pdb = DuDatabase::singleInstance(); if (pdb->execSql (csSQL) != DuScNormal) { duDbg.print (CuDfDebug, "dropObject(%s) --> FAILED\n", csObjectName); //sqlError (DuOcSqlError, DbUtilsMid, "DuDatabase::dropObject"); return (FALSE); } Excerpt from /vobs/wsCore/cdbLib/CdbTblElement.pc: #include "cdbDbg.H" cdbDbg.print (CuDfDebug, "%s\n", csQuery); EXEC SQL WHENEVER SQLERROR GOTO done; EXEC SQL DECLARE stmtSelectById STATEMENT; EXEC SQL PREPARE stmtSelectById FROM :csQuery; EXEC SQL DECLARE curSelectById CURSOR FOR stmtSelectById; EXEC SQL OPEN curSelectById; EXEC SQL FETCH curSelectById INTO :pElemStructSQL; Excerpt from /vobs/wsCore/poller/poller.C: #include #include "pollDebug.H" if (pollDbg->isOn (CuDfDebugData)) { char buf[40]; cstrCopy (buf, (Cstr) _rwStopTime.asString ().data (), sizeof (buf) - 1); pollDbg->print (CuDfDebugData, "Stop time calculated as: %s\n", buf); } 3z{ :=   ' 0 ; T!\!?"j"m""?######($O%]%y%|%%%K&&&&5CJOJQJ\^J 56\]CJ OJQJ^JCJ jUjhA UV jUCJOJQJ^J6]jUmHnHuCJCJH545678yz|}~$a$&$$d%d&d'dNOPQa$&$$d%d&d'dNOPQa$&}~UV_`ac # B _ z " " A Q l  ) K c      C D E [ [ \ ] r s t ! U V .W'VW:YefCzE o>~^>?@@Z4{U/ v  ( F  & FF G \ j v 1"2"l"m"""""""?###### & F####($R$$$$%O%P%{%|%%%%%%K&&&&&&&/ =!"#$%n+r/I]uPNG  IHDR+PLTE333ffff333ff3ff333ff3f333ȘШظȸȰȰиȨ3f333333f33X``hPXhpPX`hhppxxȐ( hppxxȘ0@(8(8 0 0(pxxȠШP`XhHXذHX@P@P8H8H0@ xȨаXhP``pظHXhx0(3Xh`pP`hxHXpx8P0H(@(@ 80Ȱ`pиhxpxȈȘH`@X8P0H33fpШȸРа3f3f3ff3f33̙f̙3̰3ff3333ff333f3f3ff3f3f333f3ff33f33ff333f33ff33f3f33ff33ffff3f33fff3 ,3 bKGDH cmPPJCmp0712Hs'IDATx^]KoVMM^!;1mˑVi l-b0HvL3ڎku~tdάfsﲪ$UR0lIB~!8_^4JJ_)zN{N zۿRQsS(Z47/.>2,CE2,4mFzAkęe^6b_Eq\\el,0ͅ'.z~C.%s J.(jn%]޽2"DZdZKC /(E)7$Ph= Mda}.(P%(iy]X+KMXT/ucO!) @k #9sQYwkdXUUHK{.l(\npі@Rb w_4ä~2u*WE/[Ib򿤨p7$f<f=2(T,i `P^ l-DBcrk1_mWs‡mi&9`26f؄tːtjF%sPayPjmn*4my"uSV$ &ĶLMOWF<\S]Dg2i|2 1-ft_@m?p/F<k[;nqiS4עPZ_oLfe! KwBmɒKL.6LEK=zj >d1Tm@c3FQtc, (Bdy]fNwF( &"0.YLُH &JHȶL Py{OHC` _h+9\1-Bcs>=u"wC'l*%}Yt@I;k]Qʍ"M=$L=1nSXGy;dj L(QU '^pF`JN3T7×G;h,Q+*frfXWIH7\(%j_^Q,$j/@(qKfQTul/d|m 1ֺDxqY:"Z4*ڊ4·TE@n5B0#p@Ӭo&>Jp#O?? VJY`SES-dncH-^V Im"H KԉOrsT$y@W!Y8E?㽶]ʿ h_«oM©r?B&aS o9oʛEZfݽ?yQ0mx9|%4F)bȉ $>k\ߜ;ylIxc$ӐRB m JV\)i)gJ[*AgԕeO᭖iipDws),(u' + ÍV&^`8HTڴ<ܬO(1#w3I4* IQ+eQt+KS$Ɏ`r)}ףqݍBѹC%: %>m $ht2bLj \[7[d]EQh{[oTCxijȏ>' e:0.ژwNQ), E谁[VujbO"SC?E^r_R<@eu3^d4L4& 7K#hM.zXU.4l '%0 >oDYf elֱhAH!-6F3B~!q4IIMv8fw,1p/cWm |too/{ڑPmOP13YlrY7ϟì'WP@unn>hǹE{d8d^+t䉇9,FyesGʘ3@WCUxnxG#ZLhAf?a[iB-we@K3lȼpziyt2j;hP({oG'vݱ3p (;>@1Z+3iM;M޼hÉUi4!C#ZkwC&(#0hO&pzmD:ZOy+AsZ#:Ȉ0b'DvlՇ3=pQh~ghm0+|0*Uwh !:00# 1P9bjJ@W Ujgɕ;`74f4 }l#XUc|qlJoh(+@2 t]dUiєQ_Ƃ5_7[} |;8NN<{4Msh-wZTX[;Ap|G:R;IUtgSʳU/Mm< (\4*X8V(=;1XwſA|V60D#dؔ&\tlN cPb>z}`qUTlΜfLQI4CiשSL aҔǴ1`/5}=@ p/rLAy(qfZÃΜ%MEXLųw~lQe^ il*\Kn\k'&I =J$uS繌wE~I ?$z"_TY7vhv5 5 wݗI+y9W ѳ6w*ëeD ƏafܩTE2F,j^ i>. dpS[9* +\ i4obF?`"PucщDKbj\ 'ܚ*W"(н+|NE^EN#\@  .aМ;[Y*U5})*Ԇ= )^C!&TʛXbJ9Z'UMK78ʱS51n*J~„Η ]Gn-Fd !h*ŻrruzncQ&%tÏZ$E!JBQ .d6rVV-\EHOu,Xa aE\Q=5@L?v|Fz_]S Kf~ k@nﭡR Gɧljdaި>?$w?IR@PtC^@Wȫ tl nT Ӏqb -7"IT-/BEpT\zy?+z{]Q?E9ܨe]ZTɢFQJRkwKQaP PrdEn1jP5¿Fyh*&.h#E0i8< rV5 ^k^,EHyX|r< N^#Y'%vá6܄,C7TjWh^ /{7WsqT# _}",M_ F XIV$jq*D{N)d`,Ȼ؁ ߃Ξ:U 1ğNxInE{0;x`4CtG m:_"$=:EZ擁'jUCqJ\gz,{)0@ҊC=w '$sJv)a5~P4sr\VNUj6.D1lk?R[AҹȖCQ"?(fN#1b/KFV .\i1O-loXSƷQp|a9@樠*}}p7HkB$v4eE1wők2EԈw:Pe;+ªSH~+*%n )ZU.*3 I:^pU; ˙䐮rSX T(Gi1xEbV@Q)6i,GQJNQ~ <.ӭ~Ac._~e5ԃF9%Y?8Ms ] ns!إL@ٿ@ IA:CFEiaeO')xyrf_3h7]Fȹmnonrx"Ox6C5<8sh?b>?xL*6tM@lSsdDa8([-կ~dwžQfhQ|k&hvoAcH@2diY啶%Rȍ$O)@?z/2lEq2U>.yA[HiQ.PQmrnY@vpGj=>;ܐy"?O>~^z>i3 fO5жԭt@ܞqi`mG9L_lꌝ"Tf tX] }J,m 璠)0_^#Lzsvw $=Em`+ S-*뚻d>n 5qRp5 Ke4 (79{ P,@4P363g޿=mt~J{jZpdE)ټrCv 7q# 㹯a;l NKR.mI*Aº 8ᾜf)::?P쐑eEDŽRU舱s{ҭHxaxGopVl+MJvШ61:}L$b`;;; -ߍ)\I^(m Q,ye (( ((H-ζ0Ų4B#i@5]"+0A[3ʮ5I9syzFR2A@,#R7s`R$U8:{ 5)I' QgNe *NYAHWVz4Chsk@`9݀ T9%XfkQSfFnUcˌ" R!5ғM{8,Ġ`nKh,ix(0*xKVf^ D#u(%TȄL)1)@Q]UC|RX\6P,{B|(q4: @!=T ʛ5E(G.Aic)i%SbWP%ؠ54:gJΓ{t);=Y@*;9%j#MZ \:KQ8뚃u~5/_ ;@f j;@:<(>%e hu+4 ."iƺ;J@ '^1ܷ(hqoVv[+Nk*aMx)4~2]'YfFXQ!B.fGv3hsO4fde021]=YkԻ!4w;irNa`@}F p>Y"74 ։i%ͱMW%bP#5Nʿeb%e{n`-GhKPh>#Ri];K/L8WLdJo`DaG~z^} lhm'ɱ;jmΗGRKZX"=MOiI&G]|QWڷ}Tj.7 r~]I- hա'kIN4[=% ${ARaݿ[v H`wOaY@ˠނ]7)rYPDmb^Ó^]Khf6FFX0!7Ja[O ~8w:P aGh5 9ۙU89 * CRX8_iћtg An Wͭȩ%lE:ijPePFR.T(ak'a@φRj+}N/|Qy#Mn GP q$˪>Hy(&&W$UUڇƄ+.NIzq!ݭ;NE @Q=Ӣl }{=i( !NO

4F1}8Տ N-dN6=$hDS2c5Nh;)8WH~ffvNc2+#{ A#;lQEI\ H!Z|tAZ>&T6б# =Mkcɂ"@i Л:<ʦ,t_6vah_ Pe0O 7zԟY4d68IENDB`dSDd&$J  C A? "2R),Lii RD`!R),Lii "0 p\`YhRxO5۞rjiP";Ǚt'Q Dr; `: ĉC~Ihg:N~~}ݻjw}תUծ]֪ϧӟ;~?}O}:Oeۿ?oޗG؟_oi>ӿ[otwo۞_}w=g>vx;[q?w~/޽}ˏwOv_?_O?NZNv/NWw>)e~>\~G?~~=r N ?O?tl6fk~fl5qfl?l6?οsӟGB&ʋb?_DarΨv~:1? W0e#u81?q[} c??',A^ Yl+cMؖ/<$n >gUҐU/lK&Ja䅫-s\ps ˂r]m!Gre{$U+1cXY5<^h' K|$į{ (.vG_'z CPO ܿDOmzm7&~ݎ TTeOdwWᱺE?oӳGɖ0Y.i٪ڷ־|4GO\L.kLMVu.1XH:/S lqh9GhۯaUt͠K.WRGV֒KZ? <هw\(U5f&=9gUQZPH gs aX}8zst:|9nxL&}4}?j}T@UOxp+SrZ!GcjG|@ڞeX?!vW٫GKwkb\/?Q__T1~acM#Ptz+:{&gDFWe}ՈժسfiM?m+kj_/ʭ}-?ҫN6oEǤ=qdamrſ`%dT#rS%KۖA>}(' c1zGmC2`f2[=ER# R.Zvʅrk? zy̕KJU%, Uƚ"]8l>G"d]gQTHH%}گf^HL  xbE2#8XXX????`̫C%D)wŵ&>}M+ǩ}k!^y;{G[WB_ `$qv' L#rjP&*Ody~c2S Ի·Tid ,WX'UE?wZUu~m&r$>#-\Xxs~ሔY$]#\1?'xbzn䃋G>ۯm(Ļ' nj4@,PX?\4M(Rz+ZL՚4vB_nI* QG¢W- ڶBaH<=EW?&UۥQU/yfaarɤwr|Z>Q&?h$_%`$8$JIGdQ-|Inx_J&[T%x$ڨqt?r#sZƭ?v%?)kx &TaKưOv-U\?ں kcexg(J꿌 6[FLLНꉭHlp[9#7޶ΘcGnZp59\^Jj'g^C*uUX#f{`nMg4M#FaC[%{I Gp2?چeͪqqDRuT.Zv5rkӾ?m+thщ?cGpA&HkF"D{{Ncy>dsx,H`󠮍fߡM綕"1U\K"H+bBUS+&+s1M|6q] `W1k s'??CD ؏ϫڟ~؆Tn?`?1Ⱥ}??dn] z1f9p H|cqvT,||6K<9,%k~Aږ#Fa(u?~s00";-,"Y\JUaWU/-iBYO^QHt.p$UuD>xUO,/s'8hz0>Vj]^Y$}/W)`/t!;I?,uT-,3%8X fjC LPUff͠CWi+UO7;M=TGyGeS7GSgd $'DVy)M֬!UGU^ya*ҫD3x?e ~?f{j >U*_-.}WK䶴O?&m',W$O羣GK!v7wUJDmc1y-r^h y88>p%2%ؾ':jE&o_,49IuytkHzDVfe4K v$FPQ#paVuc..alǴG| ҡ X,ƖVHUgM;Vվ9(U_[s0Urq=+]t0qL3Ga&W\HF?"w19!Jmr`16, VmV-UZ4r-kNO8W[%qn@ԫϣ%E:Izbس,kfģ;w/ UgQT!H4%˪}گfbxW0&n|jdeqڮsê?c ba.:aD  !"#$%&'()*+,-./012346789:;<?JABCDEFGMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root Entry  Fl{vI@Data 5dSWordDocument (iObjectPool7ovl{v_1103718589 F7ovErv1Table@CompObjhObjInfo i0@0 Normal_HmH sH tH <A@< Default Paragraph Font  @V0?b$l BɽxҲxV b$">~ow9ƻl7bb$v\["nm-q@r(  6   A6   A<2  # o#<2  # o 6   A>B S  ?& &$tYt Z t,t t@ `@UnknownGz Times New Roman5Symbol3& z Arial"hSqSq!~02QJoseph Kuefler Joe Kuefler   FMicrosoft Word Picture MSWordDocWord.Picture.89qOh+'0p  , 8 DPX`hssJoseph KuefleroseoseNormalK Joe Kuefler16 ObjectPool 7ov7ovWordDocumentLSummaryInformation( DocumentSummaryInformation8M bjbj== WWl UUUikkkkkk$ \UUUUiiiiU iiUiiiii @_ ii0iiii jUmHnHuN N!"#$%nVl BɽxҲxPNG  IHDRN? sRGB pHYs(sUIDATx^]u)|2 YI2!4m;4b碅2! -RHܔ4g,C<`қBUK":쏵z̙]{~{?k?   PBॗ^:uƍ%   px㍳q޽A@叿e \2x%셠s$ 侣G$]Y _}׮]K_߀   p  ћo鎼oQc4@`6nѣGE''gN*|'"$ n֑\(QQJ ~|v;t dk-UEVbl(U0믽FH쒀'#3_+fo}juT$W7C8^a0+gZj#jD)#!@YG: QdߕU[Βk\;@Yd%VŸ, z #t-F>Q* Ĕk%Ɣz]뫛z@cpXLDb!,ExJ^.7E']`ؼzb<<S(2(EځpC/(3hkAw$\1ֲIXX+~&_ed<AQx=j*&[j0 𲕷d?wɃ67_R]zTz2y^oB0!{%^;SoØB2-ڽjT;/Q2jm6i^hqWe.k@@tɖ JϿʸDr/1&lYbd@FpgzѝK??5:4,$~u4nCD^oX3lTBݯ]hBr _8 "-lT3E'5E:Z~<~E"QpBbtb ƞ8z); Yqw1bL ,ں)ԫȄ_Yp:A`m8VTYϣ/%RϳS3 Wr!ȴxh lE + hzj,j(k&07?JZ +yP[fo'F{;)v0J]\<ߣkh@tD67pTRZR wR[…wꕝ#[dĽHGҠpvL&t;p @$P3ZnVK&d,?~zGvRto? UmG1m꺃QI2|Wm",bG57S]/vSիo? P?޻;M>R?.֟|e[84*<%qIT&cD K&-gܧ!W7R)ߨaaRY<:L9 a㱧Vԫ?YL}懰S)d=.b %NN>;%XZ=VSiY/&""yD&9v25d\`~.LMZj+Oق>2g\qͶ__voᏮO 3;Aw~ͨΦB varBs/&%FE8*7i\_Yn:?*1 !y KoON?<ړON ?i79GM?ܿ_s{څ$$ߎ;Ż_8py?oYfxB$o]u/gDlSI ~F Z?qRߪ"W/\Ѳbݹwh:~r7Bi-X$_҃/;/}Pxw~u%"ܐ%xAS؏bҖ$6yr3Ŧ 'cN#i+i89""Kt ֫/OeC?lQ8^Oa.4ת;xs[ׯH_f+ZL_0bߚ܎. ]||c vFVBm?Vv2B".U[nH?qkS>x}/= M2x߾꫏.t'?͋o:9zw/]\~e/]>=\pu]=$0\ݺMJ`\֔Peq/Ԗ*A$Ѯ'wk+ ]?X'S'SGf?]4m[Zi%mK'Otls~W_py/ȵW/r''?;ak W}t=VCK@YUM!H?-PbXF}ꊃTKiǝo)Ts#u2- WyneSc*? g?w'~twv"a'SUDJ8R~^LyL~k'OtB v?v'.m|Ói"n܉}uT#rUt#LޖE 7tˤZLJy*F5t~ȶ NC4ihXGUWgܰPR8ҪXRb9c:܀>2N.(y-)y<.[8~ ퟟoEŜ6..:\](LQx)Ж3XzM<#[eCdz'ncÆ_~sv?r.n}F=)g{nn}οrRtkO~QsW'p_Ŝ裓SyPYL)jpBJ)s{X;/1LӝU7S]vr$|oXϯݿk[rW]ݿym-/h~@oC鷼/a ֻH޿ݪr89rA SSOHl添mt`#>o҄%Y=( GkÄD8s!Zt6BKV݃Rᑮ^(s;Z3UZnܥڜyW'-?IW{#iq ßy{Fx8#e؊FC&4;xEyWYe3D>~N;,)}g%3^.zrQt25'_׮w̓kABݾ:·n}?6gzIH7Vo),FWGiW2Wg kc@UcM6WEY]8ؾrU>HePQZg{pNnGߖ02"k姻=.n8pi㼯NjgP^aHaNguQx p?re/TWxN]cyɫ7;6ox*{s,T2w_:ӘgOQG>Ei|sr\&Lti5I2v+^uhhIϧ9~዇ǖwL/:rt|N wS!A_?O^{A>|ot{'ׯvщ mpC4j{)f\^Q叀Rap1(ݨ?_{ݩv̺~u:lzNmgwYrB>CsiB1N2)$,Gk mӏȄνUa4,RgK=}z눡,N ?X]i&@Tжv,UR  !t,N3lG7Cۼ#ኖ,&kb+v@kT+]Vò+N4%UW{\<]N5Ē}p6#R{SRKBۢʃyĨp @@|~{?R{-fy h}Q-VyvlD  "kAgz |AE  Б@MX=TlFf?nT %ц  0wՃ"]0s$5oܑ%Yyn&SyyWߗ͵9 V"%髿|_/=sT(  7_tu߹nvA处bXbX9AiF`|M @@`?V00 @'peA) A@`?Њ@ \|:u @@ cg\^n' L>J~?JhA@vJ`zZ{ Gi_[  0`P ;%ӆ[  0`P ;%ӆ[  0`P ;%ӆ[  0`P ;%ӆ[  0Zǣ7<Ӽv5䭄@Yj#f0NLѐUBţJRaEzʥ庩᷊ײ<Έ,uA@YpY3(@{D%⡒qEO6*9Ck5T [Ru$^(M*͓5HH&jLԋU쇧hhBx$FH"T!(v(yYQwT͔)mPOiS>Ccdb]2J7ht9gW3lqϓ]=0Y0$*@gwܬŞF!е^6W4MIY2f;ײWfLRiB|L԰'\*R fx+\-ɂTyCO/u6:(Rܑ@QY\!0SH#f(ѧjgu0s-E#uY:JHEqZLݴ k)u{\\E` bNQY )q M) OY"O-}kr=XLURq&w_~dQD[-uruemۖLC]f)% Ѐ=ۊ]b؜Iث#IjT4 @@`F=?y,s<r¥7<@_W}+6M@txXbQ1lǦƃb?CA@`?6|0@#zT  &  Уb4M7 , l`<,Fc1@6McA@`1kkx` @ 0>6b*oɵ &F%X>|U9Vi6 OV*k=m1Zo#KA@`6eÙ%:G*e!Ê^H ZUW E.*IiWHRjO9BMV:[]#j]k&珬W>b*dq%Cx)3!`(#RU2Sᯊjvl@q k'T %12 2>]a޵F -R25i`Ϡ顺2+*k)U.. s4N, (E.5LQenԋRE q UJD 䏡(ЊfE͓vZ@K:-52ɺ*P @`%*Gj:'u2GR٪Cv*epMzRk}^AK8Nj$r3EBZbܼ!  %P?Rz)*HTK:(E(F6{]2jE(=Y-e8#Z -8=??qƽ{/{w/\?үҮaUa ^ ܾsw})?[8vcpk]OAР@Fް6 ?<lddU5w5/mhUX$[.U0 1I`-d͍86D+Uzk&P6cES`1P:|%0.EgDtؿ˖C/Do.j!lfZc ǜE9sȶB5pʚa0 }aɬkK Q<aUvKE7;p]^QǂR*yG<7B= Ф`qAOJ@WDFF2:NsۇF yhtjz'Eoz 26݂qG M|ôwYj>p}hT) * O3RYE<)pD"2j]\Sjg: t<@ Ҏ˛dTO5nKr1?XVd;QVrO=.YѦUT{-h?(}L%jUxʒ^-mHyb<{8E.ZJp JE[2G$_^+OEl^aicӎŃfzTaXʩ"JvS:n.IywfS %7jv|T E`+P]bX Hho]pN_MP* @3zﯕh}i:6b 3L6GĢj=mtkoeٲcGZ;8t!P?\<7.ڕ^6%RkS}%4G+z~Ji׎`(l)%zߵ p GJtHKJ#GGr8;jLkd"<%ㄥT%EUl S7Tee_eKX3/#2=Ƨ8Z.c0SKLZQ]X;@f#P?˔!q(MٜWT zE[i:ނN&8q\@/{7*¶EEOKيfI]htתE@RjP6.?U aiSmA{T"Q5Â;F7qytPJV2"?]|ydhQø 1  FCWۯ$jM)yEd殕mj52Lc:5{ґ5lO DQX>,È #E=ۦhzp34hkax#G%Tp +#wPZ/˺:=TA%:6PV,u<j ArիV%YzQjѣMmEd]K X*9ftת AB5c(G ;"Vnr/LcR^ RmGĊ~}AtxE-(2MOW8粮(jű:zLuAA h`?r-6-?r-6-?r-6-?r-6-?r-6-?r-6-֒?_ӑN :U  0@Yj#fŋ-%hzGHGĢj=m(=F0цA`C2JT|}52JR=T-[ao|cyr {;L 珬aÀ&iB;/‹Jե^NҜ:n|U/2HlV`Z=ctSKbe,ٿzڇD8(+#w.9g3Tա:vNسf@!P?hh (np &6^T-ɺ֋RlEcFwlA@N&صWH ly0&S* y[Kz@!P?]6[2;x鴔`Z텬+~JRcFKah)z)cƶm`b )#1E )R+E( \H'ۡe%gϞFdKYk! E7nܸwwޟ|x'|t]ê8}EڝRy۷^q/?Y ,Kpֶi0ԂP:F\)UpVYdQ]uG8ųsER*,}/u8}l dIrJHt»@ Cfkh .Tz\c{i4QAɈe+@z:PG2Ky$۴GUd%'m? fsg̊q2rF.{O8 τ%<bΰT7Npvu8^*O! Vj+< [~>(aZBgaKjq{=5$`5C]V~TXMţjz,j ^Ӟ T nW/+E1\RمˍF 92,jWi$(=hcod{'-GOݤ%Ǎw5 YoQJ6jRl +Aq?QA_ʺ0e 8#}~bE*{n ݋H[owwUm}D>uԵt֡4X{8{8f5#uwW--ۀܮ@F(S{aE$^A{a@?@]{-ӅԂ{ "(  `!P?,R X'[׼?#uU  pL-X/r A@`+@@:-SnTumQ<:g( |< P @??*jN@=?qS@@ YA@6Jc A@`a 7@hlX A@`?6p0@&pz(䏍6 ,@6Jc A@`a 7@hlX A@`?6p0@& ЮaA@L,q-1zgb˓LT2U\6u!HhgHy%e> ;'P? y3yh[Q0^zg"^DzBVF R! Z5ƉRv02e=zپS=}EN1 ft٭ٺR ujG]MR6.?U ed$äyRk㬮T:c1,u "P?R<*/\|8鱔`.R Ie/+2 UV6PTaACf7<G28R1&0$%Ö^bdst3 'z\ѓٲBQ#%¬"7nܻwY;O>wwU8cpϺЮ]CH@;7_tJ}WE1*nz KgggF5^z5   06  E L#SFnKu-T uZ$GvsC-g7BG揾ݑtBE:-ǽeɠ܁-34l˕VՑW1k(Q¨hT Mb<ó:n'9jd"tzڳ\==)c5iL![XV&lԔHaₖn "ꫡE2:h+NC])S2ހv EmOvt${4-^q FkYFwV|ыmq0dJ&ІG}D؋1Y[Ba+vJ{a&aq8C!לej E-6?nI%&[XW굤̥,&j6T[2 ujg2fA, Q Y]@R0eI)EFYwז.tP<:^8Pٜ g1$R9U(:kʑxRFy;ꔅYt_SzQTFm)jaۻ!"U*I)PdF) 0*lB(P[wbj,E'ko j}t9MeceD   tG  p?$t')Q@8f  НGwP GA(N@wݑB!䏣hf8   tG  p?$t')Q@8f  НGwP GA`-c /k]Qt:8  e#oǔ +^S񨒔fEX1m6M*Ua;ΨUZ8t P?((1E*EC/5SyC%)㊞l˖0aF:e1/gk5M(](YMqA_1Mcԛoē‹JމҜ:n|Z/2HH2U  iCj4Vy@j?%12 ߍZkM8!P?ϕq(%^ FW xe"@Sa( Z5ƉـRs02cv͹ߋRlj+> aݵB)(1%OC{0ij\hNì+R +!P?]6E=X>ZJUP[J I̲8Ie56 '~vV@ @ E2Q1&0$%R`eE(F6G7R|=-+9{.5"[(Z -8=??qƽ{/{w/\?^3 z5d}Ew}Uy^WO~qvvyaTC8 Ѯ] hP  C l#ЎPP  PD`aްg-Eh H5DE)+Z]ƢuZ$;"EwpKh.{)OM)8'oa-X-?9sɆ9IP V*I HJR z"QWi$(+޾՝Xl/tsopգN)eI(-k&c*l{-}x)FyzUϨ'Pdͱ !ՑA#Oŗ;&92mv$8;z3H:66#KZ {:o3 BuCֻ@Xy<{HIԏ1cà*X1QdG.> yW*o}vx  &  OlWx  &  OlWx  &  OlWx  &  OlWx  &  OlWx  &  O?OZ @6K,a  p{{XBG8~_K/qu~?o@@j PC6ŏ{mb##Ql):c #A@`0Xc&XŅXɇ3/y7,e=D]kR[\!.u]HZjA@`. {>  iC~*X?c2X@@`qgggj  Ilv   7XfT   qU (IENDB`n">~ow9ƻlPNG  IHDRHsRGB pHYso'cIDATx^]M6 MީrdmG9Aj=aEK42HyOY//?~ojٻO_`b-Ipb߃?}3ݧe8*9ApL?(=/ |JE/J8MXugߧZ@lZI] Up*\fa|ֲ ƅ.)J Ja]' j`:[s/~}< ]3|Sl']/Ҋ!p3R$hH\xbwG-8lNva'6Tc9!QGfFlocG.Dvc1s?GMwDoZU 68| 68>QWk ׋tذ,2y,:gI|C{ 1˥fTF:.&j)+Q̢dk ґx"TO!rb 8&:%҃)MVU0"+(H{u( hƦ9itYKf\ɶ~K6Qv v'yfz@a5lϪûK35%x U54mo3 Sz1Ͻ]4evC̀!&no;&'Yn2H"?񫡝_4LJxME?}ҎM>\̋$6Yr a^ͧu1zZwv4LpIJPMTĀmhnѬ ߅jI3U UECa>Z-o%Ԣ?0at ^%za9$M; NeEP]vʋe`+S7`] El^e ɲmYӆM 8a'Ut[}M5  R,4R>bv:5&5T2X @\W6$'$Dž8zp8q!+wH)wU7\bR7!ponZ0]Ǥ# &`lL ilIA9\" M3i ٩9zqbRWۉܷ񞹇Y [`8]N'ӟEgR!*Hk@na_XkaNReL0Yq9f7iO/vc@r 8lMi#Nkx̐vcQGBp {3je^r4=ZYVa&~Db`!~milHs۬l n+Gpԃ) Eޥ围nz=n5E^ -wѷDNfΘ9 3x2G;c\5g gtl`=O"vXژG/U8Vv]7aw'JAn ~֨2XLv/voj^n'x^doXޑ+nO7 EleeoX.V^/tWjΙMCü1FɎ^(9/\A OX" o8znOtCt = حn9x+&~AՃ_] %NvlP<06Y =֠t `47li1T,"^g5c) |)8ЕU^`Ng͂v8q>L`EUtpJ;m*d<1J})QXk!I1 u#)H }cu[RBLv Hm6U* ef u-SQmv{, 0ԟ͝~Jk 'ql29ec2JZ2l Tpa8]| k# G cElxKl,`7TAs;GyzV#>&򔴓IIPz 8͍'6謶J-+kz3؉BYMgYG LUI( 05NRPgD!uW2(~x䗵\w1ϢK+}YX@EHK3 geή`b?#=bI9[sNN1"PUz_Q`8O/*8.#y0e,s4.Mа{BuM+DTRM48,t\U9LY;j) RgK!xAhhPpDIevJkը آFD!:vE<#m[ȹ24T7L7[e_Ϣ8]6ޢ3R;g'8.f15dk4oR^V xa!QZs쾗]=kt 1L-{ 9 XB&W_}wG x@%y0_ |0SQ~zdfyoΎ/~_~]ng<9"=$O@)k5X___\rfύ/H˧?ol}K#l6Nw@"Z7_4zSC͛h@\W|ggH^ڝud~WS 'D/2=׬vމ__JgOs>2GLw+ɧ2 =(:2OqcǟZ.{yDֻ{ys%岅V4Z,  TrכrZ)(]N& 2J=}!`O>'ҹqW?jmNFZޚ_-mcId94Rz>@e%x5F( [i+I{sWXv_Ap>l ;~ߢN;:?R6+!X195o.nܕqn&y\ U6^:P͂}]:(Z8 Xz>zd$oL^NQ E|[$"՘=45-]kl&tN3}PX|V.c5XIIDXr_  R玹Xuvd15(kf;`mfH^QD|aʪ{Ƹs'ӘM+p(*}W)-C,Fc;e5͂+PMlšl8ٹ} y}}OR޿+f7̼v)sQ^Һ5Z^3.Ε[3d( s% $tBssO8w` @=C@HށI'dK;7D y&!p.w["*zvP>OKdOlKU4.y Oa ߶@Qĭqu?%:"dJ-L7{I9G'4>u5ʜ CcIW䥿S[MF㱅?=R)Wș?D &488s(K_izhdVϪ劒@& fZ8S8e8%?21~wMAwl ǞNhi1;dVCfgJ[*#ݽ8?%͉!P-^a١ųMk̿ҫV^Eٍ5;g8ѿ燯j$Jڍ͞,y14r>$Y#W=.kVz]X#0'Kϒ7v3w FnǤ-}ׯ?q3G4~VU^W wgώvPf ɫxc,:z,n!`[NH3ˑt^D}GǬ(h0}Ań'd61-xX&u? 3 / }9 0HJ8@G}@@J6BH5D;(ل  y p$d* QAK޽ol)8qKMj]V߬YCGы2vCP˦vk[>,xn`*7d2ho0hI-Zui#&v|%@}M+vxlεBl5IITZ %h?X9?`}1\p (rɛ]nAg@7BpH@8wV@/‡YM8wx>"䝕o !p$|-'0\xc>g?V6\=-iBa#!a-U;Ixc& 8xdO=To0IZbpv75%b6,88߷%.N W]l /;g3ہ9ΚAw |dض Ex"V:c iNKL4e&i .0&# ;ukbW$/huV{"֔=X+'{IMҪG)''hBIi%++V۔v3u9( ) M8IfgIyolyR˩c˟be"5sX!sV4G݌~9 3}LcǠdS+@އw_ ӴF(!tdrɛ,&!@Jxb ?ƏV҅@$! y[ g!6H^?zC[@JBm6~"m. <Җ{S8-N9=2Kmo0:c'"_mXCS*w_ N,\S[arɛ݁>B`>cLfMp-""@`HIE@$I@@6H.B yHb؀ApEE; @/8Lz+vx ;ROi$g7\O\NeM<[x4ⵃ&η0ia[Gn-_+GrA$;e?9b5RvµϙPtxXH8LKJآ֕؆@˸l\fIҎ[ ֌l,5f?+y#صU[ 2docse﷮F^'j ֙߁|+ +{>Xl]bH_KK^"+W78Gk[k8E驀~AOA 0Kjؒ]Jˍ\cϨfH^OhH߾8wXzOf ?ͅ^=<0f{-eK^ VdU2v(ku-ѯY&PQ]%4K/WcX}-ZwO<,)$bP*N )o6C*" 0frouduxT#b`uSBM“O_lA'!- Ŗqؙ|x$Q$@ MɣB  y%P!$"lB L'MG΀}32 079B@ctHt Gɻ=#C - h?@x4sB&7=)K^"7uA>O]QݙTWtBI- ӊẐ,q *gh1Ej1ǁ(^$o&B^C"WvDzFBW/b340 ]n}SSֱEĂ=tcGyڥ%ϾIz샆`Yt 1쓍$lgϬ]!Y#XfVWBv.:㶴N İqe8SlΡ\?MYcŐ@spбvL\e)ꬹ$U?]𶑼<:E ep٬jRňf d ˙LeW4"Ԟ9U$mSucm$"N +FrԬlcL 0"17ʾ3yЬ98誣Y-*uIF#?K)J}j9Ayn5e9[U 'Ml:^j_W]$H:7d=1nq$h{R3HxĶsO=mxOwfu?H3 % -4 DHJL@Gi@@J6BH5D;(ل  y p$d* QAK olY-Ǯi%0\;ũ*}[R8u?i#*:YٓIWZˮ^MoVN j"=nlҾ#u5I,RdGA]#.y%s2KN & .J;A95Q3mUNK;nTH.Fflڒ!T[[ ҷ;\sլdY Yu0Vܮ@:6׋~ kDEFi.EJW4v&b|l>/e~c Ięf'q.3ۻx{yzg wW2zJ.jeսřxߧ[!N9]'BOpUWzϮLSTztF竺~e[򺟚>x@NHe'7u?! 0` 6pЌҝ/#] xpII[{@OH^O؂'- ܃z@z 8$o Гד& [< a?ȳW-cp6hj6&grᒗu?i.>2PVEk)IWƖ&"roEfp-U$L{t\]%$y}#q1^I oXLَ^3O"}sjU1]z$ií+ye*5gig ӊo@t0ţvfyL W䆃hu%Ͽ4I5Zz^((%`{yii#4-8\jʙgŁѧYXZF ҙN{.pDUNlsFqS9'-Ѡ??ng;?ƺoB,kuzcs׶4Psgoy8uL*`g֖nj;SM^']SwЫ@cЉtWY+XAJ XW>i9=F>u?g!f,lq(]]E y+d IIXBDɛa  y+d IIXBDɛa  ز_|"0\.Ɩ<~Wt  0$ɻ-9^xip@IWYKp7W'{08ht*q^W/؁ $y4Jd>hJ;buvf;o%cUJth$nwFIQ9 _ݱPgXWolYڶ&>;S˴ڢ\j<  阼Ğ^g/eT߹YS4h$o7ز̧Jge|)iph̐ol ׿i}Itone;R]%|3%. ,N[ْgq nZC'B){i&v,~*yJz׋nzEnvXY] *y- o, |iԴK \.85_+o e9S9  %Fst?39l6^]N4W-A`" [M,oc5jqQWx [,!yDΠN8wnw$d@?˛|`N";xAaؓ~q9?ggD @`|}qp @9C`H'tG` #LB&I^pKEotB/;%6:oY}Ё۽R:OF$]R5mqǔ gx{,XI.Fa'V"n;benz1vaӓ.b#ydM'S҉/2UYK`9R-7 ]jIcCo<ӈBԨi֬3ӾcɎ{x&|hA8O =G s<*xHgv^k(14`N]ۈU3}f=iܰ'Pw;F )Q=Vpf͇ͦ 9dZoW9gi E,qKޕo'q򛖏`2c -y]TꝜ붙mw 3p eF|f#͖r-yJjOջt 54sW=ޙ<>Zsܷ/yϮфV!rlu =_eag~v2'd3`3{XK X.x蒳PΏto,17yU.v`1TIItW<5ҽ%OolDW1&fe>{v9bŹu @\svV 6ML2mb& f󨥞?a[M ZZA^reY޸Yҙ93D@Yb^? Q {y y=&^l T[ BVi,YՒ`,OTZL`Xvۧex 5fyjT4v$,oǬ3 Ѕ#F = y{ /!..1A#Ox t!u@`HyK@ $ F@{@^B] y]0b؃@gfgg n>pV%y1V ˀ (QAMG @@J6BH5D;(ل  y p$d* QAMG @VW_DP! n+P.y k\BM@^ޱ'pH;1 c yǦ!p"$Ĭ3%zN8wl '@N:1CXHޱ'pH{˷'b f@^ {nDNH !pgyGLYޙ5 p(y18ruIENDB`Oh+'0p  , 8 DPX`hssJoseph KuefleroseoseNormalK Joe Kuefler2e Microsoft Word 9.0@@@՜.+,0 hp  Concord  Title??cQD!6?BFR8lH {?v2k.,X$ :nT'ˎ?U92vL;dɜi2NyUWO[PF+ş:^{FH`*'S`=Ω*}gkӹα¯MD8)iyy}ǫ[KZK/r͵a{يIl)%#RHXUtHGmci? -?q(kqXd:#FH*h~ PQ6|Q5i\v &4_U6OTH<ڜ5m*<=P8[{XwOH qjVUOl'sΩDc81*1% ?v|zIֶ ,pg,/.?Kr|EUG1|RE鹩3+A9?a%?)0kxk &Ta@Jq+-&ך+ԭYOf?r @_|_ˠ}}zU# PugZnrUvj]e{cr4WHٸj.:[-k+;RǦ@1|p.>m6%7,eC?jR6S4]G`q\.KܶZI>~mN|+?k5EZ3/sGKb}ɢ`YA];CmEcr!U~#_͢kXt6_&>.?+5???,DqcmwLzE8xncnpO W t<s,|a$JɃCG%],Ǹ-d}mtLDpT5?5or?:dD H1w$6sSܾLN^@6?&S/QgJE3G{TDDaG.jn? 5(4fzo5~cǷ榖V+?&HW:k A?/Փ1vɆ8UE"UǤotOrO Y(T& ?Z'&Dh=gr≮h)ֶMGqH.{yK  O<>U#Ij_w4j/Q 6# 㑺f]ӔNt?Jq K71//t->^ۅ_Վߊ>Ǘ'#7ȍ?Z%Lt)1q-mkF+].E>QuG뗴kyKQ㪗@bXmn+8 +XWBy1lz-2} څ޹nU]l ?-zWS}jw/ioU3TDǤ=wzXouVcs7yk,=w68vI(' ?GUb`f2{(!eǹrAqs6JG>K.&?QicM@>q"9Єs/۹@'/E1Jk\D3v(prq(Z{N'kbk_SC[OL39%=$?cm n.X??PMxܐ!D^` %?v2j.,X$~'/;ywRvV$U s_pb2p<bїod皰-z䞾 ~.L﯍}G$&מFژq&Qw%!OǫԎ*idߒc':Qx L6CE_%`$_U%E/;ٻG Jt)J\ψHA/=<D*Τ멂?>?rki.>k1N,wUX'NM]m|?c SU3Ωxң V|?[(0L:Q1i\]k#@،9M2jFϝf6u4;Y/,' czGUb`f2[{^{?}Wy8W%׸qFw  gcM@>!9s/]/`Y -!S~V6Z{N#q_{nP16k h_s7^sVzS/hL>kWHIYWUEӆԞ)-%*ڑrAjי ?VS}WE=4D92զL6>ft` jXUK^ѩ?5F?Z;+QQGU.XcGٗGcyE? gķijW_Zcnm[C#$ ]?,1*(l>0تS;c)m%2T8UrCj͔j똼HnƳirԤX'ۥW1G^Ǽd.|̋ř>Lc7>A ^2YSRW+q5/`~}o9񂟸Gc~dGU:},~ɬ 鬫ȭ<٦ֿ?,P416c?)986F:=1\]X>OM̓ CY;1GԪȲ3ǹmeZkG?L^X5pPkvӜK%I+oXơG顥?KzMct]|m&=wǺGdK?-?fWGMsǹr-<׮c_{U ?K54 sGPͫ"?͋vODϢ5T\*tAbr) >r,?#x1BtseZ: W c> O??q1a([1~5x_p7~v~*w3 I?nYp/P Y>mIl tPOYTǻn;eȞo ?ez^|žI+c ۃ%I1/1x%=K8K?OGHh5}ܾ6i!NrYMQ5$AcXw:-?f?ӟ~3a gXrζc)/?g|ʛtGX%-Lyd?u#R`$KƦ%/iǚX\Fݟ̬wk^TYY?N#?'$Q 7 +Ggo?|p?.?/o|x?\.{L?56]3qDՠ<; =?$?nqO1|]KxU\/߸|/r_^_QK Xzǃm<[ȽhvHqzsob3u/|c?C^2x^}0'H^0k]/z`CV_~9o?><]*  2r,q{ZcV盒|y\zH\&1}kG4{Z]mg${;yonl*σj uQ} X[Tu߻"{۬sVZkEy>luūSuxP{ $׭36`'Yۯ[,=s.-Ό痟ҫ<> )Tdff1ݯ=ՒS#gX? tg\o=X'$nkڠ3)+v.AxH/e[v™T6ʉSX9/w@$uCQL;_v{|{Θ^ks柿 ˓<|u=zY1h ]#cĤĺvZi7j?9jyYe| SA7֓qmCȗ_~>?c  c|4h-YPw]uJ/NsҲՠ<{g?>,<إУ(,*ŝk uܩ S/_?Zunqs?6vpmQD>4WJzK9׬s>><,x/rZS@n[ֿO  i`I5doI/QsqѪ_klYȃ.'[9QpcF?,~{=*HIWfpp`dsn&O9_`VLJ?=o/_ G_Ǽ$Aױ?㲞:կ^|=jIx?dz?!r0{Vdkt!^4Y??؁ $f&` Mx􏯾0.;ܷ?\#^[AR0}KXXYpUǮ=>-5%o🅝',|Kroda֧W_}u[kU?&U~R+'wFdww"? `?<:7U?mc=q?&[~^:*~x\X+XSQnٮL6=6y3C]CU?߸ >L;a"I?ZtׄU9Ǥ6:*]^?3nvQxFlrO\\;=۸^5/qmnU??}g~?a+3G|;k/Gfl6fflal6[?}]~~/wކu;:zkG>7_NGܯ~:;~wNn?%e;' +--H4,¼@gMpgl"\P'{(ҷV~vƞ O%7/߇įT<&ʯ\NvF~+[yZȑcU?cdį=\߱7xt2U߈wT]k|~ wҧ7VXm1UcO}{9>)϶䥾FW]yW~I__ odm__m|X/jș!]zj{o}AJ k][~^潒47HUxٔKj3;[K:_ƋʫU=W]n}x[{5?-75s൨owMן\}es7EEI______毁j__vm?=αu9 kM0Y,M)*:_/;_9hlyjߪ#g}+ݿ ABB____'B"&wz~^2r݌o|\{ ̦*h{CJΩE5wØדxi?6%ϛ|2z3]ޟkk׾)ݽV|ג^÷_+Yj ꓿s_u6______+/vy~![+CYgk=7,ْ&rݧedn)ȱ!<|~'n_QW~\ !/////z8˞rzp}}8"}kcᦃw{P_k^In1j+j[F߹נ4Yg6^J;wߝ=*ֻHpջzwXL'Ň׻L8Hl'!!1AX:;%¾tw߻w^O?O۷.ގN?uϽKo]?{tgug?sľ/K?wߜ,?>~>N|/tOGo}Ӈv[=߻/]}ӟdl~f`F.o?l]o4f]L)?g 9yh@4h<yYzXD85@<<4y44h<y@м5Vy44h<y@QM< pͭ Y^y+L5hҲ5[[D$ˠ-YVyJ4o=ī<2yJhBhͣy4Vƞ'ry׼y4o7y ͣy4U&gsUNݍIa0Vy7~w)6v??-͋ڢE^B~y߷ycw15~߇5&͛_fߟaR C;#QNo;&8ѼrEa Αr ٍfӼ-畋dP#ZX?X+۟WS) {4o>NB v+JUKɃZ| e)VS$@z9Yi^Do r~n|kɝ*kM*ͫ:C^G4,yUyW5/j^-*ey4==|LKZ{{^jNk{}{<1Ʌ_vg|p#VU}tiDk2݂6ɑ={KJYmWG^\Z4on/G^4l႖k[qKX`Wyd[Bh[|[4ou[yh@hGмh$y4y4ͣyhދ4ȁSEwXSx]h^!j_,r#eOռDBm5/:yc'ya4*pjfUs fyqj5/4YAj^VzEhFҼp 5\8u~۸vֆS?ޥy5ol[en4DZap|hQ+X[y4ͣyh@hG<y+<4oͻU_?`pYyvYpiǮ9/4oeW*͋/^f/}E39 4@֡yjѼWò$4/^ZO 7X E*ѓiW+/*?y K,Qux \zyn;yO м|yּxwissW@y؂ R۞ e4o3u4h<y@<<4y4ͣy+f <׼@,/UX%XVM7.jr]Ʊ\qR#ϞJ~cՆBěмHxX<UU 2w=o͚Xx9Ӽ\ setufkO^y9WٷHh9e;{n&=L5 5oyF#{FZNoD.>b=m /wxAvy~ڎBmԝkQ&FZ`[~^R79i^"PU'؊$Tpv/uyGy1ua͛{>P :gG<<4h<y@+,7%ͣyY Լt*+M:Vu,@}i `nLH^ybnjy͚7xjJ'{h^KM ˪ WphF5oO1ƪ̑h>;k͛\-Ӗň~_ xX궇yϫj B^h `ͺV7wލ£м-jyw1/uah^AnD7w ^cu4mQx_4o15O {<4y4ͣyh<y@h21"RN5v21&?/_7^*RJ5Y%?#受ė:-jat^G[U ޜEj7&4/f7xj^h|RxsoԞxQ_^&Woyՙ2]Xlm%4EhR" 4L=ip}Ҽ1Z4im1P♚jUмm /<4 >ffҢ4ouI8 vb%w|&m_$PUj'kgח3!Cy>p 9TWWy/4hBM֦yy@4ͣyh@hG]Oby4y4Ua\ J Pl."!"mdĪU&C pYlG1&m2Rۇ, ?[V<[|sh;4j͋[;y'p>SD:7"y[ӼjuiXgsk4/XA.hwdo*70ߴӼh^n MhL7G{^;d'+94o WU=hy4&X= -=lD*Gh dQ8y]¸4ӇQk .$i/3*3 hG<<4y44h@c*P\36Abvs9X ͫR(8xZk1Nڣ8 *~^NS+jšXx!-y鈏@0J5/|suXͣy&j+8-{&UFatѼum'CIvy0:miV y³|Q>iP h^m !H.)[U)4h<4y4ͣyh4/=OɜdDy~K?F.KdVZxt栽d|_J1y¸A[L^yDk, 9HѼ5oJ\ն'yJ:5/XfziygB#мh^P:j@Vy--=\n; HognYz*+dXjDIyih^G(8DXgW.%UەOP׬y}lG<<4y@ sip<ٓ;ҼD%mz..|9.T5v-Vx2.si,\zͫ +V߃ᄪ'|*<O^CQق *Xl=qy V ϬWGy5BtJry/)^TOZKM.@7w@c<ӼX-KBru*\ҼbMѼMi^a}`[T0Ay4o&Kc,(OyӼ1;lVi޹~.ZhV^],P=mY"`%J= vsj)^F Ŀbҁ׼`I4 SΡy ͪy5/G(OuJ]4OWPRmt!h^%BI|c:TvfۮVBGѼhVmL#a\Q&,Ђu bmEPG:杻Fe.:j^{ΑBGWjc7nm>lм:`)k(Ѽ5{<4y4ͣyh@AY~NC~4Ĕ.1"k3&_I՗ EV( 7.SKnTdI+RU%] tly 1 rs1F*[_}yaKqU;/hVm's,tycjyּ3=_<`5%ҧ=o'ۋ-zn#k^caPylg^mZ H5hdMbd>4/cu`x@1_/1,Qg7|;23H|WԼs8KA1^[IKYK±jlW1Vyмsw'8hg@y4ͣyh@hG<y@4ͣyh@<ya+DBӠ4u5h^9X؅wGмE4*qD"i@yyռoxb͛J"H{o\? 1Eysgnvp-M`_WW)`g4h<y@<<4h<y@Ś;c\l6mې]ΘҼ?ܤ(hW_},r?ibUx;}٭3qg)ݿ=oPF祪"yF4ٍ }<9{ǧTk\<Vy Un5ل=?޸ꍭKs`RN(7z?~ȋZNiE݋܃f5H^NKrӼ`՘;Χyq)nlh{f;Uo 73QՇQQ؇Q{I^wչ[Z[Ќ^L=r]5Ü1e yVo 45678yz|}~}~UV_`ac#B_z"AQl)KcCDE[\]rst! U V  . W ' V W : Y e f C zE o>~^>?@Z4{U/ v(FG\jv12lm?( R !O!P!{!|!!!!!!K"""""""00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000@0@00@00000000000000000000000000000000000000000000000000000 0 0 000 0 0 000000@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@00&" [ @F #&& ":l,b$r/I]u +>@j(    s A`http://www.softwaremetrics.com/images/knife.gif#" B S  ?z"{!<T _1097929497 _1097929989 _1097930200 _1097930240 _1097930253 _1103718572 "@@@@@@ ",3N]_g#&BE_bz}"%ADEHQTlp ),KMcf - ? b m z ~    ) + : F { ~   $ 3 B K S c s \gy|SV-0 twNQ(+or'TZ@j{0<IQS_akn   % g u !!+!8!?!M!^!y!!!!!!!!!!!!!" " """""+"8">"@"C"S"Z"c"p""""#&BE_bz}"%ADQTlp ),KMcf! & V [  . 3 W \  ' , W \ C K zEM ow>F~^b\b6<}W]17 x~T[ryxz 9!M!q!y!!!!!!!!!" "S"Z""333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 xxz{||^! ! U ""Joseph KueflerdC:\WINNT\Profiles\jkuefler\Application Data\Microsoft\Word\AutoRecovery save of DebuggingEHealth.asdJoseph Kuefler$U:\jkuefler\doc\DebuggingEHealth.docJoseph Kuefler$U:\jkuefler\doc\DebuggingEHealth.docJoseph Kuefler$U:\jkuefler\doc\DebuggingEHealth.docJoseph Kuefler$U:\jkuefler\doc\DebuggingEHealth.doc Joe Kuefler$U:\jkuefler\doc\DebuggingEHealth.doc Joe KueflerlC:\Documents and Settings\jkuefler\Application Data\Microsoft\Word\AutoRecovery save of DebuggingEHealth.asd Joe KueflerlC:\Documents and Settings\jkuefler\Application Data\Microsoft\Word\AutoRecovery save of DebuggingEHealth.asd Joe KueflerlC:\Documents and Settings\jkuefler\Application Data\Microsoft\Word\AutoRecovery save of DebuggingEHealth.asd Joe KueflerlC:\Documents and Settings\jkuefler\Application Data\Microsoft\Word\AutoRecovery save of DebuggingEHealth.asdqL;]|_,Pm")h ^`OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo(h ^`OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo(_,qL;                  @^^^""`@UnknownGz Times New Roman5Symbol3& z Arial?5 z Courier New;Wingdings"qhjfTq<!20#2QJoseph Kuefler Joe Kuefler