Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!caen!uflorida!kluge!serss0.fiu.edu From: acmfiu@serss0.fiu.edu (albert chin) Newsgroups: comp.binaries.apple2 Subject: UNIX coff utility (part 0/7) Message-ID: <3816@kluge.fiu.edu> Date: 13 Jun 91 02:42:01 GMT Sender: news@kluge.fiu.edu Organization: Florida International University, Miami Lines: 344 This is coff, a rewrite of the APW and Orca DumpObj utility to dump the contents of OMF files. this is v1.0f. make sure you get this if you have earlier versions. support is now provided for cRELOC, RELOC, and SUPER records. binary and source is available on tybalt in the uploads directory. there is no documentation. to get online help, enter 'coff -h' for a list of options. coff works much the same way DumpObj works. however, there are additional features. below is a description of each feature from the coff.c file. /* utility to dump contents of OMF files 1990-1991, The UNIX Consortium developer project albert chin-a-young ... acmfiu@fiu.edu ... 26285659t@servax.fiu.edu ------------------------------------------------------------------- calling parameters: coff [-OPTIONS] filename [segments..] [loadsegments..] OPTIONS DESCRIPTION -v [+version] display coff's version number -d [+asm] dump segment body in 65816-format disassembly -T [+tool] interpret Toolbox, GS/OS, ProDOS, ROM calls -x [+hex] dump segment body in hex (can be used with '+asm') -l [+label] print expressions using labels (default is offsets) -t [+infix] display expressions in infix form -p [+postfix] display expressions in postfix form (default) -m [+merlin] format of '+asm' to use merlin opcodes (default) -o [+orca] format of '+asm' to use orca/m opcodes -a [+shorta] 8-bit accumulator -i [+shorti] 8-bit index registers -s [+header] dump segment headers only -n [+noheader] do not print segment headers -f [+nooffset] do not print offset into file -h [+help] print this information, then quit filename name of file to dump [segments] names of segments in file to dump [loadsegments] names of load segments in file to dump */ here are a few things you might find interesting: coff +tool recognizes ToolBox calls and, to a limited extent, parameters passed to toolbox calls. coff +orca +hex prints a 65816 disassembly in Orca/M format along with the hex codes to the right of the display. this way you know if you're encountering ASCII data. coff +merlin disassemble OMF file in Merlin format. under some circumstances, coff will switch to Orca/M format for such things as floating point numbers. coff +infix outputs expressions in infix form. parentheses are minimized in the output. coff +label when coff encounters global and local labels, it saves the name so if either type of label is referenced in the segment, the name is printed, not the usual offset like 'foo + $4'. local labels are discarded after each segment. global labels are discarded at the end of the program. coff +nooffset don't display offsets into the OMF file. offsets are the numbers displayed to the left of the output. if this option is selected, all text will expand to the extra space left open by the offsets. please send bug reports. if a ToolBox call is not disassembled correctly, please notify me. if an OMF record is parsed incorrectly, please notify me. albert chin FiLeStArTfIlEsTaRt ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789() KCOFFCMD.SHK BwGPAAAACA(w4KAg2yMAMbhEVAgtAADAAcff GVvTlzW6FAnqAAAAD0yCFIwWCIAAbRRKAUgCAEwAAAAAAAAA8AAAAEAbAAAAAAAA GVvTReI2DAAPAMAABAAAAoDAAAw4AQAAAAAAAAAAAAgAb9gOAUgC6AwAKs1DDAQB QEBHFowWAMAAAAAAAAwAAAAAFAAAAAAAAAAIAAAABAAAAAAAAAAABAJACAAAAMAA 4CAAMsi78BAAAAwBQBVQAUETAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA3st)HkHjQL8YEERAmQhCooRRHLFB6sZjUScbGOVkpgIDMqMc GORSpgQD8CeZHNUk4E0BUiNcHETOyMJhwA0dmNfewgYDawibGOVKsIcjAq(bmPJa BqJDYLMaCOQKLihYEQcYHgUH3MVDwGEMmmboy4UBwzcLmjD98wZDeoocmrR16wpz wieaEABaQoUp4audEEIA6okpEG6AmMbGoyBj0EUOGNTS5spzQz8bysX2xMdJkKMb yOdaROlKCaydmOPoSzRwkBEcXvHN2MOjk6OIGPZpbmZzoKvbGxndYjhTGXQVmmrH lmZZGCvbnOVO242pwYdagOdDaDeygeOpEzZoriGzC(ruZNOeualjGOnX6saH0Y)M 0xsZRsgTWohDkv83nAXaPuRDDip6SraqrmAaTAEml2Y7MNPzErTtM6Gg45d0cCCc jgCQAJdMn0IcTCCED7A7ggmyKHIuNMoqS49i4S74DCq6GNTKsGqAYqtNOOKaMyIQ pEhjhGkczJJJyQLMJtricEtMuuCfoJM2)zQyvKsKKmiiIIKc6opKJKibRPJfq6vo sCqaopMnB2wwjgn0NrROys8qw5oyQogopB06lnBJKkEa6Ipx6IC7jKmOwzZDNI(U 7IJN28rwDoiRa86vFzEEsCyjyQQDDqEN4s4U6SFJga8mb2czMDtzqMdjlk4U4xNE tW4oouJbF4UBpMGlgqhMY4IC1wT26spyMmGHEuWGKezgLAt5XZFhXlsaN1EYyYs7 NwHpsTKhM2Oql7gBJSAFtPBA5)lxHOGnEOWc70Y9zPJ8HKgrNM2kckybRxoKXX3C kbRjcHfLqdCGR6Y6OTOBbJwOZTl4qbJNHoKzsR2InUIvGPiNqiiOIb61N3M9afDz nOAgFDLNAF8zDPSYOYaTiEtVWLUicYbjqbWJApJDCreTDbM3SakyZbRTpwWZjL4e C2cbTgdevAYQCAxPkfJNKqhNnezSDMNojZ6WOUpwooeOSIeFV53A1wWWsBNvis1N 76VMq5AYEMfxAFDtsLn0LezEKUGuMpoUCzAdjom1089Ajo3U075DphkUsK38L2g6 s6BQ7giWhB)qqawNRbYAMUQ2E(u7MMymAAc3emwYqNgUabSaPzreI6pBdHzTaCih OlDYvHOOzXcbpaLDqJqbwui43jaH33JKQ8UnsANjpeGyMrMsEXhtxkCmtQiYe3eO pkbz6WaV6uyw5s9zQjrtRbNICbyMm7oNKoph0YQji)u)k3kDJsRD4dmSKXhUz8OZ DEKjWz5xc)NMilTIR0E0hMKah2UoIanDwjhU0cwcjgKVAkGkSgSGVewEFHUhEDta nSn6qxhI50CD6ME1mnhQfha2DLoDIshAlatgvUSrDMUuTKlZk2e4TE8JwNgUlqKm ddKjMEDWDR3GBH9giTHoyv5i(KEmABKmy2ddYSdz4ARNMASNDI5SwgMkgQxhMLGc AFtU3QhRmSPErkKDaG72HIRZPEQldLgMCB3)IM)P8D2JYYVGiIEUILnQIL3SSu8w vU7N6YsUZOAQTr2gBGTL7PCKlgpKaMWPkbMEL0BYAnniVp7ZOcW4XGuIlpNVUzPP JvEyuGdGbMg8sA51Q0wPgIeiPfsEAtMMMFG5T5bRIMJIQXyRTpxCRMLrm0D0DUlf Xyg39YwEgZE1LlkhgO8MyBhGTMJi4X6cnSMluakNgMVAANVGhmkR3oEHTvDN1wDH FwXE4vFye8VAeoDBkD18KnjRs6bCs1ZiHsmYnjbDyQNUO2FEza2CyeZwbCt3pi03 7YsRdPDqy8Cc5VgRMEacpQKFhOBI2YTozER(Ve7hJI8IhdzNW)5AluJRIYIUXC8b GJf5MvNIr(IUh)hyGKj30YoPbSnTiZI1UIp2D1U3NIfKVCa)0z4rDAUqcRV0GDp5 xS(My1WWuc3AIbAxNgMZO31Wjh81cOfFfR26kU9CZQbQmix)w9WAKjd0C0qVJGYt Cj0WisFWUBYkM8X7jf5GYIgyRWN1z5SKGnww2clKcFE1TE9boaVSgtOmNszUbIIq HCo0KXDqS0jTclYEfWI0iWKBeGlRLEDTivngUMWlHRWIRCa1OQbgZWxKIC)QUDd5 W9ixYD1d7MHRAQcpsB0VMhJwVpWiBUOK0z)PntwJOgJZ6xebdDJIbYgbOoSlFNzM NDhq2InOu3jY9ICv0eIWq2VJ4kojVoD(0IHZ0Kvnli717JhE)O((yGUEbQvQu4My SS7Nq6S)ZUFmjgSThZHh5DGKIV5iVtI4xi(iUX1n2h61jZJmp(c)YtR8prkusF9s SuoxNHN5fWMsp8zGzenZ6T06Jezk2ZEUUHu55pvRF5gK1DstJBPRGcWMm0AcBjlp qMYZxmCx4eAmDL5DiIJGCXGIrd7SoSdOxIt3okDq2rlhxiZsEgsIWdxHjHHPmqTT RijRw0b4yp0scrKKJWqnUOUiJNSZ9sa65af(xkZ2m7brU)IYAO4dXAZjWLcanW3Z cjvuCv7Grp9cWpnTcFR05MslYqD0vMjGbq6CAvgOyopZwe3MCxR3fAA0bAGgHiPA 9kIsTFGbOBwAYbU98Id3AMAAAAwAAEAADDgOAAAAAAABAAAACAAAHAAAVoFABAgB DsCAEoxWkIAAbBREAUgCAAwADAAAAAAAAAAAAcAAgAAAAAAAAAAAAEAAAAAAAAAA AEAkAIAAAAwA07JAAAzxaMNADBAAZB1TH5USAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAA(DAAPK(2JgQ0DwmEICeMgoykxRhjKRkUgYCERQFo JTiwVABEcyyhBRqUEEIwRSJrNfyMgczGAArYMSaY1lDGJjswHIzkNwhjYAoGOZg8 pljHhCqzFLwA1QBkUK7bMY6UvlCi5CNzpO9I1dTkJAJ3ke8QJV5mxxI3gDW03sBB oBoaObmEBBBHZRJ7MRSOpd5mZyJyIYzuygBCIzsYKLbs6ACldi8ipJdewdrmJZrR Od4QgITGBwL6nYaMaBTz5BZQoeATWqDmWwSQNVzw948GZS50qNzoPSjZJBbQMa6M OlzmZwbyNe6UrozbdMxT0bwguRTmgCozt2PPEdzmhB7wOb(8eIbZEKxPuStwlZDG AIocNWQQ9290NszfpZ4cuNeG1yL6Nbe3mLKHqqGirBmqQ7wAruHZ0oJNNG2AAAup g7QoAqGScu9qO6kMyiWM04QjqOH)RMwMF2MngSY98PbqLgG5wCROhMikSb036IqL tOuz4ZSA42w8Lbq6yczzstsLiNzsIFlaIK)pzQQEuPB7nbQtp4IaDDEEnnDjyKIn CYQqqoIloplp2EcoQgnwqnDhDJPucI8pcrM8yzOv1mRD6M2YkSS)T4IcvOX2oNSg PFFbECHKeM6DSMc52hjDI18mqdJDBki6KQ7xa16KEk(OMLu2QvMFtSgGldzwOOEh zq(N7Q4CxwPQARNDAnKJqhYyoLEcMOKpwyCr0yg4j0hP7woyyiWQUBRTFXbZYZuN 3MbSvvFwQdvCN7m8EKNynwY0TsV7Wp60AZp0YwspojaCT1qJuWpyBM6oEsXVIrId Djkxy7NDaNEz0Z29DZ8otV(E(hf0I3IzQ4skzMLGPy00beTTZp0ITqJE3J1iyj53 0QDyqOoDEUmDYvjbQjE4)C3WcXJD86y2enKmzYIQg5txGJxIYccGi(id3MNqpCW2 P9my4rhFgZOMpZ0eci(ycNleElQMnKkdj6iU(2)tloRDg9egm1bO2V4WfE1hojnr 8yhOLyuLtZxm)dzsXDJ)jV9PmN7bDvRLBeiY)qkES0pcIiEuqTW18D6PBpk9V(Yt 8y4QjSHLnEYSyLdJ8HTthCfMxOp9WnD1KzJ4SnpNKRiaPe9PmZPrxr0crjn0FQi6 DyZli6aD3wq3IgeOQozAjfIFmQj9r063nPSSlhGXthxGRRec2EzEE0TSmWG22LkV 7DW(M08GNznmZoy(DD8y5jkLt5p(XlW6sqvzyZcuYqTzs)5s1t8ZGU9DroKtSsXo wLsssaKptJG5RBBmxMqns0cqLnVDyv1zgqLxm5AgYpr8AosxxCGK)HYbaGQAxSD1 tnKqy4fTWth0yMrMnxG1JLkwEAzzZtppAi0joJkCAjMFhTJza(GZSvnkWPKIn0U4 CgLIVbl1t87tvm4CawgoHOnMnyfzYCHDK6wgkOgEnYMdUParSiv9gaQpIZAQ6qUi xQHZF07uy5jP4xqCHU0UipuSDmD6jISj4m8hTuSx)OqCackoPQ10A9Sb0jvVtDSx psYjLIY10KwGVauk5zQIHW9mpQv7RljZDZ7agZZSoZK1OqYvVnMoookZEEpoJpzD Zs1U5MnFFS2pJQCSeYlnUFyd6YcOTmxmAhukBb(k3wWUkoJpEO51tm0bqBEjK6L5 aaAJ4gMBBFQjVUGE5OgmngUpDwVI0YgiwVkPqxngcrB0XFsp9AdpgkONFJOkFsTq arTBAmUWhknZyH4U5eeDgu1z3o5U)FAkVyj11x2ecSzho7Jzf)oQSQIYzHeqQ7WO oVoj5cad4BInNRkWz43pBidSPumUkpZiaihKm1YFp9Gl5FiH4LRtUKXIAsGalmfN tN20ktzp4BUYQKlBkRyg51QImQESMGhkjQGWPkVHSrxeAnChElQxTkM2EoJthSiK 1g1qkOhwoUFwJECZCjjTQioSQlChJpQQVIEEVrNw16Grw9UCsExq7SgEvFiORhDM DL3e5Q4I1jQJ(pQaoOvsolCSdDwMQu6nG2ZhOpuvjsapwqxc(jlox7nxzGh6bctd TyFzcQoUYj4I1sMoPEShToNvLMWCkGjAUf6Bmxws6krcmnVqLV)jEEqJbgqZMgW5 js5BXDGoQGBA2l1xyFUEdgtgha5FdEZjxbTFKX0VZZgvDT5VSZlGKOgSlyLYw1wY ACNyqA1kTUmuzkQAYoVG(qiobqyqqGADkjtXuh3Rb2OmfDiGXW)ZSfXWo0Wq8Lxs 1YnYvmQr67BjiIRI(8FVgyRdJBqiARDNJIvjIbpJFbAQLdRtBGxbwQksciRy1SIC nFZVaaC0W7(QuLRKCvmysLLqAXeOklvdUrNgi88Gv5DdWnZkxgKYJewBdU)uWFXT 7wi0wVO5bPoaGJV7ozKHaNj7jCdsvUkVBGr3oAnJsUJWP0syMz0oWrmjzOVmSwgW 4QbZ0P6O7ArxOz61cRsNO7RZtAi94liBgWbFsQP1RUaK)2VButRncPFaXFSgdeYU b04owULJ4EAiKGnYrwfbWI2k4Zs275O5Ot58wBV2TIVZMsm8ZhESgpzVUZEmrcpc xtwHW01hsKursu)9PL4DSults71w74ylg5QiDBEcSrkHp1zMRhikurVSugr2ajd6 UO5MTyYQqNRTZRk0xsKPMynsCgWP9bNjxzZ3IfCg5OUbucLll7Wp8)7dnRb9QWpM NLq6uGuUyoADL(UoA2tpJBGGQ(GDXV5iiUWhp1WpONNb2SOgEcTsRHa9OFU0GoBj q6MMrDgb2HZat7ZhOwk9onwMmRAZ)eENt(T5keRYQI0yHUDurnmalQkEpqUV1USb c7dpyZ)06PjtiBAfVnPQrUAK6PJkV7)WvsD7E9u1NvmISraOSg7vdFe9y0THB6NH gdAgu4D0uaMyo7JLcNZLMQbNwkXUScUFLHW9YhNcArUIKr4SWFuBKx4NuWY8rkxw UtbN6m42ASe3vYbm(2y7QgTN96ZE6zF3WzLudKO90LogOYQ9qIj8HmDpBWhJTSEK RXpaf0pByeYNlCfcIdsUJfaj34xspDgcH40j797lLwsg1nRRpQJZR9IAUC4xKK1Z feZ5uu2((d88MQTiLjHZUDNiXT0yyFHq8MTS1NRfFzHms)T9hWdWfvCD4lCrStCw Mfg(xaurG8XKX9XF1YHNRd3ZaMu2CND7fQdphQzInEaMtMyIuM7ejYi2pMg0aUgt acQUVE51YFdvnJeQaATdsID7mBVYUEQPnNBvoR(YAZmN5ZkjSQT84ZOJMdmtsEYR XQc3bBxclZLBlJXwlYYWqd3fUYIh2c6RrM2VSdyrac5XeNgUadPBeMJdScnz4UeM qUk5bQbQwcAPxg4RpET3GYFWuNRYrFoPocFoUVGHwc2ofYymQcUzUAIZEapMsZ9y sRvB5RMBtZ10tJI)hUeFuYa3GUxsIdUUZg4VBSlCjcAyvdnqGBtZEKyrQdxtIRyT URms0dBq8YdzUg9dEEN4lgIMYB7ZgRMfvchWdUAmZIBR7Nlq4dAXdZSxCE4rfMq3 SMT0aMNIGFrcaQKpccFI)cWWnE3)7FO99YzNIFiylFkxcEyrPJmkdEBeqR0sfVf( Gd0mMSRY5hdUUJD0DQjSCZR5jZlyjZI)Lah)LWE)gJKefZg9LJKy)heuAcdWNaHU ictCtJTrGBKIQZSUKBiaMOWO1Ma6QVDJagfechw1tUeLwZrBGgY(xFwbDQSpxdTE xRTTxZZWlQIUZQblRFmwwgg2dUMQGcnIBeHJGgDRgI3IdM0mwgAsek4KnYndFOUx mU4sdEAzCAdZVEb51VxAhYbRXQcOFVFnUQkIEebiQKZRcNBAQKM0QiuaReQDjFWK qlAF2knF0I4d1dTUSKKWSOcHUME5AdGgUAwd)FRlSQDbHE2KXEp2lgYeeEIRbInL 1Fh9JBZeAGOJqBLI5VFA8cAxuQxxHc4pscWqCQQBzF11HKlNQgkUTSAytFq)EK73 EGkX(IcBTGYqwECuJlJP2lqPkZwtTiUh8E2sbFjWzkYQkEUnUmJf9gl5wVVvUKOl 1NBXwh89Vi0IakhExlyVVGqcVCscSepzQlwKFlkLdIAlmMYkkVsOXMCNWENm)Jwk YOPFZA9AaenMuksNUmzqbZ3MGYCpdUPoCE46BVVhcBBbPWyGBGX1OdSI(BlbdMXz xEtYvIpGZKmNKVF8(F1J(No7zYVTQdxQ8UD)Qig)QmSrQCEeQOWwRmczCEejTAZK kFGUJmM4eVUmaUQ9SdZcyZt3eJxdHZE88cNXrQcJhVJPwJy(pMjjeIrvqMz5gSN3 gGPxyduaTGBfaAZZQmx3bofHnYKwDRY0JqMQ(MxJyBfdZVPtHYjAcM6ZBVl5SJ62 6VIHKRjWdE0KZMohdQg9zgqHgq7PkmacUqFTlIHWpcsOidhliMNyoFPQJNqa5k7x HVOGdcyOtB1ceFhlbIY21MS(jm3AeYIojCaDVMJxsQIqLdc(5F2WaOAGjO6qkQ0A gJz(pe0AhQmGikEY2oqdjEVPdGeXfoHfDQ0keiR4ISm9(YCGmQ8KHVTybWxN6ciS whWg9ZlBYqXNjalKbIjqQZRYUe7FclEtwgEaGadvWEEwZQPPgkWaqYo23U1DZMuv uF4KwQF)rWDi2hAyhqutNSTbrGaEHEWuXA5bFhzhJN8JaMdH(Z11PlqTuFaqnNIx AWw2ghI6YlGTocQpdANSWSct8JFz1JnkGMBGCNvGkpIB9MN9vS2R1J1kKZo7xINU vOLn6FxbGKrNjA7YueapPJmemQP94RqRgUKivGikxJdRuZQwddeOvt2AAE9smEIT 8MzwkCrZTKheaAQaJFTviAXNnJRKMWnNaMY8IV8sbpCL3hyWDilsTcUdeV8)eF)l 0iuAUMYZKO6FkUsPnKkTzqeWbkZItakIJdmHdOTlZM0JwtIKTam(JVjMiAnNoahH 5YMgUGKT0Wv(lhi6Ws9UDlm8CYJt7Iy)OVqKaIIWVod7To07XsiC2qFVqIbX7ROR RRb(mCObsMICqKcD0uqe3qrrrWA)Rh1)eYun0EJw2m)C3mRqHGz6lWvt7JiBzWJA ZNIw4M8s7d7AqJvgSFwxSoTNjIf(vaFQWMvgbdMtUockNGO0DE36wUAhuAhRMFMU LJpmeWRJbcrYUYcb4ZMWIFrW2IgMSEjq7EXJiW176Ziurpu2xK1P3K3UoZgnzKg9 YsL5atx55VzDScVi7E7k8IjMyA5cpkDa4gaT(G1xVEOJaEYy(kS48gDkLJBRGoPR iJmFYaKKQhhYUW)ASYX7SN2v3GVO)SYV8iolLOdNrMM8YAfddkSnfxgJcAlbHUCu 9JBgXoW(vIIY0ZmG)ypCDnki(aagPtgknRjdjWAkaER2qAmI7YcIDLhMdBkbyODn 8NKAAhkjDebIUe)BFuFrhtA6Ox)QDxiUTc0ScNxuIxyPCv(2pU0Cls)0nsS1ps81 DT3ovti6MhizDLMA)M24DzTZEHzd5qi4uRWCGc)j5sLtwyRZmJcqaFo7VQ2jJtB1 VEX6HvH2DMYe9JxJtOzFZYLxGoPYU8I7QJnCIeybVMceaS(bxt5H6NZW1D(l3flF pz)I7DHNCQgoYCTwCW(HD1rlUxZKjk0KTQaWE43lLkPSqMDKaiWTmc3Gs8GOcGXN sMnHshpK8zwxs5rKbJNwLbdySupEx5FdSqtNK0TThTLaaurSa8SpB8Ymw(EKyQEL 0KIvSq3vSiEe1cbk0ZVyA)GJbmecCShUr0UZHLvNyORFEYhMp42jjX)jyUHJ8SXN Rb7Ux0PLRItqyYVTBHKinVFF0K9GVb8FRA(LBJAEw7EEUsEBgLFBA5EEQmVBgkzN wUEtgFEBAXEGQikHgA10w9UBR7ABwDCBlClVA7UEltVEQJFB9nDBwaEBAj0Exqg0 wSlE9s00ViF1dvi0wHk0NFj0VZmVtzT1dA00A1EBtoS1QBi1AhFBBtQBhFRBl)VV lsl1AkFBAA1FRkRBRSBBQw00QfFBgiVYAAVEwe111H40tIGBwfVBNkjVV93VluFB kskV1C2VdqjVwP00lgGBAe0VNCHBA)EBQTEBVjFEwTU1FUmAtpoABHR1VBm0gNFB t5DYQlUBdkp2dQWEgAC1AGkAF9WVd14XQ9U1tv1VNDj0d)k29eX1FpGBRtCBl)FB dzm2NK70w2A1Qnk2dqHBNIJBw4kFQxEB16WBBtiVdC3VdBn0w3UENLZVA9kH9sT1 dxN199eENySBN6N3d7UVQ3EAQMEEN)S1Ql01NmcExzi2xwQV1OWBB4n2tBbBwXVE lY21AIVEA)UB10cEd(23tcFBwO1VxAHBQS12dMv1wXVB19FEOgw1B0QBQ3k1hqR1 dnL3N)z09Q02AgE3QllAiYP3(Oh2NJWVudz29rr1QaFBtV60NUDB(mkVO2jE98LE wXVB9m73FBX2B8w4hyQEOzQENfn0gJVEgO02VzmVNsEAO7R41am2d3S2lHG528CB tPEWgCCBQWU1N8C5gXlAwxEBwCS3ujC1t9e4dj31dbT3Bgx1OwG2ND0FuKE19Rp0 tZZBQ3g5AwE29xcEgnlVNAa2NJqAx2g2u7gEdfHBx3g2QKl2teI3(Fj0Fr31uyyV toaVugWBV8W2VN3VtmzVeZj19Lk1tE32N1eBNQXBAK0FwVE5d6n39zHBND)5NX84 NtqEdYGBxoABjiUBNJuVeam3teXVhzAEwyEEgPlE(Xm4dBOE9Uq5xCB49tp2AWE1 O3h4eYNVOk94uByFNUc6d601djz2FpG6(ZA4OXy1Rxx5tt74AjC5dNe7Ack39huA No45uUcVw1Q2QyE89zf4OZN1R5XBl)X7gI0F9iZ3VrF198OEwME8gXFBd7GEPvB6 9LL4BYIFVpm8dED6e1Y5(6R1(CRVdvv6h5H6QFEBf)C4t)E1vsw6PfA1VsU2Ooz8 9yq7OQE2ANF7tuGu9P05eQF1(AK4tVq2NuqVOUh6dc32VhV1Bsg8gR0FNh02OO04 (wQ4(WwV(Tj4(tT9ug979Vy2wSg01vFEN527teK7lzVV1AYVVS02wHEASOEKQjnB a8fRy3gNCBJ(zD7EwS1IC0AkiLjQMtBBhS7ac4JRCRELh0jfMshW6nuXEtayXg4W x6kkzzLWiP)HhVyHXXFkQhGIihAHrUIT0MinyPpMxLbYWmLQTh4GacILMwsLkXFq 0cLyIp0QxP)qIqpUKW8ShluulfymUjVkpKnQmQMaHBikFOrk8x9czVWkTC0wQG2c kOiLSZRG2AXG)1OR37G0hBgBZSkBQPGMzjJgc6opAVWMDnEmdGipaDyNDlJvZA6R GX2MjlE0bywpGDCPTEHvD8kMagmOzEsld2khOlWOTgngY4E8CLXOTGKuIcwZEQ2n 4TjEBJOMZnANTUEFQTuJDHBjBTAYDwkshbSETGJ5awg5AJiOjnEsRHipgDSoLFEv cw4pvTBrjQJtDXasYzmOzDHgDNi5mnGEozEOLyoh22gBAjRgDT24pn2sDgjgD9mM eLHOZnOnhRo5aH2NM3EqYzgVTHgM4lBkUfyMykGjTlnkL4oZf04Hjn3DYzaFGiCj RAApec0I4BikdYDkdg2ek)ml94O8aqAg70mwN5yfZAL2R0AvjGqmQ)6ELlAPBSg( hx0lFDmOY9GTij2erU9FPHpvcUJD)CyGTKhO9uyCjKp4wNcDhCrSoy5IjQoAriky g(7JMOEqAY8s0kYgjJHGMUrDDP4goZ(sxgSqswHBMCxKE(AICBXKGe6bMCEj(ADj omkO7qmMQS4CJDK5YhhpukGuEwHFF2TgjLobSdzRn4MwwjtkjEUEjRXk0yeMz444 LA0z5TwDvrKMQLqvEAhgIDup8n86IDo7aEzL1komAjlvM6rzCikreSiCKIIqwJIE QsgIChgrWkiCLISpk6eoBqjbDInQaTjzsOOgKpoMfe6rJIMSKayuIIGkNYCJkgoQ 0CCmM6f0JSNIYaqInYsQUAFpggCBJKSpgpaIgJtACA5qmeiiFIMKsoGEsPzQQTKJ DzgQFBD0UEUESIc8Lv5DSzrIOOILSDCMBEbjvh2seaaxhoqiKjBvwgKruLgSiBI1 CbLvaX(CuhtNxxwPxKBxkOOZ4C0MWCC1OQPySHKNwgAC8apO4y6AxtILrpmR9EDv cbQreAc0yw1qGfTCJFGco62GmQYAsIDrWCJi0IKH7wV1lw4oCgwmkhBBGGGisaJH gooYCygwGSYDNNsIoy8Nf0grUL(aubqJkyMsKjwnQoEKoQBX68oIbP8cIAety50Y jUW18TCzMva1Ap97B66EspcPXzayj(CwAhOh9NSMjU54Bz4oNuSNsMRw7GArsQiL 2x4IwOsor)9N)e6uoLbpa3RNIwefyyCwtC7orT5isBxSEqBULI43QwyausjiwzTO 0uK(M4hhmqzYWBL5YdT9k09jDyw0hEFWCinpLSUCRJKYw55JJJFFUBannvKqd3ie KHbdQ40Y3jIwOtz6AzGWXsTMzb0jrRMcKXbyhFvzXqZkiXEC28xM2waeZkE2Cjhg xVHOyzmKcIdqUKAhP3K95UyaOjbwo6bV7kUhDEUDTLg(QEsEZlHrhx4SGivKwFm9 8rSLwgh2((CG9VIFAoGEErM3wRTmb2SqdD9cwSiIsWBDC59QKjLWQ0CEgECPIFlJ UaZiYaQlGiCkfuRKGIhKJjukR0XPeHU1JqBYhFcuQQkIz79S1eowvUDEJIOpSgNJ Rzjk6qZKtcBXWcqwERExQA3aU5SuVy8BtEUodFIakSGuhS9gMdlNyHPywopBQuWv jT7MGQqtBJLNfCiUeglYCSIEpG0ioeXPGqhz9hhY0IbSDHppTofcNPepvBSobMAe KTklRmEL5QjI0f6A(VRx3dSCJqoaZ5luBHvFtVZqZUK0WApGhxshJvjDRKxw1eBI 0QKHDqCo1aLU9gDImezJ0C4aeUs3hQuMzxSLizcGz2MtLNXHlpln1Z)XQE(ubfi5 bqMvtgipAI4ZdC49IBGAViRnTq71JBNYTET3SaCeYTjpNPyKENwgZcGYm3WwBlrZ UR152IaW2hAdYF(xCLebpMbqGiXIBJQQHeiBLmEMk87BU0RDAyrIkEIUJmzvUY5D tX0AJ)C0OEUwTrsPS3t2CuUDo5lAfqp8KcMRMKG4kwndkHqmmvyME5k4COxagDgx gs9HLn1q1aletWpprXHaa)tWgDgVOBAAYbU988g3AMAAAAwAAEAAjDgOAAAAAAAB AAAACAAAEAAAKsFEDAQBQQAAFowWuMAAbBREAUgCAAwADAAAAAAAAAAAAMAAgAAA AAAAAAAAAEAAAAAAAAAAAEAkAIAAAAwAXYKAA0VjxkDAHBAAAUlTAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA(DAAQCw2NkAWBBlGEbwU VdSEJQDQNay4zJTmJwL6NQOOyxDnBxp0EcwQpEiiITMQGMagplCCJAqxMe4IgchQ JAtpNZ4wNY4GsiHQNGDegMzmRSJ4Nby0plDnBgr3NYe4FQZnkS3wEBxQkdTGIQKX lUGezNRn8LCDIOfogpzmxhTQKJqChwzQs6hAELgwpQTHICY0MBJyvNDW8gB5tZ3m pd7R1QN8qJoChdTQEQh2xgNLvFDihBs2OZ4UIaQmATb8qlFrcGjGx479Oc(QzJ4y sQk8uY80gUpXICokjfDbq(50Nv3GhkZfpNDiMRB7Bd6Q5dNGRiJQga6UKvKRRRe5 uDvWLJ(mZx86mdgTZLDzwJYawClSsdTnxjr6sTDPEAxaxDc2BaaeqMPZj8im4peM wmqSssmVqncD7OoaCqOP344QjApzwuvMOqisAKtO5L7QuPqdkqOOPOiYoytBywoj opgsM)uiumMYSZlglerbphri8ALjjM6wLkpFm7CzCLG9kiDKOI)Ezi)3gwoitPSB mzqJ5EMYQqe1Cy4YOOFOWBRDMCPJqa4MQwwKjhg8GFDjOwwyrA1050E6MOhxtQBz OgElgF0M1c6wRyrymcODl(MlqwUG)0AMIL4n2DCvL9uysTKFfSwCDNJPG6swxmoC ykFF3IT8sMfOC25KMGLQKI4O4YKbjP410LaqIKHabVTU8jCdLigw40Pt5m4cwgd8 QA1QOpoboKIjXx64guhF8EripDmy8Va0N4iYVCQ9vU8IDD8yCrDKjCrIzNaKHSMU SoMpfAhoFH5Uiaix24QrooCp6OPN4qku9rrgfht9sXRdyOjPgMYnrbhMF5I62y1v ejTA0qOO75K1BIqMKx4CiRIr226m8hTOKXTNwqpgW5tQiKN9Tv8DPrY6J4qHKEPB KKoAYDrMd)4oyyME7AXsmwuotKjObw9yQrZmZMGDJb7WDIwOlWC1ZUK(Hvp46c1( Iqs6wUN0iVMYezKSkVDYrr2zaacdtVmHDn2V7Mquj0JizU6wDbZKqII5BPsacyYp z4wAVxcciMDx3u3CNYTvC(ywcPkOMQTJv6cpoxc952Lgpqf8iDqyNC9QMxvF3wcE DgqxwOtZGlpl7z6i4QmjQMoNov6umMIqE16E8g6bOUApuPzZq4UF7Kgpobaq3vHS eoaYv02D2id2AnNHBBnyGSoLZnHt9CW357gTron2toQZ0PGb(vWpOmqsj9kxSlfx 6(uUYuRfvwfOQRQ3ZH7u0TigAXuBDfEjm9QucCK3OBvh6(caeLl2wRLIjUSCSl9V na6AJ88l5ZnhaLtaHMDahRy86NXKwvuSZcat44ckRk61CR5l0kjJcGGAkxYgDfqR HQmghpUKWuui(cSRCFcjgNjC45ngVHZP8cY5vyM)UUpSl5QFYAXJKaaX2khAnAMt KIxKHgnVhPip3qzKdsx6BdJth6cLbKcAe((jCj79FEawgjpYQic2yeitFiTTtho2 XIr8onV4ch3Scr83Mw55JZeBOFNkDLh(5bPyKgjyZ(8uEDp5Bjr6gJEPuhwDFlaZ E8gxDugEwKcHlKLKl0mxB0IrFl(GrDOoj47Jllw0G)796IPUVR3awo6WYhCBJlQq pIEoxK1VxXLFMnCWXTDFMHxJvEOsSKpQnJPf(BFoMGyLkVacQWNhuw)pTvsOejeU vOR5HAQ2njJMgJ2CCn3g4LD4QqsOHeGqtiPNh6vj0BWTxw6tnFAhnK1)TxCiARaL qxF5PeiaANhvgDo8MUBfG4UpiChUOiUWmPyT65Sdo5YqL1DdzPYmYMCOEpvdbsle Yd2HV)yQ7YISOmvtTY(aos(xqkDlbcV)QeCvyD77DbfDGA2TGoJlI(kIQiobmp7s IbKwet0ZRM8ApCnTGiVpB0iaRcVAOIocbRgEMGWHIbaZwEeOqBoxYMMKQOhyhHq) oG0O(JRTdDBElYA8JGmKyT2Stkyu8GoxCK1EYMBLEhfjo2WPCr0gZSJWEoAmChWR wYIEBdSBGpUyoq4GZemlNjPIZnSImep1aaYWDSGaCEWBTbX2SVWE8WYAYFpsHZSr F01HK6VKJAhzRLt5PlUATtwoUZcHUp7nYOkKmqsGFVsMgQjgC(bhoq2UICCsjQCr CkJwzhm9ssMLqEicsmWiaImhSwM47ORh0UnYiSzNMaBRDwiYX)eGt1YEqxgJuPAr OnPiB7UZwPFPdYVidTxsBAL0MQeBlaOz2Ty0M1gCTYJNel3ZxXvqUP7jwDmpJ(J6 0RnxRollQ6sUB3roPwadav5QbulyKBrpZCsa41GMdI6xOWDwl3kO4gN(yI5r20IR DugDJNy41RAoxMXKQaxzH7KM(RlIDmiTSRgD7nRliYcsc99WXo26P08thv5VAmBF mfBPArSsogqbDy61BObX2QcWXEkdVqt7miO6pLeC8VBy5C5UUVH)fY7cbxE6APTl Agap