Church of WiFi: Warglue Documentation ===== last updated 06.12.03.am.01.00 ==========


Table of Contents:

Section 1: General Warglue / Church of WiFi Information


Section 2: Warglue Specifics


Section 3: Warglue Modules


NMEA!


=== General Warglue / Church of WiFi Information =======

Licensing:

Warglue and all its modules is Copyright 2003 Church of WiFi and distributed under the terms of the GNU General Public License (with one clearly explained exception)

-----

		    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  WARGLUE, below,
refers to any such program or work, and a "work based on WARGLUE"
means either WARGLUE or any derivative work under copyright law:
that is to say, a work containing WARGLUE or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running WARGLUE is not restricted, and the output from WARGLUE
is covered only if its contents constitute a work based on the
Program (independent of having been made by running WARGLUE).
Whether that is true depends on what WARGLUE does.

  1. You may copy and distribute verbatim copies of WARGLUE's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of WARGLUE a copy of this License
along with WARGLUE.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of WARGLUE or any portion
of it, thus forming a work based on WARGLUE, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from WARGLUE or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute WARGLUE under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if WARGLUE itself is interactive but
    does not normally print such an announcement, your work based on
    WARGLUE is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from WARGLUE,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on WARGLUE, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on WARGLUE.

In addition, mere aggregation of another work not based on WARGLUE
with WARGLUE (or with a work based on WARGLUE) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute WARGLUE (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received WARGLUE in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute WARGLUE
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute WARGLUE is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute WARGLUE or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing WARGLUE (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
WARGLUE or works based on it.

  6. Each time you redistribute WARGLUE (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify WARGLUE subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute WARGLUE at all.  For example, if a patent
license would not permit royalty-free redistribution of WARGLUE by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of WARGLUE.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of WARGLUE is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places WARGLUE under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If WARGLUE
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If WARGLUE does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of WARGLUE into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

			    NO WARRANTY

  11. BECAUSE WARGLUE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR WARGLUE, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE WARGLUE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF WARGLUE IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE WARGLUE AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE WARGLUE (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF WARGLUE TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

		     END OF TERMS AND CONDITIONS
-top of document-



Maintainers:

  warkizniz    -  ffrf        - [email protected]
  warbabel     -  converge    - [email protected]
  warscrub     -  blackwave   - [email protected]
  warftest     -  blackwave   - [email protected]
  
-top of document-



Documentation Revision History:

  document created    -    06.12.03   - converge    -  various docs merged into html documentation
  
-top of document-



Warglue Background (the roots):

What: Warglue is a cross-platform opensource wardriving tool suite that allows for many custom modules created by wardrivers to manipulate their data logs.

When: converge wrote a program for defcon 10's wardriving contest to allow kismet users to convert to wi-scan (required to qualify for the contest)... quickly and poorly written, it suffered from quite a few bugs, but got logs converted with a little tweaking. There grew a desire to clean it up, and take the idea further...

Where: Nationwide baby! and posed to raid your home at any moment.

Why: While several others (Medic, ffrf, et al) wrote scripts to convert from kismet to wi-scan, no one else was expanding on conversion options and other log management functions; it needed to get done.

Who: converge, ffrf, blackwave

-top of document-



Public Key:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.2 (MingW32)

mQGiBD7otBMRBACZCRhaMhYQ45DHNSL4wih17vZH7nDiOxbjmACrzp5XalwCSpXy
PiTnJ18hfJXhpRK9cgpPjfnY1ETZsl0jDwozUSZAiiCG/yMdcWRPQbiohWVOkqqL
u2U5zkYpXVBCtFDE2Unxg1XeAXbIrM9JoQKRUhAnwlSHsVNXSacDHefOKwCguLlw
WdxZYyXetQ2pG0BLqL7r+2sD/ikF+oIzoTCq4j5HDEirPrZ0yA3vzl3bXKIj2EFc
WiX4L29lIzAWy9we9BW5Z+Ve4liTBGlpthqCJBe9LW22lgtW4xXVGchHItOQgtoN
zzhfZuF4JLtTshNExsVQ0EZmvobsb9vam072KRyfqyml+fcgaH2J2CIlsBTZtTuB
aVjTA/9C8raLxn52ySIM5JS05R5z6HSpTkNGAba1TElxYnlbQSXw2xUA+w3mbKrP
iz83PMAqKHQAkZhf3j+4UF6fmspGAQjav60rxW7+KoBvNb4HGACB33rgkHTBna16
6UL2MZi4aAHHOiO1N6hPsE+AylGb9jPysW2bIuINcHZpaYKYjbQtQ2h1cmNoIG9m
IFdpRmkgKGh0dHA6Ly93d3cuQ2h1cmNoT2ZXaUZpLmNvbS8piGEEExECACEFAj7o
tBMFCQHhM4AGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQoO/NurDDxAha2QCfRSCG
JhxmeAvxwthdvCnhp8gcXfIAoKEa2VrhAYC0yJkcm6Xl5yVH7g1tuQINBD7otKwQ
CACcZLMAum9IztQ1M1d9RL2hN5LIr2ZG6GBQoVbCZsQdwl904kmxZuD1Muz9C6Zh
hAlaN+e1SbO7siDbhojjrdCo6em7MEw/q+6u/z5Wqo9cQWJK6oCXqW+S92uqXtUi
ZUhvIqi/su0X5u7HHwjuooRsYtp53tyl/mgwWRg7RbmyqTBgKynol9y2uV9LPa3L
Ghnjd4p5apecEhWyih9tGsubSwq9mfYONCWqHFhfQ8YegTiLa6dXCcAaaoqv/JDA
3VA7KGv51h2DLeNLGWNw0DnmWu//c1qpTeEv+UHY8rDj1CoY2up4WYg4/bJ57Ihg
iBTACAyh3MMIEkbvSTTlrUFTAAMFB/9/vEYHEA63tDXtlEpLNd8fB9WkZfR1zfja
yz3h6Gl4UfAWfDlXMwOH56ag4j0SmVqNkuwUXzvNKKD2ZX/soeicv+I147piobC1
RcywSuApfqBRFTuJPh/24GKa+YMQPZOnumRjSgol0XUkCV3WU8+xtquRu+qtmiy+
BYhZs5U8Nf6GQLhUKAozhB9yAbKJdv3HPUVoDtc1Dckd1RbnTDaYsIXhbbXzfcMq
fRZbLLee373HbzaqOLp8v+/lyknYEu0kYyFLT7er/TN8FvuKN6akWK1vIJpT9tUW
m6HWUPoxpNfKEqtKNnWlJDV7YwJ6hTmT7kIpjr572tQzfJIIcWtGiEwEGBECAAwF
Aj7otKwFCQHhM4AACgkQoO/NurDDxAjHvwCgsCDLMKhN3XdEfaYg2aY9RoCjcoUA
oJRt4lZIoelNIfQDRG8arX1sz7Dq
=3vqc
-----END PGP PUBLIC KEY BLOCK-----
  
-top of document-



Warglue Frequently Asked Questions:

  00. Can I join the Church of WiFi?
  10. Will warglue support the [?] log format?
  20. Why isn't warkizniz code open source too?
  30. Why the name change from warwis to warbabel?  Why not a newer version of warwis?
  

Can I join the Church of WiFi?
Church membership can only be obtained through devine intervention. Only the most devout of followers may pass through the Holy Gates of MacFilter. Oh yeah.. mooo. -c0n_

Will warglue support the [?] log format?
The warglue project is very interested in supporting as many log formats as possible in its utilities. What we need mostly are logs or format documentation. Please submit requests to one of the maintainers listed. -c0n_

Why isn't warkizniz code open source too?
Warkizniz is based on source code provided by Marius Milner (creator of Netstumbler - www.stumbler.net). Marius did not authorize public disclosure of this source code, therefore warkizniz will remain closed-source. -ffrf

Why the name change from warwis to warbabel? Why not a newer version of warwis?
Warwis had all the intentions of being written like warbabel, but was ill thought out and was also under the pressure of a March release. It worked, but had bugs and was badly coded. A new version for it was not created because the reasoning behind warwis was purely functional. This is not the case for warbabel,as it represented both a conceptual and practical incarnation of an idea. -c0n_

-top of document-


=== Warglue Specifics =======

Changelog

  06.10.03 - warglue module: warbabel released
  06.10.03 - warglue module: warwis module phased out
  04.24.03 - warglue module: warkizniz update/bugfix release
  04.10.03 - warglue module: warscrub version 2 release
  04.06.03 - warglue module: warftest released
  03.01.03 - warglue module: warkizniz released
  03.01.03 - warglue module: warwis released
  03.01.03 - warglue module: warscrub released
-top of document-

Bugs


[warkizniz]
None known at time of release

[warscrub]
None known at time of release

[warbabel]
None known at time of release

[warbabel frontend]
None known at time of release

[warwis]
  01.a - during usage of kismet.gps timsec is read and used, but does not 
           increment the time for supplemental records in wi-scan, therefore all
           log records in extended wi-scan and wi-scan have the identical time

  STATUS: Fixed in the warbabel release [2003-06-10]
  REASON: No good one, just ran out of time before release.  Translations should 
           now be 100%.

  02.a - during usage of kismet.gps to provide supplemental data for wi-scan and
           wi-scan extended logs, GPS reading would lock the entire runtime.

  STATUS: Fixed in the warbabel release [2003-06-10]
  REASON: In a perfect world this would not have been an issue.  The way I read in
           GPS values assumed that fields followed a certain structure.  However,
           various conditions cause the kismet.gps file to randomly corrupt during
           kismet runtime.  A smarter way of reading the log was implemented 
           (thanks ffrf for perusing your gps code, thanks roamer for finding the
            bug )

  03.a - during user interaction with warwis they would be instructed to check
           documentation for further info.  The documentation in turn would point
           them back to the program help/usage for the information they wanted.

  STATUS: Fixed in the warbabel release [2003-06-10]
  REASON: I was retarded  (thanks Drew for finding the bug)

[warftest]
None known at time of release


[Bug Reporting]
  Please submit new bugs that are not known to:
  Project: CoWF/Warglue - Network Stumbling / Wardr: Browse Bugs
  http://sourceforge.net/tracker/?atid=496068&group_id=61076&func=browse

[Helpful information for solving bugs]
  - exact command line used to run the binary (switches and all)
  - exact output that the program did or did not provide, including any error 
     messages
  - when possible, copies of the logs that are being used

-top of document-

Supported OS

The source included has been compiled, built and tested with the following OSes
  from the same codebase without modification required.

 win32
 - Microsoft Windows XP
 - Microsoft Windows 2000

 linux
 - slackware 8.1
 - slackware 9.0

 freebsd (some modules, all _should_ compile)

 macosx (some moudles, all _should_ compile)

Unless otherwise noted the source internal notes explain which compilers were
  used for compilation.

-top of document-

Test Cases

In several of the modules you will find a batch file or shell script that was 
  used in testing the module.  You can run it against the data to get the same 
  results if you think something is wrong.
-top of document-

Scripting

Various scripting examples will be added to the warglue site to increase
  module functionality
-top of document-


=== Warglue Modules =======

warkizniz (04.13.03.pm.02.35)

-[summary]
Convert Kismet to NS1
(*binary release only / not GPL / Check BINARIES list for more information)

-[usage]
cowf-warglue-warkizniz-02.27.03.pm.23.03
Church of WiFi - WarKizNiz Module (windows)
Usage: warkizniz   

-[example]
C:\> warkizniz Kismet-Oct-26-2002-1.csv Kismet-Oct-26-2002-1.gps testns1.ns1
Reading GPS file .. Status: ooooooooooooooooooooooooooooo NMEA!
Found 103 APs ..
Writing NS1 .. Status: ooo NMEA!

-top of document-

warscrub (02.25.03.pm.08.36)

-[summary]
 Splits out bad GPS coordinates from any wi-scan format
-[usage]
cowf-warglue-warscrub.02.25.03.pm.08.36
Church of WiFi - WarGlue Module (windows)
Usage: warscrub INFILE ALLGPSFILE NOGPSFILE

-[example]
C:\>warscrub anywiscanexportedfile goodgps badgps
Processing, please wait.GGGGGGGGGGGbbbbbb (a lot of scrolling and images here)
cowf-warglue-warscrub.02.25.03.pm.08.36
Church of WiFi - WarGlue Module (windows)
Number of APs without GPS Coords = 510896 saved to: badgps
Number of APs with GPS Coords    = 395829 saved to: goodgps
  
-top of document-

warbabel (06.10.03.pm.05.00)

-[description]
Warbabel is designed as a both a conceptual and practical piece. Conceptually it
 structures out a means of simplifying log I/O for various formats, allowing for
 easy implementation in other development projects. On the practical side, it 
 makes an example of these format classes by performing log translation between 
 them. At its initial release, warbabel fully supports all of the following log 
 conversions:

 kismet [csv,xml,net] -> wiscan [std,sum,txt]
 kismet [csv,xml,net] -> kismet.gps
 kismet [csv,xml,net] -> kismet [csv,xml,net]
 wiscan [std,sum,txt] -> kismet [csv,xml,net]
 wiscan [std,sum,txt] -> kismet.gps
 wiscan [std,sum,txt] -> wiscan [std,sum,txt]
 kismet.gps -> wiscan [std,sum,txt]
 kismet.gps -> kismet [csv,xml,net]
 kismet.gps -> kismet.gps

That's right; all these are available and functioning in this release of warbabel.
 THROW AWAY WARWIS! Also implemented in the format classes are some predefined
 filters for log reading. For example, filtering out 0.000000 GPS coords or ad-hoc/
 infrastructure records is as easy as setting the filters to true/false. The value
 in something like kismet.gps -> kismet.gps is that performing a conversion to the
 same file type will effectively perform the filter you that file while maintaining
 your original format; but can also perform all this while executing any of the
 listed translations.

-[usage]
The following describes each element in warbabel usage a little more thoroughly:

./warbabel     -  binary name. in windows will be warbabel.exe. if you compile
                    it with a different name, use that

inFile         -  this is your input log that you wish to translate from.  no 
                   need to specify what it is, warbabel knows

outFile        -  this is the path/filename that your output results will be
                    translated to

gpsFile        -  OPTIONAL. really only handy when converting from kismet to 
                    wi-scan or wi-scan extended

-output-type   -  in warwis, this was the equivelant of the flags that were 
                    difficult to explain and understand. Basically, I can't read
                    your mind for what you want your output to be, so you specify
                    it with one of the following valid expressions:

                    -wiscan           =  -wiscan-standard   =  -wiscan-std
                    -wiscan-text      =  -wiscan-txt        =  -wiscan-extended
                    -wiscan-summary   =  -wiscan-sum
                    -kismet           =  -kismet-csv
                    -kismet-xml
                    -kismet-net       =  -kismet-network
                    -kisgps

-[example]
./warbabel kismet.csv test.txt kismet.gps -wiscan-txt

 - will translate kismet.csv with kismet.gps supplemental records and output it to
    test.txt as the format wi-scan text (aka extended)
  
-top of document-

warbabel frontend gui (06.10.03.pm.05.00)

-[description]
The warbabel frontend GUI was written to simplify the process a little more for
  those that convert logs on win32 systems.  It was written and compiled in 
  VisualBasic, and DOES NOT REPLACE WARBABEL IN ANY WAY.  The warbabel.exe [included
  with the gui] is still required for the actual conversion at the moment.  This
  is just a front end.

-[usage]
click and go. It is standalone.  Select your input logs, select the save location
 and filename, select the output format, click translate.

-[example]
press your left mouse button... now.
  
-top of document-

warftest (04.06.03.am.11.26)

No documentation provided at this moment. 
  
-top of document-


http://www.ChurchOfWiFi.com/warglue/



          ,7S7,    X                         i0MMMMM8;         WW, .;0MMMM8        .;8MMMM0aSSaa8WM@
      aMMMMMMMMMMMMMM                      MMMMM   ,MMMMMM      MMMMMMa,XMMM    MMMMMMZ WMMMMMMMMMM 
    MMMM    iMMMMMMM                       MMM: BMMM       MMM   MMX      MMS   MMMMMMM     .aM@X   
   MMMM                                     MMMMMMM       MMMM            MM,   .MMMMMM             
 .MMMM                                       7MMMMM      MMMMM:           MM     MMMMMMMMMMMMMMMMM0 
 MMMMM                                       MMMMMM      MMMMMMM         .MM    MMMMMMMM       7MM  
iMMMM2                      MMMMMMMMS        rMMMMMM     MMMMMMMM        MM       MMMMMMX           
@MMMM0                    MMMMM MMMMMMM       MMMMMMM    2MMMMMMMM2     MM         MMMMMM           
MMMMMM                   MMMMM  M2XMMMMM       MMMMMMM   MM MMMMMMMM   MMB         MMMMMM           
aMMMMMa                 SMMMM.      MMMM,       MMMMMMM MM   iMMMMMMM MMM           MMMMMM          
 MMMMMMB                MMMMM       MMMMM        MMMMMMMM      MMMMMMMMM            MMMMMM          
 MMMMMMMM           MM  ZMMMM       MMMMi         XMMMMM@       MMMMMMW              MMMMM,         
  SMMMMMMMMMMZaa0MMMMM   MMMMM      MMMM           .MMMMM        MMMMS               MMMMM          
    WMMMMMMMMMMMMMMW      MMMMMX  7MMMM              MMM         ZMM                 MMMMM          
       2MMMMMMMMX           @MMMMMMM2                MM          MM              ;   MMMM           
                                                                                MMM MMMS            
                                                                               iMMMM0               




  aMMMM02i:i   .Mi.SMMMM8                                             .M                            
MMM  :Z:BMMX S; iMMMa  MMM                                          MMMM                            
SMMWMM      MMM  ,      MM                                          MMM8                            
  MMMM     MMMM         M7                                          MMM8                            
  MMMM     MMMMM       0M        :,       r      ;;                 MMMB   ;     :7  r      ,0MWr   
  MMMMM    MMMMMMZ     MX    ;MMMMMMMMMM  MMMMMMMMMM    MMMMMMMMMM  MMMW   MMMM   MMMM    MMMMMMMMM 
   MMMMM   MaMMMMMM   MM    SMMM    MMMr   MMMMX MMM   MMM    MMMW  MMM@   :MMM   MMMM   MMM    MMMM
    MMMMM MM  0MMMMM MM     MMMW    MMMr   MMMM  S    MMM     MMM7  MMMM   7MMM   MMMM   MMMMMMMMMM2
     MMMMMM     MMMMMM      MMM@    MMM7   MMMM       MMM     MMMX  MMMM   7MMM   MMMM  ;MMM2       
      MMMMZ      MMMM       MMMM    MMM;   MMMM       MMMM    MMMM  MMMM   7MMM   MMMM   MMMM       
       WMM       MM2         MMMMS  MMMM   MMMM        MMMMMMMMMMM  MMMM   ZMMMMMMMMMM    MMMMMMMMMM
        M        M,            MMMMMMZMM   ZMMMM         XMMW MMMM  MMMM    MMZ   MMMMM     0MMMM@  
                                                              MMM                                   
                                                      Mi   .MMMW                                    
                                                     MMMMMMMS